Merge pull request #169113 from ElvishJerricco/systemd-stage-1-installer-tests

nixos: Installer tests for systemd stage 1
This commit is contained in:
Bernardo Meurer 2022-04-30 13:18:57 -07:00 committed by GitHub
commit 78f6f77962
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 61 additions and 2 deletions

View File

@ -39,7 +39,8 @@ in
echo "unpacking the NixOS/Nixpkgs sources..."
mkdir -p /nix/var/nix/profiles/per-user/root
${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/per-user/root/channels \
-i ${channelSources} --quiet --option build-use-substitutes false
-i ${channelSources} --quiet --option build-use-substitutes false \
${optionalString config.boot.initrd.systemd.enable "--option sandbox false"} # There's an issue with pivot_root
mkdir -m 0700 -p /root/.nix-defexpr
ln -s /nix/var/nix/profiles/per-user/root/channels /root/.nix-defexpr/channels
mkdir -m 0755 -p /var/lib/nixos

View File

@ -99,6 +99,10 @@ with lib;
stdenvNoCC # for runCommand
busybox
jq # for closureInfo
# For boot.initrd.systemd
makeInitrdNGTool
systemdStage1
systemdStage1Network
];
# Show all debug messages from the kernel but don't log refused packets

View File

@ -479,6 +479,21 @@ in {
''systemctl --no-block switch-root /sysroot "''${NEW_INIT}"''
];
};
services.panic-on-fail = {
wantedBy = ["emergency.target"];
unitConfig = {
DefaultDependencies = false;
ConditionKernelCommandLine = [
"|boot.panic_on_fail"
"|stage1panic"
];
};
script = ''
echo c > /proc/sysrq-trigger
'';
serviceConfig.Type = "oneshot";
};
};
boot.kernelParams = lib.mkIf (config.boot.resumeDevice != "") [ "resume=${config.boot.resumeDevice}" ];

View File

@ -235,6 +235,7 @@ in
input-remapper = handleTest ./input-remapper.nix {};
inspircd = handleTest ./inspircd.nix {};
installer = handleTest ./installer.nix {};
installer-systemd-stage-1 = handleTest ./installer-systemd-stage-1.nix {};
invoiceplane = handleTest ./invoiceplane.nix {};
iodine = handleTest ./iodine.nix {};
ipfs = handleTest ./ipfs.nix {};

View File

@ -0,0 +1,33 @@
{ system ? builtins.currentSystem
, config ? {}
, pkgs ? import ../.. { inherit system config; }
}:
{
# Some of these tests don't work with systemd stage 1 yet. Uncomment
# them when fixed.
inherit (import ./installer.nix { inherit system config pkgs; systemdStage1 = true; })
# bcache
# btrfsSimple
# btrfsSubvolDefault
# btrfsSubvols
# encryptedFSWithKeyfile
# grub1
# luksroot
# luksroot-format1
# luksroot-format2
# lvm
separateBoot
separateBootFat
simple
simpleLabels
simpleProvided
simpleSpecialised
simpleUefiGrub
simpleUefiGrubSpecialisation
simpleUefiSystemdBoot
# swraid
# zfsroot
;
}

View File

@ -1,6 +1,7 @@
{ system ? builtins.currentSystem,
config ? {},
pkgs ? import ../.. { inherit system config; }
pkgs ? import ../.. { inherit system config; },
systemdStage1 ? false
}:
with import ../lib/testing-python.nix { inherit system pkgs; };
@ -23,6 +24,8 @@ let
# To ensure that we can rebuild the grub configuration on the nixos-rebuild
system.extraDependencies = with pkgs; [ stdenvNoCC ];
${optionalString systemdStage1 "boot.initrd.systemd.enable = true;"}
${optionalString (bootLoader == "grub") ''
boot.loader.grub.version = ${toString grubVersion};
${optionalString (grubVersion == 1) ''
@ -290,6 +293,8 @@ let
virtualisation.cores = 8;
virtualisation.memorySize = 1536;
boot.initrd.systemd.enable = systemdStage1;
# Use a small /dev/vdb as the root disk for the
# installer. This ensures the target disk (/dev/vda) is
# the same during and after installation.