我想做这里提到的事情: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 \
"$@"