# toes-image-builder Builds a Raspberry Pi Ubuntu Server image for Toes hardware. ## What it does `build.sh` starts from the Ubuntu 24.04.4 preinstalled ARM64 Raspberry Pi image, mounts it locally, chroots into it, and installs/configures: - Toes app and systemd service - Matter service - audio overlay, ALSA config, and audio init service - Wi-Fi via `wpa_supplicant` and `systemd-networkd` - Bluetooth/Avahi support - SSH password login - USB serial gadget login ## Requirements Run on an Ubuntu/Debian host with `sudo` access. I've been using UTM with an ubuntu vm using the Apple Virtualization option. On non-ARM64 hosts, the build expects `qemu-aarch64` binfmt support. Bootstrap the host once: ```sh scripts/bootstrap-repo.sh ``` ## Build ```sh ./build.sh ``` The script downloads the base image into `cache/`, writes build artifacts into `build/`, mounts the image under `mnt/`, and cleans up mounts on exit. Final image path: ```text build/toes-ubuntu-base.img ``` ## Default image access - Hostname: `toes` - User: `toes` - Password: set by `scripts/build-in-chroot.sh` - SSH password auth: enabled - USB serial gadget: enabled on `ttyGS0` ## Layout - `build.sh` - top-level build pipeline - `scripts/` - host-side build phases - `audio/` - audio overlay, ALSA config, and init service - `matter/` - Matter systemd service - `cache/` - downloaded Ubuntu image and checksums - `build/` - generated image files - `mnt/` - temporary mount points ## Cleanup If a build is interrupted and mounts are left behind, run: ```sh scripts/cleanup.sh ```