diff options
Diffstat (limited to 'nixos/tests/installer.nix')
-rw-r--r-- | nixos/tests/installer.nix | 50 |
1 files changed, 28 insertions, 22 deletions
diff --git a/nixos/tests/installer.nix b/nixos/tests/installer.nix index 50c6af485da..48f0f593425 100644 --- a/nixos/tests/installer.nix +++ b/nixos/tests/installer.nix @@ -74,10 +74,10 @@ let throw "Non-EFI boot methods are only supported on i686 / x86_64" else '' def assemble_qemu_flags(): - flags = "-cpu host" - ${if system == "x86_64-linux" - then ''flags += " -m 768"'' - else ''flags += " -m 512 -enable-kvm -machine virt,gic-version=host"'' + flags = "-cpu max" + ${if (system == "x86_64-linux" || system == "i686-linux") + then ''flags += " -m 1024"'' + else ''flags += " -m 768 -enable-kvm -machine virt,gic-version=host"'' } return flags @@ -270,7 +270,7 @@ let makeTest { inherit enableOCR; name = "installer-" + name; - meta = with pkgs.stdenv.lib.maintainers; { + meta = with pkgs.lib.maintainers; { # put global maintainers here, individuals go into makeInstallerTest fkt call maintainers = (meta.maintainers or []); }; @@ -284,15 +284,17 @@ let extraInstallerConfig ]; + # builds stuff in the VM, needs more juice virtualisation.diskSize = 8 * 1024; - virtualisation.memorySize = 1024; + virtualisation.cores = 8; + virtualisation.memorySize = 1536; # 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. virtualisation.emptyDiskImages = [ 512 ]; virtualisation.bootDevice = - if grubVersion == 1 then "/dev/sdb" else "/dev/vdb"; + if grubVersion == 1 then "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive2" else "/dev/vdb"; virtualisation.qemu.diskInterface = if grubVersion == 1 then "scsi" else "virtio"; @@ -323,10 +325,13 @@ let curl ] ++ optional (bootLoader == "grub" && grubVersion == 1) pkgs.grub - ++ optionals (bootLoader == "grub" && grubVersion == 2) [ - pkgs.grub2 - pkgs.grub2_efi - ]; + ++ optionals (bootLoader == "grub" && grubVersion == 2) (let + zfsSupport = lib.any (x: x == "zfs") + (extraInstallerConfig.boot.supportedFilesystems or []); + in [ + (pkgs.grub2.override { inherit zfsSupport; }) + (pkgs.grub2_efi.override { inherit zfsSupport; }) + ]); nix.binaryCaches = mkForce [ ]; nix.extraOptions = '' @@ -396,9 +401,9 @@ let createPartitions = '' machine.succeed( "flock /dev/vda parted --script /dev/vda -- mklabel gpt" - + " mkpart ESP fat32 1M 50MiB" # /boot + + " mkpart ESP fat32 1M 100MiB" # /boot + " set 1 boot on" - + " mkpart primary linux-swap 50MiB 1024MiB" + + " mkpart primary linux-swap 100MiB 1024MiB" + " mkpart primary ext2 1024MiB -1MiB", # / "udevadm settle", "mkswap /dev/vda2 -L swap", @@ -633,10 +638,10 @@ in { + " mklabel msdos" + " mkpart primary ext2 1M 100MB" # /boot + " mkpart extended 100M -1s" - + " mkpart logical 102M 2102M" # md0 (root), first device - + " mkpart logical 2103M 4103M" # md0 (root), second device - + " mkpart logical 4104M 4360M" # md1 (swap), first device - + " mkpart logical 4361M 4617M", # md1 (swap), second device + + " mkpart logical 102M 3102M" # md0 (root), first device + + " mkpart logical 3103M 6103M" # md0 (root), second device + + " mkpart logical 6104M 6360M" # md1 (swap), first device + + " mkpart logical 6361M 6617M", # md1 (swap), second device "udevadm settle", "ls -l /dev/vda* >&2", "cat /proc/partitions >&2", @@ -690,22 +695,23 @@ in { }; # Test a basic install using GRUB 1. - grub1 = makeInstallerTest "grub1" { + grub1 = makeInstallerTest "grub1" rec { createPartitions = '' machine.succeed( - "flock /dev/sda parted --script /dev/sda -- mklabel msdos" + "flock ${grubDevice} parted --script ${grubDevice} -- mklabel msdos" + " mkpart primary linux-swap 1M 1024M" + " mkpart primary ext2 1024M -1s", "udevadm settle", - "mkswap /dev/sda1 -L swap", + "mkswap ${grubDevice}-part1 -L swap", "swapon -L swap", - "mkfs.ext3 -L nixos /dev/sda2", + "mkfs.ext3 -L nixos ${grubDevice}-part2", "mount LABEL=nixos /mnt", "mkdir -p /mnt/tmp", ) ''; grubVersion = 1; - grubDevice = "/dev/sda"; + # /dev/sda is not stable, even when the SCSI disk number is. + grubDevice = "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive1"; }; # Test using labels to identify volumes in grub |