diff --git a/Makefile b/Makefile index 5d0491cb..c6679b65 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,21 @@ -PACKER_VERSION=1.9.4 -PWN_HOSTNAME=pwnagotchi -PWN_VERSION:=$(shell cut -d"'" -f2 < pwnagotchi/_version.py) +PACKER_VERSION := 1.9.4 +PWN_HOSTNAME := pwnagotchi +PWN_VERSION := $(shell cut -d"'" -f2 < pwnagotchi/_version.py) +PWN_RELEASE := pwnagotchi-raspios-lite-$(PWN_VERSION) + +MACHINE_TYPE := $(shell uname -m) +ifneq (,$(filter x86_64,$(MACHINE_TYPE))) +GOARCH := amd64 +else ifneq (,$(filter i686,$(MACHINE_TYPE))) +GOARCH := 386 +else ifneq (,$(filter arm64% aarch64%,$(MACHINE_TYPE))) +GOARCH := arm64 +else ifneq (,$(filter arm%,$(MACHINE_TYPE))) +GOARCH := arm +else +GOARCH := amd64 +$(warning Unable to detect CPU arch from machine type $(MACHINE_TYPE), assuming $(GOARCH)) +endif # The Ansible part of the build can inadvertently change the active hostname of # the build machine while updating the permanent hostname of the build image. @@ -19,9 +34,8 @@ langs: ./scripts/language.sh compile $$(basename $$lang); \ done -install: -PACKER := ~/packer -PACKER_URL := https://releases.hashicorp.com/packer/$(PACKER_VERSION)/packer_$(PACKER_VERSION)_linux_amd64.zip +PACKER := /tmp/pwnagotchi/packer +PACKER_URL := https://releases.hashicorp.com/packer/$(PACKER_VERSION)/packer_$(PACKER_VERSION)_linux_$(GOARCH).zip $(PACKER): mkdir -p $(@D) curl -L "$(PACKER_URL)" -o $(PACKER).zip @@ -38,9 +52,9 @@ $(PWN_RELEASE).img: | $(PACKER) # If the packer or ansible files are updated, rebuild the image. $(PWN_RELEASE).img: $(SDIST) builder/pwnagotchi.json builder/pwnagotchi.yml $(shell find builder/data -type f) - $(PACKER) plugins install github.com/solo-io/arm-image + sudo $(PACKER) plugins install github.com/solo-io/arm-image cd builder && sudo $(UNSHARE) $(PACKER) build -var "pwn_hostname=$(PWN_HOSTNAME)" -var "pwn_version=$(PWN_VERSION)" pwnagotchi.json - sudo chown -R $$USER:$$USER ../builder/output-pwnagotchi + sudo chown -R $$USER:$$USER builder/output-pwnagotchi mv builder/output-pwnagotchi/image $@ # If any of these files are updated, rebuild the checksums. @@ -57,6 +71,7 @@ image: $(PWN_RELEASE).zip clean: - python3 setup.py clean --all - rm -rf dist pwnagotchi.egg-info - - rm -rf $(PACKER) - - rm -rf $(PWN_RELEASE).* + - rm -f $(PACKER) + - rm -f $(PWN_RELEASE).* - sudo rm -rf builder/output-pwnagotchi builder/packer_cache + diff --git a/builder/pwnagotchi.yml b/builder/pwnagotchi.yml index fcdabbe5..66fd5b07 100644 --- a/builder/pwnagotchi.yml +++ b/builder/pwnagotchi.yml @@ -204,7 +204,6 @@ git: repo: https://github.com/DrSchottky/nexmon.git dest: /usr/local/src/nexmon -# version: bfb3fe90c881498d7ee245b38f16722c1de26fa1 register: nexmongit - name: make firmware @@ -234,11 +233,17 @@ replace: "KERNEL_RELEASE" - name: make firmware patch (bcm43436b0) - shell: "source ./setup_env.sh && cd /usr/local/src/nexmon/patches/bcm43436b0/9_88_4_65/nexmon/ && make && make install-firmware" + shell: "source ./setup_env.sh && cd /usr/local/src/nexmon/patches/bcm43436b0/9_88_4_65/nexmon/ && make" args: executable: /bin/bash chdir: /usr/local/src/nexmon/ + - name: install new firmware (bcm43436b0) + copy: + src: /usr/local/src/nexmon/patches/bcm43436b0/9_88_4_65/nexmon/brcmfmac43436-sdio.bin + dest: /lib/firmware/brcm/brcmfmac43436-sdio.bin + + - name: choose the right kernel version (bcm43430a1) replace: dest: /usr/local/src/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/Makefile @@ -260,11 +265,31 @@ replace: "KERNEL_RELEASE" - name: make firmware patch (bcm43430a1) - shell: "source ./setup_env.sh && cd /usr/local/src/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/ && make && make install-firmware" + shell: "source ./setup_env.sh && cd /usr/local/src/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/ && make" args: executable: /bin/bash chdir: /usr/local/src/nexmon/ + - name: install new firmware (bcm43430a1) + copy: + src: /usr/local/src/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/brcmfmac43430-sdio.bin + dest: /lib/firmware/brcm/brcmfmac43430-sdio.bin + + - name: Delete the firmware blob to avoid it crashing + file: + state: absent + path: /lib/firmware/brcm/brcmfmac43430-sdio.clm_blob + + - name: Delete the RPiZW firmware blob to avoid it crashing + file: + state: absent + path: /lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi,model-zero-w.clm_blob + + - name: Delete the RPi3 firmware blob to avoid it crashing + file: + state: absent + path: /lib/firmware/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.clm_blob + - name: choose the right kernel version (bcm43455c0) replace: dest: /usr/local/src/nexmon/patches/bcm43455c0/7_45_206/nexmon/Makefile @@ -286,15 +311,20 @@ replace: "KERNEL_RELEASE" - name: make firmware patch (bcm43455c0) - shell: "source ./setup_env.sh && cd /usr/local/src/nexmon/patches/bcm43455c0/7_45_206/nexmon/ && make && make install-firmware" + shell: "source ./setup_env.sh && cd /usr/local/src/nexmon/patches/bcm43455c0/7_45_206/nexmon/ && make" args: executable: /bin/bash chdir: /usr/local/src/nexmon/ + - name: install new firmware (bcm43455c0) + copy: + src: /usr/local/src/nexmon/patches/bcm43455c0/7_45_206/nexmon/brcmfmac43455-sdio.bin + dest: /lib/firmware/brcm/brcmfmac43455-sdio.bin + - name: copy modified driver (everyone but RPiZW) copy: - src: /lib/modules/6.1.21-v8+/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko - dest: /lib/modules/6.1.21-v8+/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko.orig + src: /lib/modules/6.1.21-v8+/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko.xz + dest: /lib/modules/6.1.21-v8+/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko.xz.orig - name: copy modified driver (everyone but RPiZW) copy: