web-dev-qa-db-ja.com

QEMU WindowsゲストとLinuxホスト間の共有フォルダー

過去には、ホスト上のフォルダーをWindowsゲストと共有するための非常に優れたサポートを持つVirtual Boxを使用しました。 QEMUの同様の機能を探しています。

ドキュメントでは、ネットワークのどこかで実行されているSambaサーバーを公開するか、-Net User,smb=/path/to/folderは、Sambaサーバーを起動します。

-Net User,smb QEMUのオプション。 smbdを開始するだけです(ポートの競合により、ローカルで実行されている別のサービスと競合します)。特に複数のゲストを想定している場合、これは使用できません。 (Linuxの場合、-virtfs(プラン9)を使用すると、フォルダを簡単に共有できます。)

Sambaのその他の問題は、フォルダー共有に限定されず、プリンター共有、ユーザーマッピングなども行われることです。必要なのは、Windowsゲストと1つ(または複数)のフォルダーを共有することだけです。

Windowsゲストで動作するQEMUの代替フォルダー共有方法はありますか?

それとも、Sambaを非常に限られた機能セットに制限してQEMUに統合するように構成する方法はありますか?そうすべき:

  • ネットワーク内の全員がフォルダにアクセスできる必要はありません。
  • ローカルユーザーが含まれます(可能な場合)。
  • 他の機能(プリンター共有)を提供しません。
  • 使用例:gitディレクトリをWindowsに公開し、Windowsでコンパイルして、分析にLinuxを使用します。
  • 許容可能な速度で、Windowsはvirtio-scsiおよびvirtio-netを使用します。
  • LinuxホストのフォルダーをWindows 7ゲストと共有できます。
26
Lekensteyn

QEMUの組み込みSambaサービス

機能しない-Net User,smbオプションは、新しいSambaバージョン(> = 4)との非互換性が原因でした。これはQEMU v2.2.0以降で修正され、以下の変更が加えられています。

(Debianは、後者の2つのパッチをJessieにある2.1 + dfsg-6にバックポートしました。)

使用法

ユーザーネットワークを使用する場合、1つのフォルダーを\\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ディレクトリが作成されます。十分に高速な場合は、このファイルを変更して、パスを読み取り専用にするか、さらに多くのフォルダーをエクスポートすることができます。

動作モード

Sambaデーモンは、ポート139または445が「ユーザー」ネットワークを介してアクセスされるたびに実行されます。通信は、smbdプロセスの標準入出力/エラーを介して行われます。これが、新しいデーモンが失敗した理由であり、プロトコルメッセージではなくエラーメッセージをパイプに書き込みます。

この操作方法のため、デーモンはホストポートでリッスンせず、ゲストのみがアクセスできます。したがって、ネットワーク内の他のクライアントやローカルユーザーでさえ、このデーモンを使用してフォルダにアクセスすることはできません。

QEMU v2.2.0のプリンター共有はsambaの設定によって完全に無効になっているため、ここで別の心配がなくなります。

速度はネットワークアダプターに依存するため、Windowsでは virtio netkvm driver を使用することをお勧めします。

また、デーモンは、コンパイル時に(/usr/sbin/smbdオプションを使用して)指定された絶対パス(通常は--smbd)によって実行されることにも注意してください。新しいバイナリを試すか、smbdを挿入する必要があるときはいつでも、そのパスにあるファイルを変更する必要があります。

その他の警告

ゲストが実行権限を持つには、実行可能ファイル(*.exe)がホスト(chmod +x FILE)で実行可能である必要があります。ファイルの実行を許可するには、acl allow execute always = Trueオプションを共有に追加します。

read-onlysmb.conf構成で、任意のファイルの実行を許可します(QEMU v2.2.0に基づく):

 ... 
 [qemu] 
 path =/ home/peter/windows
 read only =yes
 guest ok = true 
 force user =peteracl allow execute always = True
15
Lekensteyn

2018では、Linuxホスト間でフォルダを共有する簡単な方法& Windows仮想マシンは enable[〜#〜] rdp [〜#〜] Windowsの場合guest&--vmに接続 Remmina Remote Desktop Client &共有フォルダーを有効化:

Remmina RDP settings

これにより、This pcLinux上の共有フォルダーhostname)&の下にフォルダーが作成されますguest内の\\tsclient\shared-folder-nameネットワーク共有。ネットワークドライブをマップすることもできます。

Windows Guest folder shares

  • このソリューションでは、sambaを実行する必要はありません。

  • libvirt/virt-managerの下でテストされていますが、どの仮想化でも機能するはずです。

6
Stuart Cardall