4.3 KiB
M5 software validation
Development reference and historical context. For current operating instructions, use the user manual. Acceptance applies only to the source and artifacts identified in each record.
M5's ordinary-user console and software timing tools passed on the x86_64 Arch build host using the actual AArch64 kernel, initramfs and SYSTEM image in QEMU 11.1.1. Physical Pi boot, power-on, display and timing acceptance is deferred. These runs completed on 2026-09-20 UTC (2026-09-21 in Asia/Shanghai).
Usable console and event evidence
make console-test passed in out/m5-vm.fuml66z0/:
- Native s6 starts the local autologin console as
fds, UID/GID 1000. Commands execute atFDS>, HOME and working directory are/home/fds, the temporary home accepts writes, and SYSTEM rejects writes. - Reports contain stage0 entry, SYSTEM discovery, root mount, root switch, s6 stage-2 entry and first-console readiness for the current boot. Desktop readiness is absent. No missing event is replaced with a zero timestamp.
- Exiting and restarting the console preserves the first readiness event.
- Holding eudev startup behind a test FIFO does not prevent the usable prompt. The test releases that gate after executing a console command.
- Saved-report comparison rejects an unexplained regression greater than 100 ms, permits an explicit explanation, and rejects incompatible platforms.
The normal run measured 1,669.027 ms kernel-clock-to-console and 664.032 ms
s6-stage-2-to-console. The blocked-eudev run measured 1,659.990 ms and
581.113 ms. These are individual emulator observations, not physical budgets.
Nine further boots compare Rust optimization levels in
out/rust-profiles.x_wgx1kp/; see Performance for the table,
raw report locations, clock boundaries and decision to retain opt-level=z.
make console-vm was also opened interactively and verified UID 1000.
Build execution correction
PRoot intermittently aborted during ARM subprocess execution on this host. One
failure also returned a misleading zero status. Runtime checks now require an
explicit final child acknowledgement, and finalization propagates failures.
The image builder now uses a private user-namespace binfmt_misc registration
with static QEMU, requiring Linux 6.7 or newer. It leaves the workstation's
registration table unchanged. The existing Void util-linux package provides
mount and capability-drop helpers; no target package was added for emulation.
tests/integration/rootfs-emulation.py verified nested ARM execution, exact
nonzero exit propagation, isolation from the host registry and removal of
setup capabilities before target execution. Only namespace-local SETFCAP remains
for package configuration. A fresh complete rootfs build passed afterward.
Historical M1/M2 reports retain the older PRoot workflow as historical evidence.
Final artifacts
| Artifact | SHA-256 |
|---|---|
Rootfs TAR, out/rootfs-build.9kTEAH/ |
eef5764034d315b5e012679ef7ed165c6961b69aa88f9514c77cf08ef67bf8f7 |
SYSTEM GPT/EROFS, out/system-build.o948uzwd/ |
d2e00f56f1ecc689de455a9066259cefa95bd0bbd271e7f2d3d4cd3235dffd91 |
Uncompressed initramfs, out/initramfs-build.dzggpetk/ |
2a6009800f4c73707b165a3a3142b5baff688c685b7ea9fcd196e9ab6079a4de |
Production FAT32 boot partition, out/boot-build.bzakcn8s/ |
cd242813ded7c860d291c1dbf984bf69b48cc3b58da93f9bdebf83068139abf1 |
| Kernel Image, unchanged from M4 | 78f027ad3124da7b06d4559f49ea7f63c312cd24e653d0f8e29ee2391f520bc4 |
The rootfs contains 111 packages and 1,169 AArch64 ELF files. Its TAR is 407,480,320 bytes. Per-build package/input inventories accompany the image. The boot FAT is a partition image, not a complete internal NVMe disk.
The final sequential regression run exited zero: make bootstrap,
make smoke-test, make tooling-test, make check, make rootfs-test,
make init-test, make system-card, make boot-volume, make boot-test,
make console-test, and make performance-test. Logs are
out/logs/m5-verified-*.log. The native-init VM is out/m2-vm.sYk3Hu/;
the nine-case stage0 matrix is out/m4-vm.RHUJX5/. Shared Rust tests passed.
M0 still reports its optional host-PATH QEMU skip; project-local ARM execution
and full-system emulation actually ran. No physical boot benchmark is claimed.