1
Developer M5 Validation
Felis edited this page 2026-09-24 13:51:28 +08:00
Table of Contents
include_toc
include_toc
true

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 at FDS>, 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.