저는 과거에 Virtual Box를 사용해 본 적이 있으며 호스트의 폴더를 Windows 게스트와 공유하는 기능을 훌륭하게 지원합니다. QEMU와 유사한 기능을 찾고 있습니다.
문서에서는 네트워크 어딘가에서 실행 중인 Samba 서버를 노출하거나 -net user,smb=/path/to/folder
Samba 서버를 시작하는 데 사용할 것을 권장합니다.
저는 QEMU를 선택하지 않았습니다 -net user,smb
. 그것이 하는 일은 시작뿐입니다 smbd
(포트 충돌로 인해 로컬로 실행되는 다른 서비스와 충돌함). 틀림없이 이는 특히 여러 손님을 고려할 때 사용할 수 없습니다. (Linux의 경우 -virtfs
(Plan 9)를 사용하면 폴더를 쉽게 공유할 수 있습니다.)
Samba의 또 다른 문제는 폴더 공유에만 국한되지 않고 프린터 공유, 사용자 매핑 등도 수행할 수 있다는 것입니다. 나에게 필요한 것은 Windows 게스트와 폴더(또는 여러 개)를 공유하는 것뿐입니다.
Windows 클라이언트에서 사용할 수 있는 QEMU용 대체 폴더 공유 방법이 있습니까?
아니면 Samba를 매우 제한된 기능 세트로 제한하고 이를 QEMU에 통합하도록 구성하는 방법이 있습니까? 그것은 다음과 같아야 합니다:
- 네트워크의 모든 사람이 폴더에 액세스할 수 있는 것은 아닙니다.
- 가능하다면 로컬 사용자를 포함하세요.
- 추가 기능(프린터 공유)은 제공되지 않습니다.
- 사용 사례: git 디렉터리를 Windows에 노출하고, Windows에서 컴파일하고, Linux를 사용하여 분석합니다.
- 허용 가능한 속도가 있으며 Windows에서는 virtio-scsi 및 virtio-net을 사용합니다.
- Linux 호스트의 폴더를 Windows 7 게스트와 공유하는 기능.
답변1
QEMU에 내장된 Samba 서비스
-net user,smb
이 옵션은 최신 Samba 버전(>= 4)과의 비호환으로 인해 작동하지 않습니다 . 이 문제는 QEMU v2.2.0 이상에서 다음 변경 사항으로 해결되었습니다.
- b87b8a8 slirp/smb: ncalrpc 디렉토리를 tmp로 이동(v2.1.0부터)
- 44d8d2b net/slirp: smbd에 대한 로그 베이스 지정(v2.2.0부터)
- 7912d04 slirp/smbd: 생성된 smbd.conf에서 여러 매개변수 수정/설정(v2.2.0부터는 프린터도 비활성화되어 있습니다)
(Debian은 Jessie에 있는 것처럼 후자의 두 패치를 2.1+dfsg-6으로 백포트했습니다.)
용법
\\10.0.2.4\qemu
사용자 네트워크에서와 마찬가지로 폴더를 내보낼 수 있습니다 .
qemu-system-x86_64 \
-net user,smb=/absolute/path/to/folder \
-net nic,model=virtio \
...
이러한 옵션을 사용하여 QEMU가 성공적으로 시작되면 /tmp/qemu-smb.*-*/
포함이 생성됩니다 smb.conf
. 충분히 빠르면 이 파일을 수정하여 경로를 읽기 전용으로 만들거나 더 많은 폴더를 내보낼 수 있습니다.
작동 모드
삼바 데몬은 "사용자" 네트워크를 통해 포트 139 또는 445에 액세스할 때마다 실행됩니다. 통신은 smbd 프로세스의 표준 입출력/오류를 통해 발생합니다. 이것이 최신 데몬이 실패하는 이유입니다. 프로토콜 메시지 대신 파이프에 오류 메시지를 씁니다.
이 작업 방법으로 인해 데몬은 호스트 포트에서 수신 대기하지 않으므로 게스트만 액세스할 수 있습니다. 따라서 네트워크의 다른 클라이언트는 물론 로컬 사용자도 이 데몬을 사용하여 폴더에 액세스할 수 없습니다.
QEMU v2.2.0 프린터 공유는 삼바 구성을 통해 완전히 비활성화되므로 더 이상 걱정할 필요가 없습니다.
속도는 네트워크 어댑터에 따라 다르므로 사용을 권장합니다.버티오 netkvm
드라이버Windows에서.
/usr/sbin/smbd
또한 데몬은 일반적으로 컴파일 타임에 지정된 절대 경로에서 옵션을 사용하여 실행됩니다 --smbd
. 새로운 바이너리를 시도하거나 삽입해야 할 때마다 smbd
이 경로의 파일을 수정해야 합니다.
기타 참고사항
게스트가 실행 권한을 가지려면 실행 파일( *.exe
)이 호스트( )에서 실행 가능해야 합니다 . chmod +x FILE
파일 실행을 허용하려면 acl allow execute always = True
이 옵션을 공유에 추가하세요.
예읽기 전용smb.conf 구성을 사용하면 모든 파일을 실행할 수 있습니다(QEMU v2.2.0 기반).
... [qemu] 경로 =/홈/피터/윈도우 읽기 전용=예 좋은 고객 = 사실 강제 사용자=베드로 acl 항상 실행 허용 = True
답변2
존재하다2018다른 사용자 간에 폴더를 공유하는 쉬운 방법리눅스주인&윈도우가상머신은~할 수 있게 하다원격 개발 계획Windows에서 guest
연결vm
Remmina 원격 데스크톱 클라이언트& 공유 폴더 활성화:
그러면 아래에 폴더가 생성됩니다이 컴퓨터(Linux의 공유 폴더hostname
) 및 \\tsclient\shared-folder-name
네트워크 공유 내에서 guest
. 네트워크 드라이브를 매핑할 수도 있습니다.
이 솔루션은아니요실행 해야합니다
samba
.libvirt
/에서 테스트되었지만virt-manager
모든 가상화에서 작동해야 합니다.
답변3
익명성을 사용하여 간단한 작업 설정을 완료했습니다.네트워크 파일 시스템출구. 소요된다"NFS 서비스" 활성화Windows 클라이언트에서 regedit를 사용하여 일치하는 DWORD 값을 설정 하고 AnonymousUid
.AnonymousGid
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default
그런 다음 command.com 명령을 통해 마운트할 수 있습니다 mount -o anon \\10.10.11.11\mnt\diskx\nfsshare Z:
. 여기서 10.10.11.11은 Linux 호스트의 IP 주소이고 \mnt\diskx\nfsshare
정의된 내보내기 경로입니다 /etc/exports
.
바라보다스크린샷과 함께 자세한 설명