Nix config 配置 qemu vm 挂载直接分区

Nix config 配置 qemu vm 挂载直接分区

我想做这里提到的事情:https://wiki.archlinux.org/index.php/QEMU#Mounting_a_partition_of_the_guest_on_the_host- 本质上直接在虚拟机上安装分区 - 这样我就可以mmap在安装上使用 - (这9p似乎不支持)。

但是我不确定这里的 nix 模块(?)的相关配置https://github.com/NixOS/nixpkgs/blob/b0df5a6816b644c2e0b6ebcde6ad0784b07205e0/nixos/modules/virtualization/qemu-vm.nix来配置这个。我实际上正在使用https://github.com/Mic92/nixos-shell尽管这似乎又使用了引用的模块/文件。

尝试类似的事情:

    extraMounts = {
      "/test" = {
        target = /dev/sdc;
        cache = "none";
      };
    };

导致错误:

qemu-system-x86_64: -virtfs local,path=/dev/sdc,security_model=none,mount_tag=a457b9c00b7152b02ceea27e7fe1a07: cannot initialize fsdev 'a457b9c00b7152b02ceea27e7fe1a07': failed to open '/dev/sdc': Not a directory

看来我需要设置一个-hda参数,但我在 nix 模块中没有看到任何选项。

答案1

在这里找到解决方案:https://github.com/Mic92/nixos-shell/issues/14

我必须设置一个环境变量: QEMU_OPTS="-hdc /dev/disk/by-uuid/836d83ab-cba5-4eb4-a7c8-09911cd67403"

这里引用了它:

      # Start QEMU.
      exec ${qemuBinary qemu} \
          -name ${vmName} \
          -m ${toString config.virtualisation.memorySize} \
          -smp ${toString config.virtualisation.cores} \
          -device virtio-rng-pci \
          ${concatStringsSep " " config.virtualisation.qemu.networkingOptions} \
          -virtfs local,path=/nix/store,security_model=none,mount_tag=store \
          -virtfs local,path=$TMPDIR/xchg,security_model=none,mount_tag=xchg \
          -virtfs local,path=''${SHARED_DIR:-$TMPDIR/xchg},security_model=none,mount_tag=shared \
          ${drivesCmdLine config.virtualisation.qemu.drives} \
          ${toString config.virtualisation.qemu.options} \
          $QEMU_OPTS \
          "$@"

相关内容