tests: validate installer ISO on XCP-ng
This commit is contained in:
@@ -24,6 +24,8 @@ Fruix currently has:
|
||||
- `fruix system install`
|
||||
- a bootable Fruix-managed installer environment:
|
||||
- `fruix system installer`
|
||||
- a bootable Fruix-managed installer ISO:
|
||||
- `fruix system installer-iso`
|
||||
|
||||
Validated boot modes still are:
|
||||
|
||||
@@ -36,45 +38,44 @@ The validated Phase 18 installation work currently uses:
|
||||
|
||||
## Latest completed achievement
|
||||
|
||||
### 2026-04-04 — Phase 18.2 completed
|
||||
### 2026-04-04 — Phase 18.3 completed
|
||||
|
||||
Fruix now boots a minimal installer environment and installs a target system from inside it.
|
||||
Fruix now builds a bootable installer ISO, boots it, installs from it, and boots the installed target successfully.
|
||||
|
||||
Highlights:
|
||||
|
||||
- added in `modules/fruix/system/freebsd.scm`:
|
||||
- `installer-operating-system`
|
||||
- `operating-system-installer-image-spec`
|
||||
- `materialize-installer-image`
|
||||
- `operating-system-installer-iso-spec`
|
||||
- `materialize-installer-iso`
|
||||
- added CLI support in `scripts/fruix.scm`:
|
||||
- `fruix system installer`
|
||||
- `--install-target-device DEVICE`
|
||||
- the installer image now carries:
|
||||
- its own installer closure
|
||||
- `fruix system installer-iso`
|
||||
- the installer ISO now carries:
|
||||
- a UEFI El Torito boot image
|
||||
- `/boot/root.img` as the installer mdroot payload
|
||||
- the installer closure
|
||||
- the selected target closure
|
||||
- the target store closure
|
||||
- a staged target rootfs payload
|
||||
- the target runtime store closure needed for installation
|
||||
- in-guest installer state/log/scripts
|
||||
- validated workflow:
|
||||
- boot installer image in QEMU/UEFI/TCG
|
||||
- reach installer over SSH
|
||||
- install target system onto second disk from inside the guest
|
||||
- boot the installed target successfully
|
||||
- validated workflows:
|
||||
- local QEMU/UEFI/TCG boot, install, and installed-target reboot
|
||||
- real XCP-ng VM boot, install, and installed-target reboot
|
||||
- a platform-specific installer detail is now recorded in-tree:
|
||||
- QEMU ISO path installs onto `/dev/vtbd0`
|
||||
- XCP-ng ISO path installs onto `/dev/ada0`
|
||||
|
||||
Validation:
|
||||
|
||||
- `PASS phase18-installer-environment`
|
||||
- regression re-checks:
|
||||
- `PASS phase18-system-install`
|
||||
- `PASS phase17-source-revisions-qemu`
|
||||
- `PASS phase18-installer-iso`
|
||||
- `PASS phase18-installer-iso-xcpng`
|
||||
|
||||
Report:
|
||||
|
||||
- `docs/reports/phase18-installer-environment-freebsd.md`
|
||||
- `docs/reports/phase18-installer-iso-freebsd.md`
|
||||
|
||||
Commit:
|
||||
Commits:
|
||||
|
||||
- `1d00907` — `Add Fruix bootable installer environment`
|
||||
- `1970c5c` — `system: add UEFI installer ISO builder`
|
||||
- `604ad82` — `system: validate UEFI installer ISO boot path`
|
||||
|
||||
## Recent major milestones
|
||||
|
||||
|
||||
@@ -163,7 +163,7 @@ installer_iso_install=ok
|
||||
installed_target_boot=ok
|
||||
```
|
||||
|
||||
Notable ISO-specific validation detail:
|
||||
Notable QEMU-specific ISO validation detail:
|
||||
|
||||
- unlike the disk-image-style installer environment from Phase 18.2, the ISO boots from `cd0`, so the target virtio disk appears as:
|
||||
- `/dev/vtbd0`
|
||||
@@ -194,6 +194,75 @@ The harness verified all of the following:
|
||||
- `sshd` is running
|
||||
- activation completed successfully
|
||||
|
||||
### Real XCP-ng validation
|
||||
|
||||
Added:
|
||||
|
||||
- `tests/system/run-phase18-installer-iso-xcpng.sh`
|
||||
|
||||
This harness validates the same installer-iso workflow on the approved real XCP-ng path:
|
||||
|
||||
- VM: `90490f2e-e8fc-4b7a-388e-5c26f0157289`
|
||||
- ISO SR: `537a6219-8452-7cb5-8d56-5eed6910c7a2`
|
||||
- target VDIs:
|
||||
- `0f1f90d3-48ca-4fa2-91d8-fc6339b95743`
|
||||
- `7061d761-3639-4bec-87f7-2ba1af924eaa`
|
||||
|
||||
Because the current `xo-cli disk.import @=/path/to.iso` path returned an HTTP 500 error in this environment, the harness imports the ISO into the ISO SR via a temporary local HTTP URL, then inserts the resulting ISO VDI into the VM's CD drive.
|
||||
|
||||
Passing validation:
|
||||
|
||||
- `PASS phase18-installer-iso-xcpng`
|
||||
|
||||
Validated result summary:
|
||||
|
||||
```text
|
||||
vm_id=90490f2e-e8fc-4b7a-388e-5c26f0157289
|
||||
iso_id=<temporary-imported-iso-vdi>
|
||||
guest_ip=192.168.213.62
|
||||
installer_state=done
|
||||
installer_target_device=/dev/ada0
|
||||
kern_disks=cd0 ada1 ada0
|
||||
installer_run_current_system=/frx/store/16969e825dbb65b5c27180030d4a7d98821893460fb3dccdc863ff6156ed61e0-fruix-system-fruix-freebsd-installer
|
||||
installer_sshd_status=running
|
||||
target_run_current_system=/frx/store/a98d3af6a1afbc4a927d47cea6458d5a70747b051ed994e5d9ff1ae79c4f2b42-fruix-system-fruix-freebsd
|
||||
target_sshd_status=running
|
||||
target_shepherd_status=running
|
||||
```
|
||||
|
||||
Important XCP-ng-specific details:
|
||||
|
||||
- the installer ISO still boots from:
|
||||
- `cd0`
|
||||
- on this Xen HVM path, the primary target disk is exposed through Xen block front as `xbd0` and appears to FreeBSD as:
|
||||
- `/dev/ada0`
|
||||
- therefore the XCP-ng installer-iso path must target:
|
||||
- `/dev/ada0`
|
||||
rather than QEMU's:
|
||||
- `/dev/vtbd0`
|
||||
- the visible EFI console can appear to stop at:
|
||||
- `console vidconsole is unavailable`
|
||||
but boot still continues and the installer becomes reachable over SSH; that message was not the actual failure mode on XCP-ng
|
||||
|
||||
The harness verified all of the following on the real VM path:
|
||||
|
||||
1. `fruix system installer-iso` builds a bootable ISO with `--install-target-device /dev/ada0`
|
||||
2. the ISO can be imported into the operator-approved ISO SR and attached to the approved VM
|
||||
3. the VM boots the Fruix installer ISO successfully under UEFI
|
||||
4. the installer environment becomes reachable over SSH
|
||||
5. inside the installer guest:
|
||||
- `kern.disks` includes `cd0` and `ada0`
|
||||
- `/run/current-system` points at the installer closure
|
||||
- the installer reaches `state=done`
|
||||
6. the installed target on `ada0` is partitioned and formatted correctly
|
||||
7. after ejecting the ISO and rebooting, the installed target boots successfully on the same XCP-ng VM
|
||||
8. after target boot:
|
||||
- `/run/current-system` points at the target closure
|
||||
- shepherd is running
|
||||
- `sshd` is running
|
||||
- activation completed successfully
|
||||
- `/var/lib/fruix/install.scm` still records the materialized source store provenance
|
||||
|
||||
## Result
|
||||
|
||||
Phase 18.3 is complete.
|
||||
@@ -202,4 +271,7 @@ Fruix now has a validated bootable UEFI installer ISO on FreeBSD that can:
|
||||
|
||||
- boot into a Fruix-managed installer environment from ISO media
|
||||
- perform the non-interactive installation flow onto a target disk
|
||||
- and boot the installed target successfully
|
||||
- boot the installed target successfully
|
||||
- and do so on both:
|
||||
- local `QEMU/UEFI/TCG`
|
||||
- the approved real `XCP-ng` VM path
|
||||
|
||||
Reference in New Issue
Block a user