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


24

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

ドキュメントでは、ネットワーク内のどこかで実行されているSambaサーバーを公開するか、またはを使用し-net user,smb=/path/to/folderてsambaサーバーを起動することを推奨しています。

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

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

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

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

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


1
@CiroSantilli包子露宪六四事件法轮功この質問にはLinuxがタグ付けされており、-virtfsうまく動作します(この質問もご覧ください)が、Windows用の9pドライバーについては知りません。
-Lekensteyn

はい、それはだまされている、または関連しているとは言いません。
Ciro Santilli新疆改造中心法轮功六四事件

回答:


14

QEMUの組み込みSambaサービス

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

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

使用法

\\10.0.2.4\qemuユーザーネットワーキングを使用する場合と同じように、1つのフォルダーをエクスポートできます。

qemu-system-x86_64 \
    -net user,smb=/absolute/path/to/folder \
    -net nic,model=virtio \
    ...

これらのオプションでQEMUが正常に開始されると、/tmp/qemu-smb.*-*/を含む新しいディレクトリが作成されsmb.confます。十分に高速であれば、このファイルを変更してパスを読み取り専用にするか、さらにフォルダーをエクスポートできます。

動作モード

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

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

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

速度はネットワークアダプターによって異なるため、Windowsでvirtio netkvmドライバーを使用することをお勧めします。

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

その他の注意事項

実行可能ファイルは、( *.exe)(ホスト上で実行可能でなければならないchmod +x FILEゲストが実行権限を持っているため)。任意のファイルの実行を許可するacl allow execute always = Trueには、共有にオプションを追加します。

任意のファイルの実行を許可する読み取り専用の smb.conf構成の例(QEMU v2.2.0に基づく):

...
[qemu]
path = / home / peter / windows 
read only = yes
ゲストok = true
force user = peter 
acl allow execute always = True

このオプションを使用しましたが、読み取りと書き込みの両方のアクセスが必要です。qemuサービスを再起動し、それに応じてconfを更新しました。Windowsゲストのエクスプローラーのネットワークフォルダーに何も表示されません。また、この場合、ホストIP(10.0.2.4であると想定しています)をここで見つけるにはどうすればよいですか?このNICのゲストIPは10.0.2.15でした。@Lekensteyn-アイデアはありますか?
tsar2512

@ tsar2512通常、Explorerにアクセスしてから、Map Network Driveを使用してに文字を割り当て\\10.0.2.4\qemuます。最近、そのステップをスキップして、実行ダイアログから直接このパスを開きました。
-Lekensteyn

6

では2018年の間でフォルダを共有するための簡単な方法のLinuxホスト&Windowsの仮想マシンがすることです有効RDPを Windowsのguest&に接続vmしてRemminaリモートデスクトップクライアント:&共有フォルダを有効にします

Remmina RDP設定

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

Windowsゲストフォルダー共有

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

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


興味深い手法であるファイルシステムリダイレクトはRDP機能のようです。xfreerdp /drive:shared-folder-name,/home/user/sharedオプションも同様に動作するはずです。ソースコード参照:Remmina構成FreeRDPライブラリコード
-Lekensteyn

これは、潜在的な攻撃者の危険がない安全なソリューションですか?
デイブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.