# Alfred Linux — ARM64 Build Investigation ## Executive Summary - ✅ Cross-compilation possible but **native ARM64 builds recommended for production** - Each target differs: Generic ARM64 UEFI, Raspberry Pi, Apple Silicon = separate boot chains - **Effort**: 4–8h (generic ARM64), 8–16h (RPi), 20–40h (Apple Silicon) - **Recommendation**: Start with native ARM64 build server, generic ARM64 first; defer Apple Silicon --- ## 1. Cross-Compilation vs Native Builds | Factor | Cross-Compile (x86_64) | Native (ARM64) | |--------|------------------------|-----------------| | Speed | 3–5× slower (QEMU) | 1× baseline | | Reliability | Potential edge cases | Most reliable | | Setup | Moderate (qemu-user-static) | Simple | | Cost | $0 (use existing server) | €10–500/mo (Hetzner ARM64 VPS) | | Best for | Experimentation | Production releases | **Recommendation: Native ARM64 build server** (Hetzner CAX21 ~€10/mo) --- ## 2. Boot Methods by Target ### Generic ARM64 (UEFI servers/laptops) - **Boot**: UEFI firmware → GRUB2 EFI → kernel - **Package**: `grub-efi-arm64` - **Complexity**: Medium - **live-build**: `--bootloader grub-efi-arm64 --arch arm64` ### Raspberry Pi 4/5 - **Boot**: GPU firmware → EEPROM → config.txt → kernel - **Packages**: `raspberrypi-kernel`, `raspberrypi-bootloader`, `raspberrypi-firmware` - **Image**: `.img` (NOT ISO) — FAT32 boot + ext4 root - **Complexity**: High ### Apple Silicon - **Boot**: Asahi Linux m1n1 → custom kernel - **Status**: NOT in mainline Debian - **Recommendation**: **Defer to v2.2+** --- ## 3. Implementation Plan ### Phase 1: Generic ARM64 (Week 1, 4–8 hours) 1. Add `--arch arm64` parameter to `build-unified.sh` 2. Conditional bootloader: GRUB-EFI for ARM64, syslinux for x86 3. Create `9999-arm64-efi-grub.hook.binary` 4. Test on native ARM64 server 5. Publish ARM64 ISO ```bash # build-unified.sh additions ARCH="${1:-amd64}" if [[ "$ARCH" == "arm64" ]]; then LB_BOOTLOADER="grub-efi-arm64" LB_KERNEL_FLAVOUR="generic" fi ``` ### Phase 2: Raspberry Pi (Week 2–3, 8–16 hours) 1. Add `--target rpi5` parameter 2. RPi firmware hook + config.txt generation 3. `.img` output instead of ISO (`--image-type hdd`) 4. Test on Pi 5 hardware 5. RPi installation guide on alfredlinux.com/docs ### Phase 3: CI/CD (Week 3–4) 1. Permanent ARM64 build server 2. Nightly builds via cron 3. Auto-upload to alfredlinux.com 4. Multi-arch download page --- ## 4. Effort Estimates | Target | Hours | Prerequisites | Status | |--------|-------|--------------|--------| | Generic ARM64 UEFI | 4–8 | GRUB-EFI knowledge, ARM64 server | Ready to start | | Raspberry Pi 4/5 | 8–16 | RPi hardware, firmware blobs | Phase 2 | | Apple Silicon | 20–40+ | Asahi Linux partnership | Deferred | | CI/CD pipeline | 6–12 | ARM64 server, testing infra | Phase 3 | --- ## 5. Checklist ### Phase 1: Generic ARM64 - [ ] Update build-unified.sh for `--arch arm64` - [ ] Add GRUB-EFI ARM64 conditional - [ ] Create ARM64 binary hook - [ ] Test on ARM64 server - [ ] Publish test ISO ### Phase 2: Raspberry Pi - [ ] Add `--target rpi5` support - [ ] RPi firmware hook - [ ] .img partition layout - [ ] Test on Pi 5 hardware - [ ] RPi docs page ### Phase 3: Automation - [ ] ARM64 build server setup - [ ] Nightly build cron - [ ] Auto-upload pipeline - [ ] Multi-arch download page --- ## 6. Release Plan | Release | Architecture | Boot | Format | |---------|-------------|------|--------| | v2.0 RC3 | x86_64 | BIOS (syslinux) | ISO | | v2.0 RC4+ | x86_64 + ARM64 | BIOS + UEFI | ISO | | v2.1 | + Raspberry Pi | RPi firmware | .img | | v2.2+ | + Apple Silicon (maybe) | Asahi m1n1 | TBD | --- **Status:** Ready for Phase 1 | Updated: April 6, 2026