GNU/Linux >> Belajar Linux >  >> Linux

Windows – Folder Bersama Antara Qemu Windows Guest dan Linux Host?

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 yang berjalan di suatu tempat di jaringan, atau gunakan -net user,smb=/path/to/folder untuk memulai server samba.

Saya tidak beruntung dengan -net user,smb pilihan 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 mempertimbangkan banyak tamu. (Untuk Linux, -virtfs (Plan 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 lainnya. Yang saya butuhkan hanyalah 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 mengonfigurasi Samba untuk membatasi dirinya pada serangkaian fitur yang sangat terbatas dan mengintegrasikannya ke dalam QEMU? Seharusnya:

  • Tidak semua orang di jaringan dapat mengakses folder tersebut.
  • termasuk pengguna lokal (jika memungkinkan).
  • Tidak menyediakan fungsi lain (berbagi printer).
  • Kasus penggunaan:ekspos direktori git ke Windows, kompilasi di Windows dan gunakan Linux untuk analisis.
  • Memiliki kecepatan yang dapat diterima, Windows menggunakan virtio-scsi dan virtio-net.
  • Dapat berbagi folder dari host Linux dengan tamu Windows 7.

Jawaban yang Diterima:

Layanan Samba bawaan QEMU

-net user,smb yang tidak berfungsi opsi ini disebabkan oleh ketidakcocokan dengan versi Samba yang lebih baru (>=4). Ini diperbaiki di QEMU v2.2.0 dan yang lebih baru dengan perubahan berikut:

  • b87b8a8 slirp/smb:Pindahkan direktori ncalrpc ke tmp (sejak v2.1.0)
  • 44d8d2b net/slirp:tentukan logbase untuk smbd (sejak v2.2.0)
  • 7912d04 slirp/smbd:memodifikasi/mengatur beberapa parameter di smbd.conf yang dihasilkan (sejak v2.2.0 juga menonaktifkan printer)

(Debian telah mem-backport dua patch terakhir ke 2.1+dfsg-6 yang ada di Jessie.)

Penggunaan

Anda dapat mengekspor satu folder sebagai \10.0.2.4qemu saat menggunakan Jaringan pengguna:

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

Ketika QEMU berhasil dimulai dengan opsi ini, /tmp/qemu-smb.*-*/ baru direktori akan dibuat berisi smb.conf . Jika Anda cukup cepat, maka file ini dapat dimodifikasi untuk membuat jalur hanya-baca atau mengekspor lebih banyak folder.

Mode operasi

Daemon samba dijalankan setiap kali port 139 atau 445 diakses melalui jaringan "pengguna". Komunikasi terjadi melalui input/output/kesalahan standar dari proses seseorang. Inilah alasan mengapa daemon yang lebih baru gagal, ia akan menulis pesan kesalahannya ke pipa alih-alih pesan protokol.

Karena metode operasi ini, daemon tidak akan mendengarkan pada port host, dan oleh karena itu hanya dapat diakses oleh tamu. Jadi klien lain dalam jaringan dan bahkan pengguna lokal tidak dapat memperoleh akses ke folder menggunakan daemon ini.

Terkait:Windows 7 – Kegagalan Mengonfigurasi Pembaruan Windows Mengembalikan Perubahan Hang / macet?

Karena berbagi printer QEMU v2.2.0 sepenuhnya dinonaktifkan melalui konfigurasi samba, maka kekhawatiran lain hilang di sini.

Kecepatan tergantung pada adaptor jaringan, jadi disarankan untuk menggunakan virtio netkvm driver di bawah Windows.

Perhatikan juga bahwa daemon dijalankan oleh jalur absolutnya (biasanya /usr/sbin/smbd ) sebagaimana ditentukan pada waktu kompilasi (menggunakan --smbd pilihan). Kapan pun Anda perlu mencoba biner baru atau menyisipkan smbd , Anda perlu memodifikasi file di jalur tersebut.

Peringatan lainnya

Dapat dieksekusi (*.exe ) harus dapat dieksekusi pada host (chmod +x FILE ) agar tamu memiliki izin eksekusi. Untuk mengizinkan eksekusi file apa pun, tambahkan acl allow execute always = True opsi untuk berbagi.

Contoh hanya-baca konfigurasi smb.conf yang memungkinkan eksekusi file apa pun (berdasarkan 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. Salin-tempel antara tamu Hyper-V dan tuan rumah

  2. skrip untuk memantau file baru di folder bersama (host windows, tamu linux)

  3. perbedaan salin konten folder antara /. dan /* di linux

  1. Linux – Bagikan File Antara Linux Host Dan Windows Guest?

  2. Folder Bersama Host Windows Di Ubuntu 20.04?

  3. Bagaimana Mengakses Folder Bersama Windows dari Linux?

  1. Buat koneksi SSH antara Windows dan Linux

  2. Bagikan file antara komputer Linux dan Windows

  3. Menggunakan Samba untuk berbagi folder dari tamu Linux dengan host Windows di VirtualBox