Общая папка между гостевым компьютером QEMU Windows и хостом Linux

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

В документации предлагается открыть сервер Samba, работающий где-то в сети, или использовать -net user,smb=/path/to/folder для запуска сервера samba.

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

Другие проблемы с Samba заключаются в том, что он не ограничивается общим доступом к папкам, он также использует общий доступ к принтерам, сопоставление пользователей и whatsnot. Все, что мне нужно – обмениваться одной (или более?) Папками с гостевой ОС Windows.

Существует ли альтернативный способ обмена папками для QEMU, который работает с гостевой ОС Windows?

Или есть способ настроить Samba, чтобы ограничить себя очень ограниченным набором функций и интегрировать его в QEMU? Должно:

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

One Solution collect form web for “Общая папка между гостевым компьютером QEMU Windows и хостом Linux”

Встроенная служба Samba QEMU

-net user,smb вариант -net user,smb был вызван несовместимостью с более новыми версиями Samba (> = 4). Это исправлено в QEMU v2.2.0 и новее с этими изменениями:

  • b87b8a8 slirp / smb: переместить каталог ncalrpc в tmp (начиная с версии 2.1)
  • 44d8d2b net / slirp: указать logbase для smbd (начиная с версии 2.0)
  • 7912d04 slirp / smbd: изменить / установить несколько параметров в сгенерированном smbd.conf (поскольку v2.2.0 также отключает принтер)

(Debian предоставил последние два патча в 2.1 + dfsg-6, который присутствует в Jessie.)

Применение

Вы можете экспортировать одну папку как \\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, так что здесь еще одно беспокойство.

Скорость зависит от сетевого адаптера, поэтому рекомендуется использовать драйвер virtio netkvm под Windows.

Также обратите внимание, что демон выполняется по его абсолютному пути (обычно /usr/sbin/smbd ), указанному во время компиляции (с использованием опции --smbd ). Всякий раз, когда вам нужно попробовать новый бинарный или interpose smbd , вам нужно будет изменить файл по этому пути.

Другие оговорки

Исполняемые файлы ( *.exe ) должны быть исполняемыми на хосте ( chmod +x FILE ) для гостя, чтобы иметь разрешения на выполнение. Чтобы разрешить выполнение любого файла, добавьте acl allow execute always = True для общего ресурса.

Пример конфигурации smb.conf для чтения, которая позволяет выполнять любой файл (на основе QEMU v2.2.0):

 ...
 [QEMU]
 path = / home / peter / windows
 только для чтения = да
 guest ok = true
 force user = peter
 acl allow execute always = True
  • Безопасные символы Windows из Linux
  • Какие шрифты, предварительно установленные в Linux, такие же, как в Windows 7+?
  • racoon IPSec / L2TP Client
  • Setuid не работает для моей программы Windows, размещенной на сервере Linux
  • Эквивалент полного управления, изменения и записи в Linux
  • Как отобразить man-страницу с groff в / на msysgit?
  • Как перенести виртуальную машину IDE в виртуальную виртуальную машину?
  • Свежая установка Windows 7 с USB на машине с Ubuntu и Windows 7
  • grub2 ушел каждый раз, когда я загружаю Windows 10
  • Как я могу запретить Windows переписывать GRUB при использовании устройства с двойной загрузкой
  • Преимущества символических ссылок на ярлыки стиля Windows
  • Linux и Unix - лучшая ОС в мире.