diff options
author | Stefan Junker <mail@stefanjunker.de> | 2018-09-22 23:28:02 +0200 |
---|---|---|
committer | Stefan Junker <mail@stefanjunker.de> | 2018-09-22 23:29:19 +0200 |
commit | f777d2b719be0db4cb7819d5b6dbdd121db29a37 (patch) | |
tree | ed564e7a929ef113129c797b6d0486efef7c6215 /pkgs/build-support/vm | |
parent | 9e87b56dd1e20b1d0f5fce34694f4e1362afd3fb (diff) | |
download | nixpkgs-f777d2b719be0db4cb7819d5b6dbdd121db29a37.tar nixpkgs-f777d2b719be0db4cb7819d5b6dbdd121db29a37.tar.gz nixpkgs-f777d2b719be0db4cb7819d5b6dbdd121db29a37.tar.bz2 nixpkgs-f777d2b719be0db4cb7819d5b6dbdd121db29a37.tar.lz nixpkgs-f777d2b719be0db4cb7819d5b6dbdd121db29a37.tar.xz nixpkgs-f777d2b719be0db4cb7819d5b6dbdd121db29a37.tar.zst nixpkgs-f777d2b719be0db4cb7819d5b6dbdd121db29a37.zip |
virtualization/qemu-vm: fix and improve virtio/scsi switching
Diffstat (limited to 'pkgs/build-support/vm')
-rw-r--r-- | pkgs/build-support/vm/default.nix | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix index 03b3fb1f9f2..6e98099460f 100644 --- a/pkgs/build-support/vm/default.nix +++ b/pkgs/build-support/vm/default.nix @@ -3,8 +3,9 @@ , img ? pkgs.stdenv.hostPlatform.platform.kernelTarget , storeDir ? builtins.storeDir , rootModules ? - [ "virtio_pci" "virtio_mmio" "virtio_blk" "virtio_balloon" "virtio_rng" "ext4" "unix" "9p" "9pnet_virtio" "crc32c_generic" ] + [ "virtio_pci" "virtio_mmio" "virtio_blk" "virtio_balloon" "virtio_rng" "ext4" "unix" "9p" "9pnet_virtio" "crc32c_generic" "sym53c8xx" "virtio_scsi" "ahci "] ++ pkgs.lib.optional (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) "rtc_cmos" +, config }: with pkgs; @@ -196,9 +197,17 @@ rec { ${qemuBinary qemu} \ -nographic -no-reboot \ -device virtio-rng-pci \ + ${if "$diskInterface" == "scsi" then '' \ + \ # FIXME: /dev/sda is not created within the VM + -device lsi53c895a \ + -device scsi-hd,drive=hd,id=scsi1,bootindex=1 \ + ''${diskImage:+-drive file=$diskImage,media=disk,if=none,id=hd,cache=unsafe,werror=report} \ + '' else '' \ + -drive file=$diskImage,media=disk,if=none,id=hd \ + -device virtio-blk-pci,scsi=off,drive=hd,id=virtio0,bootindex=1 \ + \''} -virtfs local,path=${storeDir},security_model=none,mount_tag=store \ -virtfs local,path=$TMPDIR/xchg,security_model=none,mount_tag=xchg \ - ''${diskImage:+-drive file=$diskImage,if=virtio,cache=unsafe,werror=report} \ -kernel ${kernel}/${img} \ -initrd ${initrd}/initrd \ -append "console=${qemuSerialDevice} panic=1 command=${stage2Init} out=$out mountDisk=$mountDisk loglevel=4" \ @@ -298,12 +307,13 @@ rec { `run-vm' will be left behind in the temporary build directory that allows you to boot into the VM and debug it interactively. */ - runInLinuxVM = drv: lib.overrideDerivation drv ({ memSize ? 512, QEMU_OPTS ? "", args, builder, ... }: { + runInLinuxVM = drv: lib.overrideDerivation drv ({ memSize ? 512, QEMU_OPTS ? "", args, builder, ... } @ moreArgs : { requiredSystemFeatures = [ "kvm" ]; builder = "${bash}/bin/sh"; args = ["-e" (vmRunCommand qemuCommandLinux)]; origArgs = args; origBuilder = builder; + diskInterface = "${moreArgs.diskInterface}"; QEMU_OPTS = "${QEMU_OPTS} -m ${toString memSize}"; passAsFile = []; # HACK fix - see https://github.com/NixOS/nixpkgs/issues/16742 }); |