nixos/qemu-vm: add option to use a non-standard BIOS
I'd like to change the default on x86 platforms to qboot at some point, since it saves a fair bit of startup time.
This commit is contained in:
parent
2defee2981
commit
55912f3535
@ -441,6 +441,18 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
virtualisation.bios =
|
||||||
|
mkOption {
|
||||||
|
default = null;
|
||||||
|
type = types.nullOr types.package;
|
||||||
|
description =
|
||||||
|
''
|
||||||
|
An alternate BIOS (such as <package>qboot</package>) with which to start the VM.
|
||||||
|
Should containin a file named <literal>bios.bin</literal>.
|
||||||
|
If <literal>null</literal>, QEMU's builtin SeaBIOS will be used.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
@ -521,6 +533,9 @@ in
|
|||||||
(mkIf cfg.useEFIBoot [
|
(mkIf cfg.useEFIBoot [
|
||||||
"-pflash $TMPDIR/bios.bin"
|
"-pflash $TMPDIR/bios.bin"
|
||||||
])
|
])
|
||||||
|
(mkIf (cfg.bios != null) [
|
||||||
|
"-bios ${cfg.bios}/bios.bin"
|
||||||
|
])
|
||||||
(mkIf (!cfg.graphics) [
|
(mkIf (!cfg.graphics) [
|
||||||
"-nographic"
|
"-nographic"
|
||||||
])
|
])
|
||||||
|
@ -273,6 +273,7 @@ in
|
|||||||
prosody = handleTest ./xmpp/prosody.nix {};
|
prosody = handleTest ./xmpp/prosody.nix {};
|
||||||
prosodyMysql = handleTest ./xmpp/prosody-mysql.nix {};
|
prosodyMysql = handleTest ./xmpp/prosody-mysql.nix {};
|
||||||
proxy = handleTest ./proxy.nix {};
|
proxy = handleTest ./proxy.nix {};
|
||||||
|
qboot = handleTestOn ["x86_64-linux" "i686-linux"] ./qboot.nix {};
|
||||||
quagga = handleTest ./quagga.nix {};
|
quagga = handleTest ./quagga.nix {};
|
||||||
quorum = handleTest ./quorum.nix {};
|
quorum = handleTest ./quorum.nix {};
|
||||||
rabbitmq = handleTest ./rabbitmq.nix {};
|
rabbitmq = handleTest ./rabbitmq.nix {};
|
||||||
|
13
nixos/tests/qboot.nix
Normal file
13
nixos/tests/qboot.nix
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import ./make-test-python.nix ({ pkgs, ...} : {
|
||||||
|
name = "qboot";
|
||||||
|
|
||||||
|
machine = { ... }: {
|
||||||
|
virtualisation.bios = pkgs.qboot;
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript =
|
||||||
|
''
|
||||||
|
start_all()
|
||||||
|
machine.wait_for_unit("multi-user.target")
|
||||||
|
'';
|
||||||
|
})
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, meson, ninja, fetchFromGitHub }:
|
{ stdenv, meson, ninja, fetchFromGitHub, nixosTests }:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
name = "qboot-20200423";
|
name = "qboot-20200423";
|
||||||
@ -19,6 +19,8 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
hardeningDisable = [ "stackprotector" "pic" ];
|
hardeningDisable = [ "stackprotector" "pic" ];
|
||||||
|
|
||||||
|
passthru.tests = { qboot = nixosTests.qboot; };
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "A simple x86 firmware for booting Linux";
|
description = "A simple x86 firmware for booting Linux";
|
||||||
homepage = "https://github.com/bonzini/qboot";
|
homepage = "https://github.com/bonzini/qboot";
|
||||||
|
Loading…
Reference in New Issue
Block a user