Skip to content

Build pipeline

The Makefile exposes the full pipeline as independent stages. make all runs the non-interactive sequence in order.

1. Check

make check CFG=flashberry.local.yml

Runs static checks, configuration validation, and unit tests.

2. Prepare binfmt

make prepare CFG=flashberry.local.yml

Ensures QEMU binfmt support is enabled inside the assembler environment. Host support can be tested separately with make check-host CFG=....

3. Bootstrap the root filesystem

make rootfs CFG=flashberry.local.yml

mmdebstrap creates tmp/rootfs for the selected architecture and suite. The required kernel, Raspberry Pi firmware, systemd, SSH, locales, and QEMU static binary are included.

4. Configure in chroot

make configure CFG=flashberry.local.yml

The configured rootfs receives:

  • locale, timezone, and hostname;
  • user account and optional authorized keys;
  • requested packages;
  • SSH enablement;
  • optional first-boot root expansion;
  • overlays/rootfs/ content;
  • generated Wi-Fi configuration;
  • scripts from hooks/in-chroot.d/.

For inspection before image assembly:

make shell CFG=flashberry.local.yml

5. Assemble the image

make image CFG=flashberry.local.yml

Flashberry creates an MBR-partitioned image with a 256 MiB FAT32 boot partition and an ext4 root partition, installs firmware/kernel/initramfs files, and writes PARTUUID-based boot and fstab configuration.

6. Compress and checksum

make compress

Each out/*.img is compressed with Zstandard and receives a matching SHA-256 checksum file.