runInLinuxVM: Use QEMU command line that works on other architectures

... by moving the existing definition to qemu-flags.nix and reusing
that.
This commit is contained in:
Tuomas Tynkkynen 2017-12-06 20:26:22 +02:00 committed by Tuomas Tynkkynen
parent 8c4f8c51a6
commit 71631a922b
3 changed files with 8 additions and 11 deletions

View File

@ -12,4 +12,10 @@
else if pkgs.stdenv.isArm || pkgs.stdenv.isAarch64 then "ttyAMA0"
else throw "Unknown QEMU serial device for system '${pkgs.stdenv.system}'";
qemuBinary = qemuPkg: {
"i686-linux" = "${qemuPkg}/bin/qemu-kvm";
"x86_64-linux" = "${qemuPkg}/bin/qemu-kvm -cpu kvm64";
"armv7l-linux" = "${qemuPkg}/bin/qemu-system-arm -enable-kvm -machine virt -cpu host";
"aarch64-linux" = "${qemuPkg}/bin/qemu-system-aarch64 -enable-kvm -machine virt,gic-version=host -cpu host";
}.${pkgs.stdenv.system} or (throw "Unknown QEMU binary for '${pkgs.stdenv.system}'");
}

View File

@ -15,12 +15,6 @@ with import ../../lib/qemu-flags.nix { inherit pkgs; };
let
qemu = config.system.build.qemu or pkgs.qemu_test;
qemuKvm = {
"i686-linux" = "${qemu}/bin/qemu-kvm";
"x86_64-linux" = "${qemu}/bin/qemu-kvm -cpu kvm64";
"armv7l-linux" = "${qemu}/bin/qemu-system-arm -enable-kvm -machine virt -cpu host";
"aarch64-linux" = "${qemu}/bin/qemu-system-aarch64 -enable-kvm -machine virt,gic-version=host -cpu host";
}.${pkgs.stdenv.system};
vmName =
if config.networking.hostName == ""
@ -79,7 +73,7 @@ let
'')}
# Start QEMU.
exec ${qemuKvm} \
exec ${qemuBinary qemu} \
-name ${vmName} \
-m ${toString config.virtualisation.memorySize} \
-smp ${toString config.virtualisation.cores} \

View File

@ -23,8 +23,6 @@ rec {
patches = [ ../../../nixos/modules/virtualisation/azure-qemu-220-no-etc-install.patch ];
});
qemuProg = "${qemu}/bin/qemu-kvm";
modulesClosure = makeModulesClosure {
inherit kernel rootModules;
@ -204,8 +202,7 @@ rec {
qemuCommandLinux = ''
${qemuProg} \
${lib.optionalString (pkgs.stdenv.system == "x86_64-linux") "-cpu kvm64"} \
${qemuBinary qemu} \
-nographic -no-reboot \
-device virtio-rng-pci \
-virtfs local,path=${storeDir},security_model=none,mount_tag=store \