docs: ARM64 build investigation
This commit is contained in:
parent
d8715ac92a
commit
1dfdee7ae1
128
docs/ARM64_BUILD_INVESTIGATION.md
Normal file
128
docs/ARM64_BUILD_INVESTIGATION.md
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
# 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
|
||||||
Loading…
Reference in New Issue
Block a user