過去に、ホスト上のフォルダーをWindowsゲストと共有するための非常に優れたサポートを備えたVirtualBoxを使用しました。 QEMUで同様の機能を探しています。
ドキュメントでは、ネットワーク内のどこかで実行されているSambaサーバーを公開するか、-net user,smb=/path/to/folder
を使用することを提案しています。 sambaサーバーを起動します。
-net user,smb
がうまくいきませんでした QEMUのオプション。 smbd
を起動するだけです (ポートの競合が原因で、ローカルで実行されている別のサービスと競合します)。特に複数のゲストを念頭に置いている場合、これは使用できません。 (Linuxの場合、-virtfs
(プラン9)は、フォルダを簡単に共有するために使用できます。)
Sambaのその他の問題は、フォルダーの共有だけでなく、プリンターの共有、ユーザーのマッピングなども行うことです。必要なのは、1つ(または複数?)のフォルダーをWindowsゲストと共有することだけです。
Windowsゲストで動作するQEMUの代替フォルダー共有方法はありますか?
または、非常に限られた機能セットに制限してQEMUに統合するようにSambaを構成する方法はありますか?すべきこと:
- ネットワーク内のすべての人がフォルダにアクセスできるわけではありません。
- ローカルユーザーが含まれます(可能な場合)。
- 他の機能(プリンタ共有)を提供しないでください。
- ユースケース:gitディレクトリをWindowsに公開し、Windowsでコンパイルして、分析にLinuxを使用します。
- 許容可能な速度で、Windowsはvirtio-scsiとvirtio-netを使用します。
- LinuxホストのフォルダをWindows7ゲストと共有できるようにします。
承認された回答:
QEMUの組み込みSambaサービス
機能していない-net user,smb
オプションは、新しいSambaバージョン(> =4)との非互換性が原因で発生しました。これはQEMUv2.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は、後者の2つのパッチをJessieに存在する2.1 + dfsg-6にバックポートしました。)
使用法
1つのフォルダを\10.0.2.4qemu
としてエクスポートできます ユーザーネットワーキングを使用する場合:
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プロセスの標準の入力/出力/エラーを介して行われます。これが、新しいデーモンが失敗した理由です。プロトコルメッセージではなく、エラーメッセージがパイプに書き込まれます。
この操作方法により、デーモンはホストポートでリッスンしないため、ゲストのみがアクセスできます。そのため、ネットワーク内の他のクライアントやローカルユーザーでさえ、このデーモンを使用してフォルダにアクセスすることはできません。
関連:Windows 7 – Windows Updateの構成の失敗変更を元に戻すハング/スタック?QEMU v2.2.0プリンター共有は、Samba構成によって完全に無効になっているため、ここで別の心配がなくなります。
速度はネットワークアダプタによって異なるため、virtio netkvm
を使用することをお勧めします Windowsでのドライバ。
また、デーモンはその絶対パス(通常は/usr/sbin/smbd
)によって実行されることに注意してください。 )コンパイル時に指定されたとおり(--smbd
を使用) オプション)。新しいバイナリを試す必要があるとき、またはsmbd
を挿入する必要があるときはいつでも 、そのパスでファイルを変更する必要があります。
その他の注意事項
実行可能ファイル(*.exe
)はホスト上で実行可能である必要があります(chmod +x FILE
)ゲストが実行権限を持つため。任意のファイルの実行を許可するには、acl allow execute always = True
を追加します 共有するオプション。
例読み取り専用 任意のファイルの実行を可能にするsmb.conf構成(QEMU v2.2.0に基づく):
... [qemu] path=/home/peter/windows read only=yes guest ok=true force user=peter acl allow execute always = True