Qemu
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/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 \ "$@"