QEMU에 내장된 Samba 서비스

QEMU에 내장된 Samba 서비스

저는 과거에 Virtual Box를 사용해 본 적이 있으며 호스트의 폴더를 Windows 게스트와 공유하는 기능을 훌륭하게 지원합니다. QEMU와 유사한 기능을 찾고 있습니다.

문서에서는 네트워크 어딘가에서 실행 중인 Samba 서버를 노출하거나 -net user,smb=/path/to/folderSamba 서버를 시작하는 데 사용할 것을 권장합니다.

저는 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 이상에서 다음 변경 사항으로 해결되었습니다.

(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연결vmRemmina 원격 데스크톱 클라이언트& 공유 폴더 활성화:

레미나 RDP 설정

그러면 아래에 폴더가 생성됩니다이 컴퓨터(Linux의 공유 폴더hostname) 및 \\tsclient\shared-folder-name네트워크 공유 내에서 guest. 네트워크 드라이브를 매핑할 수도 있습니다.

Windows 게스트 폴더 공유

  • 이 솔루션은아니요실행 해야합니다 samba.

  • libvirt/에서 테스트되었지만 virt-manager모든 가상화에서 작동해야 합니다.

답변3

익명성을 사용하여 간단한 작업 설정을 완료했습니다.네트워크 파일 시스템출구. 소요된다"NFS 서비스" 활성화Windows 클라이언트에서 regedit를 사용하여 일치하는 DWORD 값을 설정 하고 AnonymousUid.AnonymousGidComputer\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.

바라보다스크린샷과 함께 자세한 설명

관련 정보