GNU/Linux >> Linux の 問題 >  >> Linux

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

過去に、ホスト上のフォルダーを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

Linux
  1. Linux から Windows 共有フォルダにアクセスする方法

  2. 共有フォルダー内の新しいファイルを監視するスクリプト (Windows ホスト、Linux ゲスト)

  3. /の間のコンテンツフォルダの差分コピー。および /* Linux では

  1. Linux – LinuxホストとWindowsゲスト間でファイルを共有しますか?

  2. Ubuntu 20.04のWindowsホスト共有フォルダー?

  3. Samba を使用して Linux ゲストのフォルダーを VirtualBox の Windows ホストと共有する

  1. WindowsとLinuxの間にSSH接続を確立します

  2. LinuxとWindowsコンピューター間でファイルを共有する

  3. Hyper-V ゲストとホスト間のコピー アンド ペースト