Update QEMU Nixos Virtual Machine
The Nixos Qemu VM that are used for VM tests can now start without boot menu even when using a bootloader. The Nixos Qemu VM with bootloader can emulate a EFI boot now.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
{ stdenv, edk2, nasm, iasl }:
|
||||
{ stdenv, edk2, nasm, iasl, seabios, openssl, secureBoot ? false }:
|
||||
|
||||
let
|
||||
|
||||
@@ -14,14 +14,36 @@ in
|
||||
stdenv.mkDerivation (edk2.setup "OvmfPkg/OvmfPkg${targetArch}.dsc" {
|
||||
name = "OVMF-2014-12-10";
|
||||
|
||||
buildInputs = [nasm iasl];
|
||||
# TODO: properly include openssl for secureBoot
|
||||
buildInputs = [nasm iasl] ++ stdenv.lib.optionals (secureBoot == true) [ openssl ];
|
||||
|
||||
unpackPhase = ''
|
||||
for file in \
|
||||
"${edk2.src}"/{OvmfPkg,UefiCpuPkg,MdeModulePkg,IntelFrameworkModulePkg,PcAtChipsetPkg,FatBinPkg,EdkShellBinPkg,MdePkg,ShellPkg,OptionRomPkg,IntelFrameworkPkg};
|
||||
"${edk2.src}"/{UefiCpuPkg,MdeModulePkg,IntelFrameworkModulePkg,PcAtChipsetPkg,FatBinPkg,EdkShellBinPkg,MdePkg,ShellPkg,OptionRomPkg,IntelFrameworkPkg};
|
||||
do
|
||||
ln -sv "$file" .
|
||||
done
|
||||
'';
|
||||
|
||||
${if (seabios == false) then ''
|
||||
ln -sv ${edk2.src}/OvmfPkg .
|
||||
'' else ''
|
||||
cp -r ${edk2.src}/OvmfPkg .
|
||||
chmod +w OvmfPkg/Csm/Csm16
|
||||
cp ${seabios}/Csm16.bin OvmfPkg/Csm/Csm16/Csm16.bin
|
||||
''}
|
||||
|
||||
${if (secureBoot == true) then ''
|
||||
ln -sv ${edk2.src}/SecurityPkg .
|
||||
ln -sv ${edk2.src}/CryptoPkg .
|
||||
'' else ''
|
||||
''}
|
||||
'';
|
||||
|
||||
buildPhase = if (seabios == false) then ''
|
||||
build ${if secureBoot then "-DSECURE_BOOT_ENABLE=TRUE" else ""}
|
||||
'' else ''
|
||||
build -D CSM_ENABLE -D FD_SIZE_2MB ${if secureBoot then "-DSECURE_BOOT_ENABLE=TRUE" else ""}
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Sample UEFI firmware for QEMU and KVM";
|
||||
|
||||
Reference in New Issue
Block a user