Qemu

Nix config 配置 qemu vm 以掛載直接分區

  • May 15, 2020

我想做這裡提到的事情: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/virtualisation/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 模組中沒有看到任何選項。

在這裡找到的解決方案: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 \
         "$@"

引用自:https://unix.stackexchange.com/questions/586833