Спільна папка між гостем QEMU Windows та хостом Linux


24

Раніше я використовував Virtual Box, який дуже добре підтримує обмін папкою на хості з гостем Windows. Я шукаю подібну функціональність для QEMU.

Документація пропонує викрити сервер Samba, який працює десь у мережі, або використовувати -net user,smb=/path/to/folderдля запуску самба-сервера.

Мені не пощастило з -net user,smbвибором QEMU. Все, що вона робить, починається smbd(що конфліктує з іншою службою, яка працює локально через конфлікт із портами). Досить сказати, що це непридатно, особливо якщо на увазі декілька гостей. (Для Linux, -virtfs(План 9) можна використовувати для простого обміну папками.)

Інші проблеми Samba полягають у тому, що він не обмежується спільним доступом до папок, він також надає спільний доступ до принтерів, картографування користувачів та багато чого іншого. Все, що мені потрібно - це поділитися однією (або більше?) Папками з гостем Windows.

Чи існує альтернативний метод спільного використання папок для QEMU, який працює з гостем Windows?

Або є спосіб налаштувати Samba, щоб обмежитися дуже обмеженим набором функцій та інтегрувати його в QEMU? Слід:

  • Не всі в мережі повинні мати доступ до папки.
  • включені місцеві користувачі (якщо можливо).
  • Не надавати інших функціональних можливостей (спільний доступ до принтера).
  • Використовуйте випадок: відкрийте каталог git в Windows, компілюйте його в Windows і використовуйте Linux для аналізу.
  • Маючи прийнятну швидкість, Windows використовує virtio-scsi та virtio-net.
  • Бути в змозі поділитися папкою з хостом Linux з гостем Windows 7.

більше питання щодо агностики ОС: superuser.com/questions/628169/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 六四

1
@CiroSantilli 包子 露 宪 六四 事件 法轮功 Це питання позначене Linux, де він -virtfsчудово працює (див. Також це питання), але я не знаю драйвера 9p для Windows.
Лекенштейн

так, не кажучи, що це дупа або що-небудь, просто пов'язане.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Відповіді:


14

Вбудований сервіс Samba QEMU

Непрацюючий -net user,smbваріант був викликаний несумісністю з новішими версіями Samba (> = 4). Це виправлено у QEMU v2.2.0 та новіших із цими змінами:

(Debian підтримав останні два патчі до 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. Якщо ви досить швидкі, то цей файл можна змінити, щоб зробити шляхи лише для читання або експортувати більше папок.

Режим роботи

Демон самби виконується кожного разу, коли порти 139 або 445 отримують доступ через мережу "користувача". Зв'язок відбувається за допомогою стандартного вводу / виводу / помилки процесу smbd. Це причина, чому нові демон демонстрував збій, він писав би повідомлення про помилку на трубу замість протокольних повідомлень.

Завдяки такому способу роботи демон не слухатиме хостів на портах, а тому буде доступний лише для гостя. Тож інші клієнти в мережі та навіть місцеві користувачі не можуть отримати доступ до папок, що використовують цей демон.

Оскільки обмін принтером QEMU v2.2.0 повністю вимкнено через конфігурацію samba, то тут ще немає ніяких проблем.

Швидкість залежить від мережевого адаптера, тому рекомендується використовувати драйвер virtionetkvm під 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 = так
гість ок = правда
force user = peter 
acl дозволяють виконувати завжди = True

Я використав цю опцію, мені потрібен і доступ для читання-запису. Я перезапустив службу qemu і відповідно оновив конф. Я нічого не бачу в мережевих папках в Провіднику в Windows guest. Також як я можу знайти в цьому випадку IP хоста (я вважаю, що це 10.0.2.4)? Мій гостьовий IP для цього НІК був 10.0.2.15. @Lekensteyn - якісь ідеї?
цар2512

@ tsar2512 Зазвичай я переходжу до Explorer, а потім використовую Map Network Drive для призначення листа \\10.0.2.4\qemu. Останнім часом я пропустив цей крок і відкрив вказаний шлях прямо з діалогового вікна Запуск.
Лекенштейн

6

У 2018 році простий спосіб розділити папку між Linux хостом і Windows , віртуальною машиною, щоб включити RDP в Windows , guestі підключитися до vmз Remmina Remote Desktop Client і включити загальну папку:

Налаштування RDP Remmina

Це створює папку під цим ПК ( спільна папка в Linuxhostname ) та \\tsclient\shared-folder-nameмережевий ресурс всередині guest. Ви також можете зіставити мережевий диск:

Папка "Гість Windows" ділиться

  • Це рішення не вимагає sambaзапуску.

  • Тестований під libvirt/, virt-managerале повинен працювати з будь-якою віртуалізацією.


Цікавою технікою є те, що перенаправлення файлової системи є функцією RDP. xfreerdp /drive:shared-folder-name,/home/user/sharedВаріант повинен працювати. Код посилання: Джерело конфігурації Remmina , FreeRDP код бібліотеки .
Лекенштейн

Це безпечне рішення без небезпеки потенційних нападників?
Дейв
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.