Nix 구성은 직접 파티션을 마운트하도록 qemu vm을 구성합니다.

Nix 구성은 직접 파티션을 마운트하도록 qemu vm을 구성합니다.

나는 여기에 언급된 작업을 수행하고 싶습니다.https://wiki.archlinux.org/index.php/QEMU#Mounting_a_partition_of_the_guest_on_the_host-기본적으로 파티션을 VM에 직접 마운트합니다. 그래서 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

매개변수 를 설정해야 할 것 같은데 -hdanix 모듈에 옵션이 표시되지 않습니다.

답변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 \
          "$@"

관련 정보