Di masa lalu saya telah menggunakan Virtual Box yang memiliki dukungan yang sangat baik untuk berbagi folder di host dengan tamu Windows. Saya mencari fungsi serupa untuk QEMU.
Dokumentasi menyarankan untuk mengekspos server Samba berjalan di suatu tempat di jaringan, atau menggunakan -net user,smb=/path/to/folder
untuk memulai server samba.
Saya tidak beruntung dengan -net user,smb
opsi QEMU. Yang dilakukannya hanyalah memulai smbd
(yang bertentangan dengan layanan lain yang berjalan secara lokal karena konflik port). Cukuplah untuk mengatakan, ini tidak dapat digunakan, terutama dengan beberapa tamu dalam pikiran. (Untuk Linux, -virtfs
(Paket 9) dapat digunakan untuk berbagi folder dengan mudah.)
Masalah lain dengan Samba adalah tidak terbatas pada berbagi folder, tetapi juga berbagi printer, pemetaan pengguna dan yang lainnya. Yang saya butuhkan adalah berbagi satu (atau lebih?) Folder dengan tamu Windows.
Apakah ada metode berbagi folder alternatif untuk QEMU yang berfungsi dengan tamu Windows?
Atau adakah cara untuk mengkonfigurasi Samba untuk membatasi dirinya pada serangkaian fitur yang sangat terbatas dan mengintegrasikannya ke dalam QEMU? Itu harus:
- Tidak semua orang di jaringan harus dapat mengakses folder.
- pengguna lokal termasuk (jika layak).
- Tidak menyediakan fungsionalitas lain (berbagi printer).
- Use case: mengekspos direktori git ke Windows, kompilasi di Windows dan gunakan Linux untuk analisis.
- Memiliki kecepatan yang dapat diterima, Windows menggunakan virtio-scsi dan virtio-net.
- Mampu membagikan folder dari host Linux dengan tamu Windows 7.
sumber
-virtfs
berfungsi dengan baik (lihat juga pertanyaan ini), tapi saya tidak mengetahui driver 9p untuk Windows.Jawaban:
Layanan Samba bawaan QEMU
Opsi tidak berfungsi
-net user,smb
disebabkan oleh ketidakcocokan dengan versi Samba yang lebih baru (> = 4). Ini diperbaiki di QEMU v2.2.0 dan yang lebih baru dengan perubahan ini:(Debian telah meng-backport dua patch terakhir ke 2.1 + dfsg-6 yang ada di Jessie.)
Pemakaian
Anda dapat mengekspor satu folder seperti
\\10.0.2.4\qemu
saat menggunakan jaringan Pengguna:Ketika QEMU berhasil dimulai dengan opsi-opsi ini,
/tmp/qemu-smb.*-*/
direktori baru akan dibuat berisi asmb.conf
. Jika Anda cukup cepat, maka file ini dapat dimodifikasi untuk membuat jalur hanya baca atau mengekspor lebih banyak folder.Modus operasi
Daemon samba dijalankan setiap kali port 139 atau 445 diakses melalui jaringan "pengguna". Komunikasi terjadi melalui input / output / kesalahan standar dari proses smbd. Ini adalah alasan mengapa daemon baru gagal, ia akan menulis pesan kesalahannya ke pipa bukannya pesan protokol.
Karena metode operasi ini, daemon tidak akan mendengarkan pada port host, dan oleh karena itu hanya akan dapat diakses oleh tamu. Jadi klien lain dalam jaringan dan bahkan pengguna lokal tidak dapat mengakses folder menggunakan daemon ini.
Karena berbagi printer QEMU v2.2.0 sepenuhnya dinonaktifkan melalui konfigurasi samba, jadi kekhawatiran lain hilang di sini.
Kecepatannya tergantung pada adapter jaringan, jadi disarankan untuk menggunakan driver virtio
netkvm
di Windows.Perhatikan juga bahwa daemon dijalankan oleh path absolutnya (biasanya
/usr/sbin/smbd
) seperti yang ditentukan pada waktu kompilasi (menggunakan--smbd
opsi). Setiap kali Anda perlu mencoba biner atau selingan barusmbd
, Anda perlu memodifikasi file di jalur itu.Peringatan lainnya
Executables (
*.exe
) harus dapat dieksekusi pada host (chmod +x FILE
) agar tamu dapat memiliki izin. Untuk memungkinkan eksekusi file apa pun, tambahkanacl allow execute always = True
opsi ke share.Contoh konfigurasi smb.conf read-only yang memungkinkan eksekusi file apa pun (berdasarkan QEMU v2.2.0):
sumber
\\10.0.2.4\qemu
. Akhir-akhir ini saya telah melewatkan langkah itu dan membuka kata path langsung dari dialog Run.Pada tahun 2018 cara sederhana untuk berbagi folder antara host Linux & mesin virtual Windows adalah mengaktifkan RDP di Windows
guest
& terhubung kevm
dengan Remmina Remote Desktop Client & mengaktifkan Shared Folder:Ini membuat folder di bawah PC ini ( folder bersama di Linux
hostname
) &\\tsclient\shared-folder-name
jaringan berbagi di dalamnyaguest
. Anda juga dapat memetakan drive jaringan:Solusi ini tidak perlu
samba
berjalan.Diuji di bawah
libvirt
/virt-manager
tetapi harus bekerja dengan virtualisasi apa pun.sumber
xfreerdp /drive:shared-folder-name,/home/user/shared
pilihan harus bekerja juga. Referensi kode sumber: Konfigurasi Remmina , kode perpustakaan FreeRDP .