Archived
Fix PXE netboot installer hanging at boot (ISO/netboot module conflict)
Check NixOS configurations / eval-hosts (pull_request) Successful in 11m1s
Check NixOS configurations / eval-hosts (pull_request) Successful in 11m1s
The netboot build composed ./modules/installer/iso.nix (which pulls in nixpkgs' installation-cd-minimal.nix) together with nixpkgs' netboot-minimal.nix. Both installation-cd-base.nix and netboot.nix set fileSystems."/" via the identical lib.mkImageMediaOverride (mkOverride 60) priority - genuinely conflicting root-filesystem strategies (ISO-by-label vs. netboot-tmpfs) at the same priority, and the ISO one was winning. Every netboot boot hung waiting for a device that can never exist outside a real CD/USB: A start job is running for /dev/disk/by-label/nixos-minimal-... Reproduced live: deployed a scratch lxc-pxe-boot on pve-test, pulled its built kernel/initrd, and booted them directly with QEMU to confirm the hang and capture full console output. netboot-minimal.nix's own chain (netboot-base.nix) already imports profiles/installation-device.nix independently, so common.nix's initialHashedPassword override still applies correctly with iso.nix removed from this composition. Rebuilt and re-booted the same way after the fix - full boot to a working shell with SSH up, no hang.
This commit is contained in:
1 parent
b3463e4b33
commit
453c7b5513
1 file changed
+15
-1
@@ -119,10 +119,24 @@
|
|||||||
|
|
||||||
# Same installer environment, built as netboot (kernel + initrd +
|
# Same installer environment, built as netboot (kernel + initrd +
|
||||||
# iPXE script) instead of an ISO — this is what packages.pxe bundles.
|
# iPXE script) instead of an ISO — this is what packages.pxe bundles.
|
||||||
|
#
|
||||||
|
# Deliberately imports common.nix directly, NOT ./modules/installer/iso.nix
|
||||||
|
# (which pulls in nixpkgs' installation-cd-minimal.nix) -- confirmed live
|
||||||
|
# that composing the ISO module together with netboot-minimal.nix hangs
|
||||||
|
# every boot waiting for a device that can never exist on a netboot
|
||||||
|
# client ("A start job is running for /dev/disk/by-label/nixos-minimal-...").
|
||||||
|
# Both installation-cd-base.nix and netboot.nix set fileSystems."/" via
|
||||||
|
# the identical lib.mkImageMediaOverride (mkOverride 60) priority --
|
||||||
|
# genuinely conflicting root-filesystem strategies (ISO-by-label vs.
|
||||||
|
# netboot-tmpfs) at the same priority, and the ISO one was winning.
|
||||||
|
# netboot-minimal.nix's own chain (netboot-base.nix) already imports
|
||||||
|
# profiles/installation-device.nix independently, so common.nix's
|
||||||
|
# initialHashedPassword override (which assumes that profile is
|
||||||
|
# present) still applies correctly without iso.nix in the mix.
|
||||||
netbootSystem = nixpkgs.lib.nixosSystem {
|
netbootSystem = nixpkgs.lib.nixosSystem {
|
||||||
inherit system;
|
inherit system;
|
||||||
modules = [
|
modules = [
|
||||||
./modules/installer/iso.nix
|
./modules/installer/common.nix
|
||||||
({ modulesPath, ... }: {
|
({ modulesPath, ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
(modulesPath + "/installer/netboot/netboot-minimal.nix")
|
(modulesPath + "/installer/netboot/netboot-minimal.nix")
|
||||||
|
|||||||
Reference in new issue
Block a user