Add Fruix bootable installer environment
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user