LINUX.ORG.RU

Shared папка с Windows 10 на Virt Manager

 ,


7

3

Недавно было высказано мнение, что Virtualbox фуфло и нет никакого смысла в нем даже для запуска Windows в качестве гостя.

Я задумался, и решил пропробовать поднять Windows 10 гость через Virt Manager.

И уперся в казалось бы, простейший вопрос - как создать shared папку? Кто использует винду на KVM, подскажите, как вы делаете.

ИТАК, РЕШЕНИЕ!!! Со встроенной в qemu самбой. Есть в треде, но там пропущен один пункт и оно не работает. Здесь - полное.

  1. Создаем виртуальную машину с Win10 в Virt Manager, все по дефолту.

  2. Удаляем сетевую карту (дефолтную) из оборудования.

  3. Включаем редактирование XML в настройках Virt Manager, переходим на вкладку XML и добавляем:

В тег <domain>

xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0"

И одновременно с этим - именно одновременно! Иначе никакие изменения сохраняться не будут! Меняем /path/to/folder на свой путь.

В конец перед </domain>

  <qemu:commandline>
    <qemu:arg value="-net"/>
    <qemu:arg value="nic"/>
    <qemu:arg value="-net"/>
    <qemu:arg value="user,smb=/path/to/folder>
  </qemu:commandline>
  1. Теперь сетевая карта и QXL устройство окажутся на одном слоте PCI, устраняем этот конфликт. Находим кусок и заменяем slot=«0x01» на slot=«0x03», как в примере ниже.
<video>
  <model type="qxl" ram="65536" vram="65536" vgamem="16384" heads="1" primary="yes"/>
  <alias name="video0"/>
  <address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0"/>
</video>
  1. В файле /etc/libvirt/qemu.conf
security_default_confied = 0
seccomp_sandbox = 0
security_driver = "none"
  1. Перезапуск systemctl libvirtd restart

7.После этого в винде:

Проводник -> Этот компьютер -> Подключить сетевой диск

на адрес

\\10.0.2.4\qemu

ВАЖНО!!! Чтобы был доступ не только на чтение, qemu должен иметь права на работу с расшаренной папкой. А через Virt Manager он запускается по умолчанию не от имени текущего пользователя! (В отличие от прямого запуска qemu_system из консоли, как многие тут любят, и с чем проблемы нет).

Исправляем это в /etc/libvirt/qemu.conf

user = "username"
group = "groupname"

где username, groupname это ваш текущий пользователь и группа, которому принадлежит расшариваемая папка!

Плюс к этому - есть способ через Virtio FS, расписан тут. Подключает папку как локальный диск, без всякой самбы, и с высокой производительностью. Но - там какие-то заморочки с правами на запись, я пока не разобрался, и в этом случае перестает работать Выключить -> Сохранить (состояние виртуалки).

Вот ссылка на источник, из которого брался процесс настройки для этого случая

https://libvirt.org/kbase/virtiofs.html

А кто неосилятор - тот может запустить системную самбу, вместо встроенной в Qemu и порадоваться красивому костылизму.

Ответ на: комментарий от post-factum

Потому что я за 10 лет попыток так и не понял этот кошмар с однострочником на полэкрана.

К тому же, при запуске из консоли qemu-system все то же самое - qemu не запускает самбу, никаких сообщений об ошибке нет.

James_Holden ()
Ответ на: комментарий от anonymous

Я уже давно понял, что не для меня. К сожалению я давно вышел из возраста, когда на десктопе запускал софт из консоли командами на полэкрана. А теперь мне работать надо, а ее страдать херотой. Благо, любая другая вириуалка элементарно работает без этого маразма с невозможностью за 2 дня полключить папку.

А вообще, я не понимаю в упор почему вы гордитесь совершенно бесполезными знаниями и умениями, и считаете обладание ими каким-то достижением. На самом деле это деградация, болото из-за которого линукс в той заднице на десктопе где ему с таким подходом к софту и место.

James_Holden ()
Ответ на: комментарий от anonymous

Я не знаю как еще объяснить. Мне не нужна самба (в гробу я ее видел кстати, но сейчас не об этом), мне нужна папка с хоста на госте.

Если для этого внутри автоматически при запуске виртуалки запускается самба и все само работает через нее - это меня устраивает. А поднимать самбу ради виртуалки я не вижу смысла. К тому же меня от ее конфигов тошнит.

James_Holden ()
Ответ на: комментарий от anonymous

Нет, я в целом понял как сделать, даже несколько вариантов. Проблема в том, что они не должны заметно проигрывать виртуалбоксу, иначе смысл.

Вот -net user,smb= отлично подходит, но жто не работает.

James_Holden ()
Ответ на: комментарий от James_Holden

А вот это уже крайне интересно

Аллилуйя! Ну коль ты уже коснулся мизинцем qemu/kvm, то устанавливай виртуалки в lvm тома. Не смей! Не смей использовать qcow образы. И тогда ты поймешь, сын, за что так любят qemu/kvm.

anonymous ()
Ответ на: комментарий от post-factum

Самба установлена.

Вот как запускается через virt manager, это из его лога.

LC_ALL=C \
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin \
HOME=/var/lib/libvirt/qemu/domain-1-win10 \
XDG_DATA_HOME=/var/lib/libvirt/qemu/domain-1-win10/.local/share \
XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain-1-win10/.cache \
XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain-1-win10/.config \
QEMU_AUDIO_DRV=spice \
/usr/bin/qemu-system-x86_64 \
-name guest=win10,debug-threads=on \
-S \
-object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-1-win10/master-key.aes \
-machine pc-q35-5.1,accel=kvm,usb=off,vmport=off,dump-guest-core=off \
-cpu SandyBridge,vme=on,vmx=on,pcid=on,hypervisor=on,arat=on,tsc-adjust=on,umip=on,arch-capabilities=on,xsaveopt=on,pschange>
-m 2000 \
-overcommit mem-lock=off \
-smp 2,sockets=2,cores=1,threads=1 \
-uuid 6754b7c8-6d0c-423a-8fc8-cdf70d106c4a \
-no-user-config \
-nodefaults \
-chardev socket,id=charmonitor,fd=30,server,nowait \
-mon chardev=charmonitor,id=monitor,mode=control \
-rtc base=localtime,driftfix=slew \
-global kvm-pit.lost_tick_policy=delay \
-no-hpet \
-no-shutdown \
-global ICH9-LPC.disable_s3=1 \
-global ICH9-LPC.disable_s4=1 \
-boot strict=on \
-device pcie-root-port,port=0x10,chassis=1,id=pci.1,bus=pcie.0,multifunction=on,addr=0x2 \
-device pcie-root-port,port=0x11,chassis=2,id=pci.2,bus=pcie.0,addr=0x2.0x1 \
-device pcie-root-port,port=0x12,chassis=3,id=pci.3,bus=pcie.0,addr=0x2.0x2 \
-device pcie-root-port,port=0x13,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x3 \
-device pcie-root-port,port=0x14,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x4 \
-device qemu-xhci,p2=15,p3=15,id=usb,bus=pci.2,addr=0x0 \
-device virtio-serial-pci,id=virtio-serial0,bus=pci.3,addr=0x0 \
-blockdev '{"driver":"file","filename":"/home/curufinwe/VirtualBox VMs/Win10/Win10.vdi","node-name":"libvirt-1-storage","aut>
-blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"vdi","file":"libvirt-1-storage"}' \
-device ide-hd,bus=ide.0,drive=libvirt-1-format,id=sata0-0-0,bootindex=1 \
-netdev tap,fd=32,id=hostnet0 \
-device e1000e,netdev=hostnet0,id=net0,mac=52:54:00:fd:1e:8a,bus=pci.1,addr=0x0 \
-chardev pty,id=charserial0 \
-device isa-serial,chardev=charserial0,id=serial0 \
-chardev spicevmc,id=charchannel0,name=vdagent \
-device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 \
-device usb-tablet,id=input0,bus=usb.0,port=1 \
-spice port=5900,addr=127.0.0.1,disable-ticketing,image-compression=off,seamless-migration=on \
-device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pcie.0,addr=0>
-device ich9-intel-hda,id=sound0,bus=pcie.0,addr=0x1b \
-device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 \
-chardev spicevmc,id=charredir0,name=usbredir \
-device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=2 \
-chardev spicevmc,id=charredir1,name=usbredir \
-device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=3 \
-device virtio-balloon-pci,id=balloon0,bus=pci.4,addr=0x0 \
-net user,smb=/home/curufinwe/Programs \
-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
-msg timestamp=on

James_Holden ()

@ls-h

Что я сделал. Пусть изначально у нас виртуалка в Virt Manager для Win10 с настройками по умолчанию.

  1. Я удалил сетевую карту (дефолтную) из оборудования.
  2. В XML добавил:
2.1 В тег <domain>
xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0"
2.2 В конец перед </domain>
  <qemu:commandline>
    <qemu:arg value="-net"/>
    <qemu:arg value="nic"/>
    <qemu:arg value="-net"/>
    <qemu:arg value="user,smb=/path/to/folder>
  </qemu:commandline>
  1. В файле /etc/libvirt/qemu.conf
security_default_confied = 0
seccomp_sandbox = 0
security_driver = "none"
  1. Перезапуск systemctl libvirtd restart

После этого в винде:

Проводник -> Этот компьютер -> Подключить сетевой диск

на адрес

\10.0.2.4\qemu

James_Holden ()
Последнее исправление: James_Holden (всего исправлений: 1)
Ответ на: комментарий от James_Holden

Что я сделал.

Спасибо. В принципе у меня на хосте samba есть и с ней вышло даже проще, чем с отдельной в qemu. С NFS тоже без проблем прошло, одну строку в конфиг и права на директорию поменять. Но меня больше всего заинтересовал вариант через virtio. Кстати, у тебя какая версия qemu? На Arch, по идеи, должна быть свежая и virtio-fs должно заработать. Скорость там однозначно больше, чем по samba или NFS. И, насколько я понимаю, шара будет выглядеть как локальный диск.

ls-h ★★★★ ()
Ответ на: комментарий от ls-h

Ну вот, это же совсем другое дело! Ну почему никто из защитников KVM и опускателей VirtualBox ни в одном треде сразу не мог об этом сказать.

@post-factum

Ведь это отличный, самый адекватный и удобный способ иметь общие папки! Не требуется никакой самбы, ни встроенной, ни внешней. Вообще красота, и диск как локальный - а в VirtualBox он сетевой, с сопутствующими проблемами.

У меня qemu 5.1.0. Все настроил, все работает, единственное - пишут что с 5.0 можно без NUMA, но Virt Manager без NUMA не дает сделать конфиг, пришлось с ней.

Итак, начнем утреннее воскресное богослужение секты Пердоликов Черной Консоли (ПКЧ).

  1. Раскомментируем memory_backing_dir по дефолту в /etc/libvirt/qemu.conf

  2. В XML конфиге модифицируем тег CPU, чтобы стало так

  <cpu mode="host-model" check="partial">
    <numa>
      <cell id="0" cpus="0-1" memory="2097152" unit="KiB" memAccess="shared"/>
    </numa>
  </cpu>
  1. Добавляем после <current memory …>
  <memoryBacking>
    <access mode='shared'/>
  </memoryBacking>
  1. В блок <devices> добавляем, заменяем путь на свой. Я добавлял через GUI устройство «файловая система», затем в XML добавил строчку <driver type="virtiofs"/>. Перед этим должна быть добавлена NUMA, иначе Virt Manager выдает ошибку.
    <filesystem type="mount" accessmode="passthrough">
      <driver type="virtiofs"/>
      <source dir="/path/to/dir"/>
      <target dir="home"/>
      <address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
    </filesystem>
  1. Запускаем винду. В диспетчере устройств появится устройство хранения данных без драйвера. Нажимаем «Обновить драйвер», подсовываем папку viofs/w10/amd64 с iso образа VirtIO (в Arch Linux этот iso ставится пакетом AURа). Ставится драйвер, появляется устройство VirtIO FS.

  2. Устанавливаем WinFSP.

  3. Папку viofs/w10/amd64 с iso диска копируем куда-нибудь, например в C:\Program Files.

  4. Создаем службу, которая будет монтировать диск. В консоли Администратора (cmd запущенная от имени администратора) вводим

sc create viofs binpath="C:\Program Files\viofs\w10\amd64\virtiofs.exe" type=own start=auto DisplayName="VirtioFS Driver"
  1. Запускаем эту службу, либо перезагружаем винду. В «Этот компьютер» появится диск с содержимым шареной папки.

  2. Во имя редхата, Торвальдса и святого RMS, админь!

James_Holden ()
Ответ на: комментарий от ls-h

Радость оказалась несколько преждевременной.

Во-первых, какие-то непонятки с правами - из винды доступ «только чтение». Ну это я думаю можно решить если разобраться.

Главное - с virtio-fs не работает функция «сохранить состояние виртуалки», которая для меня ключевая. Поэтому возвращаюсь на вариант со встроенной самбой.

James_Holden ()
Ответ на: комментарий от ls-h

Нет, все. Пошло это чертово корявое уродство нахрен! Это недоразумение создано только лишь чтобы издеваться над людьми.

Все эти шаги, которые я расписывал - они больше не работают. Не знаю почему. Не вносятся изменения в XML больше в этом дебильном Virt Manager. Все сношу и остаюсь на Virtualbox.

Всему же есть предел, два дня долбиться из-за элементарной функции которая должна делаться одной кнопкой и просто все это время потратить впустую…

James_Holden ()
Ответ на: комментарий от post-factum

Так я не могу юзать самбу - теперь изменения в XML, которые я делал для встроенной самбы - не вносятся. Хотя вот только что они вносились. Ну и зачем я все это расписывал как дурачок… Люди почитают, у них ничего не получится и только плеваться будут.

Запускать отдельную самбу - это бл%:?% не серьезно. Мне не нужна самба на ноутбуке. Мне нужна шареная папка. Долбаная папка, и я уже два дня блина пытаюсь это сделать! Вашу мать…

Запускать виртуалки из консоли либо скриптами на десктопе - я могу написать что это, но меня забанят. Хотя, пусть забанят, надоело все это дерьмо.

James_Holden ()
Ответ на: комментарий от post-factum

А мне вот интересно, чем ваш менеджмент там занимается?

Ну реально, ну вот, ну кааак? Ну даже если набрать самых дешевых индусов на оценку пользовательских качеств программных продуктов, чтобы они сравнили virt manager с конкурентами и написали предложения по улучшению.

Они же там войну и мир напишут за малые деньги и за короткий срок, если менеджеры не доверяют фидбеку от простых смертных.

anonymous ()
Ответ на: комментарий от James_Holden

А чо ты истеришь? Наслушался тут экспертов с красными глазами? (Это не про пост-фактума, это про «евангелистов» из интерентов, которые вещают о небывалых высотах качествах и легкости освоения линукса.

А так да. самый простой выход и дешевый по времени - прочитать туториал про самбу. Я тоже начал читать, а потом психанул откатился назад на винду. И тут как из союза в какой техасский супермаркет прилетел в 1987 году.

anonymous ()
Ответ на: комментарий от anonymous

самый простой выход и дешевый по времени - прочитать туториал про самбу

Ответ неверный. Самый простой выход - установить виртуалбокс. Там все это делается одной кнопкой и используется мной более 10 лет без нареканий.

Я тоже начал читать, а потом психанул откатился назад на винду.

Я про линукс ничего вообще-то не пишу. У меня линукс как основная система используется 16 лет как. Так что я бы попросил без подобных предложений.

Все претензии тут даже не к KVM и qemu, которые сами по себе - отличные приложения, особенно на серверах, а к Virt Manager.

Но как альтернативу виртуалбоксу я рассматриваю только Virt Manager. Консольные утилиты и баш скрипты вместо виртуалбокса - это просто вызывает у меня гомерический хохот. У меня тут не сервер и не хостинг, вообще-то. Это ноутбук, и софт на нем должен быть соответствующий - десктопный. Благо, в линуксе в таком софте недостатка нет.

James_Holden ()

Ох, вот и тема про похороникс и Х сервер появилась. Но блин, как его развивать, если ломается наглухо обратная совместимость, например, с карточками 2010 года, которые винда переваривает вполне сносно, с их DX10.

Это очень хорошо, что только патчат и патчат, иначе пришлось бы топать за непоняттно чем.

anonymous ()
Ответ на: комментарий от James_Holden

Я понимаю, что хочется клац-клац и збс, но чем твоё клац-клац в виртуалбоксе отличается от моего alt+enter для нового терминала, ctrl+r для поиска и «win»+enter чтобы запустить именно тот скрипт для виртуалки, который виндовый, — я не знаю. КМК, у меня выйдет быстрее даже.

post-factum ★★★★★ ()
Ответ на: комментарий от post-factum

Сравни клац-клац с состоянием когда нет ни скрипта, ни знания как его написать.

У VB кстати тоже есть консольный интерфейс. Некоторые вещи, например конверсия образов, делаются только через него

Midael ★★★★★ ()
Последнее исправление: Midael (всего исправлений: 1)
Ответ на: комментарий от post-factum

Да очень просто, ты этим занимаешься каждый день, а когда как баран пришел раз в год, увидел новые ворота и оппаньки, оно работает не так, как ожидается и как привык.

anonymous ()
Ответ на: комментарий от post-factum

Во-первых, любой шаг в сторону от уже настроенного ранее выливается в чтение манов, правку скриптов, а потом окажется с ошибкой ввел, разбираешься, исправляешь и так по кругу. А потом оказывается что оно вообще не работает, вот как у меня сегодня. Зачем это надо, если есть интуитивно-понятный GUI.

Во-вторых, дело не заканчивается на запуске виртуалки. Виртуалбокс имеет кучу GUI элементов для работы с уже запущенной, включения-выключения оборудования на лету, проброса устройств, индикации активности устройств, причем даже не сворачивая окно виртуалки. В Virt Manager я даже не понял как свернуть окно не выходя из полноэкранного режима.

В третьих, виртуалбокс предоставляет пусть корявое, но 3D ускорение на виртуалке даже с виндой и даже с DirectX без всякого проброса видеокарты, которой у меня во-первых нет, во-вторых возможности проброса нет.

В четвертых, виртуалбокс хранит настройки и образы простым, понятным и предсказуемым образом, все вместе в соответствующей папке в /home/user/. При необходимости она просто копируется и переносится на другую машину, и опа оттуда запускается виртуалка. Пока я нашел XML конфиги создаваемые libvirt у меня маты кончились. А образы дисков еще в другом, совершенно не ожидаемом месте оказались.

То есть я пока вообще не понял, а какие преимущества оно предоставляет на десктопе чтобы всерьез рассматривать переход с виртуалбокса, который выигрывает по всем пунктам, кроме проброса видюх.

James_Holden ()
Ответ на: комментарий от post-factum

Не ну а зачем я тогда свой скрипт публикую?

Это очень характерный пример. Вот беру я этот скрипт - и что? И ничего. Мне надо его переписать под свои реалии. А для этого надо полностью заранее знать, как пишется скрипт, знать все опции qemu. Но если я это знаю, мне не нужен чужой скрипт.

James_Holden ()
Ответ на: комментарий от post-factum

Ну дык это, вот твои знания и используют. Но не все же знаю, что ты на ЛОРе обитаешь :)))

Короче, у вас там путают корпорации, где на 1 задачу - одна голова с руками и малый бизнес с его попрыгунами-контракторами, типа нашего Шульмана.

anonymous ()
Ответ на: комментарий от post-factum

Ну возьми новоявленного Васю, который вырос во Вконтакте и за ЛОР не слышал. Вот он пристроился в Рога и Копыта, вчера он мышам у тёток хвосты крутил, а сегодня ему дали очень важное задание - виртуалку создать, так как блатной тех дир сам полез, но тоже всё понял и решил спихнуть на Васю.. Где ему спрашивать?

Ощем вариаций много и простота инструментов ускоряет процесс выполнения задач или ещё чего-то там.

anonymous ()
Ответ на: комментарий от post-factum

Я все понимаю, но почему я уже полтора десятка лет при попытке высказать мысль, что надо десктопный софт хотя бы немного поворачивать в сторону к людям передом, к фанатикам задом, натыкаюсь на железобетонную стену и шлангование в лучшем случае?

В итоге, желание популяризации линукса за последние годы у меня убито в ноль. И я начинаю подозревать, что проблема глубоко в головах основных «законодателей моды» в сфере линукса, что закономерно и приводит к 1%. Потому что если упорно делать софт непригодный для использования людьми - он и не будет использоваться людьми.

James_Holden ()