QEMUに組み込まれたSambaサービス

QEMUに組み込まれたSambaサービス

私は過去にVirtual Boxを使ったことがあり、ホストのフォルダをWindowsゲストと共有する機能をすばやくサポートしています。 QEMUに似た機能を探しています。

この資料では、ネットワークのどこかで実行されているSambaサーバーを公開したり、-net user,smb=/path/to/folderSambaサーバーを起動したりすることをお勧めします。

私はQEMUを選択していません-net user,smb。それがすることは始まりですsmbd(ポートの競合のためにローカルで実行されている他のサービスと競合します)。確かに、これは特に複数のゲストを検討するときには使用できません。 (Linuxの場合-virtfs(Plan 9)を使用すると、フォルダを簡単に共有できます。)

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

Windowsクライアントで利用可能なQEMU用の代替フォルダを共有する方法はありますか?

それとも、Sambaを非常に限られた機能セットに制限し、それをQEMUに統合するように設定する方法はありますか?それは次のようになります。

  • ネットワーク内の誰もがフォルダにアクセスできるわけではありません。
  • 可能であれば、ローカルユーザーを含めてください。
  • アドイン(プリンタ共有)は提供されていません。
  • ユースケース:gitディレクトリをWindowsに公開し、Windowsでコンパイルし、Linuxを使用して分析します。
  • 許容できる速度があり、Windowsではvirtio-scsiとvirtio-netを使用します。
  • Linux ホストのフォルダを Windows 7 ゲストと共有する機能。

答え1

QEMUに組み込まれたSambaサービス

-net user,smbこのオプションは、最新のSambaバージョン(> = 4)との互換性がないため機能しません。この問題は、QEMU v2.2.0 以降で次の変更で解決されました。

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

使用法

\\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設定で完全に無効になるため、心配する必要はありません。

速度はネットワークアダプタによって異なりますので、お勧めします。バーティオnetkvmドライバーWindowsで。

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

その他の注意事項

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

はい読み取り専用smb.conf設定を使用すると、すべてのファイルを実行できます(QEMU v2.2.0ベース)。

...
[qemu]
パス=/ホーム/ピーター/ウィンドウ
読み取り専用=はい
良い顧客=事実
強制ユーザー=ピーター
acl 常に実行を許可 = True

答え2

存在する2018異なるユーザー間でフォルダを共有する簡単な方法Linuxオーナー&Windows仮想マシンは〜できるようにするリモート開発計画Windowsでguest接続vmRemminaリモートデスクトップクライアント&共有フォルダを有効にする:

レミナRDP設定

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

Windowsゲストフォルダの共有

  • このソリューションはいいえ実行する必要がありますsamba

  • libvirt/でテストされていますが、virt-managerすべての仮想化で動作する必要があります。

答え3

匿名性を使用して簡単なタスク設定を完了しました。ネットワークファイルシステム出口。かかる「NFSサービス」を有効にするWindowsクライアントでregeditを使用して一致するDWORD値を設定しますAnonymousUidAnonymousGidComputer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default

その後、command.comコマンドでマウントできますmount -o anon \\10.10.11.11\mnt\diskx\nfsshare Z:。ここで、10.10.11.11はLinuxホストのIPアドレスであり、\mnt\diskx\nfsshare定義されたエクスポートパスです/etc/exports

バラよりスクリーンショットで詳細な説明

関連情報