Add Fruix bootable installer environment

This commit is contained in:
2026-04-04 03:09:25 +02:00
parent 2517710282
commit 1d0090752d
7 changed files with 1313 additions and 24 deletions

View File

@@ -1,5 +1,97 @@
# Progress
## 2026-04-04 — Phase 18.2 completed: Fruix now boots a minimal installer environment and installs a target system from inside it
Completed work:
- added in `modules/fruix/system/freebsd.scm`:
- `installer-operating-system`
- `operating-system-installer-image-spec`
- `materialize-installer-image`
- the installer environment is now derived from the selected target operating system, while forcing the currently most stable installer boot path:
- `freebsd-init+rc.d-shepherd`
- the installer image now carries:
- its own installer-system closure
- the selected target-system closure
- the selected target-system store closure
- a staged target rootfs under:
- `/var/lib/fruix/installer/target-rootfs`
- installer plan/state files under:
- `/var/lib/fruix/installer`
- installer helper scripts:
- `/usr/local/libexec/fruix-installer-run`
- `/usr/local/etc/rc.d/fruix-installer`
- the booted installer environment now performs the install from inside the guest by:
- partitioning the selected target disk
- creating EFI + UFS filesystems
- copying the staged target rootfs
- copying only the selected target system's required store items into the target `/frx/store`
- installing the target `loader.efi`
- writing target install metadata to:
- `/var/lib/fruix/install.scm`
- recording installer state in:
- `/var/lib/fruix/installer/state`
- logging to:
- `/var/log/fruix-installer.log`
- added user-facing CLI support in `scripts/fruix.scm`:
- `fruix system installer`
- new option:
- `--install-target-device DEVICE`
- corrected the default FreeBSD virtio install target device for QEMU validation to:
- `/dev/vtbd1`
rather than the earlier incorrect Linux-flavored guess:
- `/dev/vtblk1`
- fixed `materialize-bhyve-image` so the generated UFS filesystem label now respects:
- `root-partition-label`
rather than always hardcoding:
- `fruix-root`
- added validation artifacts:
- `tests/system/phase18-installer-target-operating-system.scm.in`
- `tests/system/run-phase18-installer-environment.sh`
- wrote:
- `docs/reports/phase18-installer-environment-freebsd.md`
Validation:
- `PASS phase18-installer-environment`
- regression re-checks:
- `PASS phase18-system-install`
- `PASS phase17-source-revisions-qemu`
- validated a full two-disk workflow:
- booted Fruix installer image under QEMU/UEFI/TCG
- installer environment became reachable over SSH
- installer environment completed in-guest install with:
- `installer_state=done`
- installer log recorded:
- `fruix-installer:done`
- installed target disk contained:
- GPT partition table
- ESP filesystem:
- `msdosfs`
- root filesystem:
- `ufs`
- `EFI/BOOT/BOOTX64.EFI`
- `/var/lib/fruix/install.scm`
- validated source-driven provenance through the installer environment from:
- Git ref:
- `stable/15`
- pinned commit:
- `332708a606f6bf0841c1d4a74c0d067f5640fe89`
- materialized source store:
- `/frx/store/7563df2714ae7fa9bd40b83c74512ffe2cb2ad91b297915591b55c76edbb2fcb-freebsd-source-stable15-installer-target-source`
- validated boot of the installed target after in-guest installation:
- `/run/current-system` points at the installed target closure
- `/usr/local/etc/rc.d/fruix-shepherd onestatus` reports running
- `sshd` running
- activation completed successfully
Current assessment:
- Phase 18.2 is complete
- Fruix now has a minimal Fruix-managed installer environment, not just a host-driven installation primitive
- the next step is Phase 18.3:
- produce a bootable installer ISO for UEFI systems
## 2026-04-03 — Phase 18.1 completed: Fruix now has a minimal non-interactive installation flow
Completed work: