mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-07-12 05:16:25 +03:00
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:
parent
8c4f8c51a6
commit
71631a922b
3 changed files with 8 additions and 11 deletions
|
@ -12,4 +12,10 @@
|
||||||
else if pkgs.stdenv.isArm || pkgs.stdenv.isAarch64 then "ttyAMA0"
|
else if pkgs.stdenv.isArm || pkgs.stdenv.isAarch64 then "ttyAMA0"
|
||||||
else throw "Unknown QEMU serial device for system '${pkgs.stdenv.system}'";
|
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}'");
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,12 +15,6 @@ with import ../../lib/qemu-flags.nix { inherit pkgs; };
|
||||||
let
|
let
|
||||||
|
|
||||||
qemu = config.system.build.qemu or pkgs.qemu_test;
|
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 =
|
vmName =
|
||||||
if config.networking.hostName == ""
|
if config.networking.hostName == ""
|
||||||
|
@ -79,7 +73,7 @@ let
|
||||||
'')}
|
'')}
|
||||||
|
|
||||||
# Start QEMU.
|
# Start QEMU.
|
||||||
exec ${qemuKvm} \
|
exec ${qemuBinary qemu} \
|
||||||
-name ${vmName} \
|
-name ${vmName} \
|
||||||
-m ${toString config.virtualisation.memorySize} \
|
-m ${toString config.virtualisation.memorySize} \
|
||||||
-smp ${toString config.virtualisation.cores} \
|
-smp ${toString config.virtualisation.cores} \
|
||||||
|
|
|
@ -23,8 +23,6 @@ rec {
|
||||||
patches = [ ../../../nixos/modules/virtualisation/azure-qemu-220-no-etc-install.patch ];
|
patches = [ ../../../nixos/modules/virtualisation/azure-qemu-220-no-etc-install.patch ];
|
||||||
});
|
});
|
||||||
|
|
||||||
qemuProg = "${qemu}/bin/qemu-kvm";
|
|
||||||
|
|
||||||
|
|
||||||
modulesClosure = makeModulesClosure {
|
modulesClosure = makeModulesClosure {
|
||||||
inherit kernel rootModules;
|
inherit kernel rootModules;
|
||||||
|
@ -204,8 +202,7 @@ rec {
|
||||||
|
|
||||||
|
|
||||||
qemuCommandLinux = ''
|
qemuCommandLinux = ''
|
||||||
${qemuProg} \
|
${qemuBinary qemu} \
|
||||||
${lib.optionalString (pkgs.stdenv.system == "x86_64-linux") "-cpu kvm64"} \
|
|
||||||
-nographic -no-reboot \
|
-nographic -no-reboot \
|
||||||
-device virtio-rng-pci \
|
-device virtio-rng-pci \
|
||||||
-virtfs local,path=${storeDir},security_model=none,mount_tag=store \
|
-virtfs local,path=${storeDir},security_model=none,mount_tag=store \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue