過去には、ホスト上のフォルダーを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に統合するように構成する方法はありますか?そうすべき:
機能しない-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
2018では、Linuxホスト間でフォルダを共有する簡単な方法& Windows仮想マシンは enable[〜#〜] rdp [〜#〜] Windowsの場合guest
&--vm
に接続 Remmina Remote Desktop Client &共有フォルダーを有効化:
これにより、This pc(Linux上の共有フォルダーhostname
)&の下にフォルダーが作成されますguest
内の\\tsclient\shared-folder-name
ネットワーク共有。ネットワークドライブをマップすることもできます。
このソリューションでは、samba
を実行する必要はありません。
libvirt
/virt-manager
の下でテストされていますが、どの仮想化でも機能するはずです。