|
|
|
@ -4,6 +4,7 @@ |
|
|
|
|
}: |
|
|
|
|
|
|
|
|
|
with import ../lib/testing-python.nix { inherit system pkgs; }; |
|
|
|
|
with import ../lib/qemu-flags.nix { inherit pkgs; }; |
|
|
|
|
with pkgs.lib; |
|
|
|
|
|
|
|
|
|
let |
|
|
|
@ -21,7 +22,10 @@ let |
|
|
|
|
|
|
|
|
|
makeBootTest = name: extraConfig: |
|
|
|
|
let |
|
|
|
|
machineConfig = pythonDict ({ qemuFlags = "-m 768"; } // extraConfig); |
|
|
|
|
machineConfig = pythonDict ({ |
|
|
|
|
qemuBinary = qemuBinary pkgs.qemu_test; |
|
|
|
|
qemuFlags = "-m 768"; |
|
|
|
|
} // extraConfig); |
|
|
|
|
in |
|
|
|
|
makeTest { |
|
|
|
|
inherit iso; |
|
|
|
@ -61,6 +65,7 @@ let |
|
|
|
|
]; |
|
|
|
|
}; |
|
|
|
|
machineConfig = pythonDict ({ |
|
|
|
|
qemuBinary = qemuBinary pkgs.qemu_test; |
|
|
|
|
qemuFlags = "-boot order=n -m 2000"; |
|
|
|
|
netBackendArgs = "tftp=${ipxeBootDir},bootfile=netboot.ipxe"; |
|
|
|
|
} // extraConfig); |
|
|
|
@ -75,31 +80,34 @@ let |
|
|
|
|
machine.shutdown() |
|
|
|
|
''; |
|
|
|
|
}; |
|
|
|
|
uefiBinary = { |
|
|
|
|
x86_64-linux = "${pkgs.OVMF.fd}/FV/OVMF.fd"; |
|
|
|
|
aarch64-linux = "${pkgs.OVMF.fd}/FV/QEMU_EFI.fd"; |
|
|
|
|
}.${pkgs.stdenv.hostPlatform.system}; |
|
|
|
|
in { |
|
|
|
|
|
|
|
|
|
biosCdrom = makeBootTest "bios-cdrom" { |
|
|
|
|
uefiCdrom = makeBootTest "uefi-cdrom" { |
|
|
|
|
cdrom = "${iso}/iso/${iso.isoName}"; |
|
|
|
|
bios = uefiBinary; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
biosUsb = makeBootTest "bios-usb" { |
|
|
|
|
uefiUsb = makeBootTest "uefi-usb" { |
|
|
|
|
usb = "${iso}/iso/${iso.isoName}"; |
|
|
|
|
bios = uefiBinary; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
uefiCdrom = makeBootTest "uefi-cdrom" { |
|
|
|
|
uefiNetboot = makeNetbootTest "uefi" { |
|
|
|
|
bios = uefiBinary; |
|
|
|
|
# Custom ROM is needed for EFI PXE boot. I failed to understand exactly why, because QEMU should still use iPXE for EFI. |
|
|
|
|
netFrontendArgs = "romfile=${pkgs.ipxe}/ipxe.efirom"; |
|
|
|
|
}; |
|
|
|
|
} // optionalAttrs (pkgs.stdenv.hostPlatform.system == "x86_64-linux") { |
|
|
|
|
biosCdrom = makeBootTest "bios-cdrom" { |
|
|
|
|
cdrom = "${iso}/iso/${iso.isoName}"; |
|
|
|
|
bios = "${pkgs.OVMF.fd}/FV/OVMF.fd"; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
uefiUsb = makeBootTest "uefi-usb" { |
|
|
|
|
biosUsb = makeBootTest "bios-usb" { |
|
|
|
|
usb = "${iso}/iso/${iso.isoName}"; |
|
|
|
|
bios = "${pkgs.OVMF.fd}/FV/OVMF.fd"; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
biosNetboot = makeNetbootTest "bios" {}; |
|
|
|
|
|
|
|
|
|
uefiNetboot = makeNetbootTest "uefi" { |
|
|
|
|
bios = "${pkgs.OVMF.fd}/FV/OVMF.fd"; |
|
|
|
|
# Custom ROM is needed for EFI PXE boot. I failed to understand exactly why, because QEMU should still use iPXE for EFI. |
|
|
|
|
netFrontendArgs = "romfile=${pkgs.ipxe}/ipxe.efirom"; |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|