Build the image
Everything on this page runs on your own workstation.
You do not need archiso, or any Arch packages at all: the build runs
inside an archlinux container, so the host’s own distribution does
not matter. You need rootless Podman, just, about 8 GB of free disk
space, and an internet connection.
Because the image holds both an x86_64 and an ARM system, whichever half does not match your own machine is built under qemu-user emulation, so you also need the static qemu-user emulators registered with binfmt_misc. On Arch Linux, that is all of:
sudo pacman -S --needed podman just git qemu-user-static qemu-user-static-binfmt
On Debian, Ubuntu or Fedora, the emulator package is called
qemu-user-static.
Because the work happens inside a container, a Mac builds the image too – this is tested, not theoretical. Install the tools and start a Podman VM with enough memory to do the build:
brew install podman just
podman machine init --cpus 4 --memory 3072
podman machine start
On Apple Silicon the two halves swap roles: the Raspberry Pi image builds natively and the x86_64 one runs under emulation, which is the reverse of what happens on a Linux PC. The rest of this page is unchanged, except for writing the image to the stick.
Build
git clone https://github.com/EnigmaCurry/boomstick.git cd boomstick just build-usb
The build takes no input, because there is nothing to configure yet:
the result is the same for everybody. The first run pulls the
archlinux container image and downloads about 1 GB of packages;
later builds reuse a package cache and finish in a few minutes. You
end up with out/arch-usb-<date>-x86_64+rpi5.img, about 2.7 GB.
If you only ever install one kind of machine, just build (x86_64
only) and just build-rpi5 (Raspberry Pi 5 only) produce smaller
images that need no emulation on a matching host.
Write it to a USB stick
Find your stick with lsblk, then write the image to it. Double
check the device name, because this erases the whole stick:
sudo dd if=out/arch-usb-<date>-x86_64+rpi5.img \ of=/dev/sdX bs=4M status=progress oflag=sync
On macOS the device names and flags differ: find the disk with
diskutil list, then unmount and write it to the raw device, which
is much faster than the buffered one:
diskutil unmountDisk /dev/diskN
sudo dd if=out/arch-usb-<date>-x86_64+rpi5.img of=/dev/rdiskN bs=4m
The image only has to be built and written once. Everything that makes the stick yours is configuration, and changing it later never requires another build. That starts on the next page, SSH keys, WiFi and the webhook.