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/boomstick-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/boomstick-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/boomstick-usb-<date>-x86_64+rpi5.img of=/dev/rdiskN bs=4m
Everything that makes the stick yours is configuration, and changing that later never requires another build – so this is the only time you have to think about the image at all for a good while. (It is not quite “once, ever”: see Changing it later for the handful of things that are frozen into an image.) Configuration starts on the next page, SSH keys, WiFi and the webhook.