В прошлом я использовал Virtual Box, который очень хорошо поддерживает совместное использование папки на хосте с гостем Windows. Я ищу похожую функциональность для QEMU.
Документация предлагает выставить сервер Samba, работающий где-то в сети, или использовать его -net user,smb=/path/to/folder
для запуска сервера Samba.
Мне не повезло с -net user,smb
вариантом QEMU. Все, что он делает, smbd
запускается (что конфликтует с другой службой, работающей локально из-за конфликта портов). Достаточно сказать, что это непригодно, особенно с учетом нескольких гостей. (Для Linux -virtfs
(Plan 9) можно использовать для простого обмена папками.)
Другие проблемы с Samba заключаются в том, что он не ограничивается общим доступом к папкам, он также обеспечивает общий доступ к принтерам, отображение пользователей и тому подобное. Все, что мне нужно, это поделиться одной (или несколькими?) Папками с гостем Windows.
Существует ли альтернативный метод общего доступа к папкам для QEMU, который работает с гостем Windows?
Или есть способ настроить Samba, чтобы ограничить себя очень ограниченным набором функций и интегрировать его в QEMU? Должно:
- Не каждый в сети должен иметь доступ к папке.
- локальные пользователи включены (если это возможно).
- Не предоставлять другие функции (общий доступ к принтеру).
- Вариант использования: открыть каталог git для Windows, скомпилировать его в Windows и использовать Linux для анализа.
- Имея приемлемую скорость, Windows использует virtio-scsi и virtio-net.
- Иметь общий доступ к папке с хоста Linux с гостем Windows 7.
источник
-virtfs
прекрасно работает (см. Также этот вопрос), но я не знаю о драйвере 9p для Windows.Ответы:
QEMU встроенный сервис Samba
Неработающая
-net user,smb
опция была вызвана несовместимостью с более новыми версиями Samba (> = 4). Это исправлено в QEMU v2.2.0 и новее с этими изменениями:(Debian перенес последние два патча в 2.1 + dfsg-6, который присутствует в Jessie.)
использование
Вы можете экспортировать одну папку, как
\\10.0.2.4\qemu
при использовании сети пользователя:Когда QEMU будет успешно запущен с этими опциями,
/tmp/qemu-smb.*-*/
будет создан новый каталог, содержащийsmb.conf
. Если вы достаточно быстры, то этот файл можно изменить, чтобы сделать пути доступными только для чтения или экспортировать больше папок.Режим работы
Демон samba выполняется всякий раз, когда к портам 139 или 445 обращаются через «пользовательскую» сеть. Связь происходит через стандартный ввод / вывод / ошибку процесса smbd. Это причина того, что более новые демоны потерпели неудачу, он записывает свое сообщение об ошибке в канал, а не сообщения протокола.
Благодаря такому методу работы демон не будет прослушивать порты хоста и, следовательно, будет доступен только гостю. Таким образом, другие клиенты в сети и даже локальные пользователи не могут получить доступ к папкам с помощью этого демона.
Поскольку общий доступ к принтеру QEMU v2.2.0 полностью отключен через конфигурацию samba, то здесь еще одно беспокойство.
Скорость зависит от сетевого адаптера, поэтому рекомендуется использовать драйвер virtio
netkvm
под Windows.Также обратите внимание, что демон выполняется по его абсолютному пути (обычно
/usr/sbin/smbd
), как указано во время компиляции (используя--smbd
опцию). Всякий раз, когда вам нужно попробовать новый бинарный файл или вставитьsmbd
, вам нужно будет изменить файл по этому пути.Другие предостережения
Исполняемые файлы (
*.exe
) должны быть исполняемыми на хосте (chmod +x FILE
), чтобы гость имел права на выполнение. Чтобы разрешить выполнение любого файла, добавьтеacl allow execute always = True
параметр в общий ресурс.Пример конфигурации smb.conf только для чтения, которая позволяет выполнять любой файл (на основе QEMU v2.2.0):
источник
\\10.0.2.4\qemu
. В последнее время я пропустил этот шаг и открыл указанный путь непосредственно из диалогового окна «Выполнить».В 2018 году простым способом совместного использования папки между хостом Linux и виртуальной машиной Windows является включение RDP в Windows
guest
и подключение к немуvm
с помощью клиента удаленного рабочего стола Remmina и включение общей папки:Это создает папку в разделе « Этот компьютер» ( общая папка в Linux
hostname
) и\\tsclient\shared-folder-name
сетевой ресурс внутриguest
. Вы также можете подключить сетевой диск:Это решение не требует
samba
запуска.Протестировано в
libvirt
/,virt-manager
но должно работать с любой виртуализацией.источник
xfreerdp /drive:shared-folder-name,/home/user/shared
Вариант должен работать. Ссылки на исходный код: конфигурация Remmina , код библиотеки FreeRDP .