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:
Thomas Strobel
2015-02-16 20:07:42 +01:00
parent b9cc04329b
commit 80afabd5b5
4 changed files with 144 additions and 23 deletions
@@ -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";