LINUX.ORG.RU

Получить конфиг для virsh из QEMU

 ,


2

1

Всем привет. Действую согласно инструкции из https://bbs.archlinux.org/viewtopic.php?id=162768 Запускаю вот так:

# qemu-system-x86_64 -name winda81 -enable-kvm -M q35 -m 4096 -cpu host \
-smp 6,sockets=1,cores=4,threads=1 \
-bios /usr/share/qemu/bios.bin -vga none \
-boot menu=on \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=02:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
-device vfio-pci,host=02:00.1,bus=root.1,addr=00.1 \
-drive file=/media/torrent/virt/windows.img,id=disk,format=raw -device ide-hd,bus=ide.0,drive=disk \
-drive file=/home/welzool/winda.iso,id=isocd -device ide-cd,bus=ide.1,drive=isocd 

Можно ли при таком запуске каким-то образом создать дамп фаил конфигурации для virsh (xml-ный файл)?

Можно воспользоваться virt-manager и не городить скрипты запуска ВМ напряму через qemu-system-x86_64.

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

У меня virt-manager создаёт бредовый конфигурационный фаил. Неправильно определяет тип хостового процессора, не даёт выбрать q35. При ручной правке созданного конфига - машина полностью пропадает из окна выбора virt-manager. Причём virsh define не видет ошибок.

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

Неправильно определяет тип хостового процессора

Что за железо у тебя?

не даёт выбрать q35

q35 не обязательно для проброса видео, можно юзать стандартный 440fx.

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

BIOS на втором мониторе загорелся, загрузилось начало установки. До конца систему ставить не стал. Кстати, как через qemu привязать беспроводную клаву с мышкой, если на хосте другой комплект с темже vendor id? В virt-manager правил xml и цеплял по шине и номеру устройства usb.

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

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

handbrake ★★★
()
Ответ на: комментарий от welzool

в вирт манагере добавляешь usb-хост девайс и все, нафиг руками мучаться, два одинаковых устройства будут глючить/рандомно цепляться.

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

Вот и не знаю с какой стороны хвататься. Ну главное понял, что проброс с vfio и vga none у меня работает. В virt-manager (для определения моего процессора) в xml'e писать

 <cpu mode='host-passthrough'>
    <topology sockets='1' cores='4' threads='1'/>
  </cpu>
Правильно понимаю?

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

Вот xml от вирт-менеджера, таким образом у меня работает проброс. Проброшено видео и usb-мышка.




<domain type='kvm'>
<name>win8-2</name>
<uuid>40b46ef5-e089-4fb8-b850-f01b199da4cf</uuid>
<memory unit='KiB'>4194304</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static'>4</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-utopic'>hvm</type>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode='custom' match='exact'>
<model fallback='allow'>Haswell</model>
<vendor>Intel</vendor>
<feature policy='require' name='monitor'/>
<feature policy='require' name='tm2'/>
<feature policy='require' name='est'/>
<feature policy='require' name='vmx'/>
<feature policy='require' name='osxsave'/>
<feature policy='require' name='ss'/>
<feature policy='require' name='ds'/>
<feature policy='require' name='vme'/>
<feature policy='require' name='dtes64'/>
<feature policy='require' name='abm'/>
<feature policy='require' name='ht'/>
<feature policy='require' name='acpi'/>
<feature policy='require' name='pbe'/>
<feature policy='require' name='tm'/>
<feature policy='require' name='pdcm'/>
<feature policy='require' name='pdpe1gb'/>
<feature policy='require' name='ds_cpl'/>
<feature policy='require' name='rdrand'/>
<feature policy='require' name='f16c'/>
<feature policy='require' name='xtpr'/>
<feature policy='require' name='invtsc'/>
</cpu>
<clock offset='localtime'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>/usr/bin/kvm-spice</emulator>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/mnt/btrfs/iso/Windows 8.1 x86-x64 RU_AIO.iso'/>
<target dev='hda' bus='ide'/>
<readonly/>
<boot order='1'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='writeback'/>
<source file='/mnt/btrfs/vm/win8/win8.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='writeback'/>
<source file='/mnt/btrfs/vm/win8/win8_dat.img'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='sata' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</controller>
<interface type='bridge'>
<mac address='52:54:00:23:67:ad'/>
<source bridge='br1'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<input type='tablet' bus='usb'/>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='spice' autoport='yes'/>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
</hostdev>
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x1'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>
</hostdev>
<hostdev mode='subsystem' type='usb' managed='yes'>
<source>
<vendor id='0x1532'/>
<product id='0x0036'/>
<address bus='3' device='5'/>
</source>
</hostdev>
<redirdev bus='usb' type='spicevmc'>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
</redirdev>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</memballoon>
</devices>
</domain>

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

Сейчас буду пытаться. /etc/libvirt/qemu/блаблабла.xml сюда virt-manager кидает фаил конфигурации. А потом его virsh или текстовиком каким.

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

Во перых не кидает, а там его и хранит/пользует. Во вторых

<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh edit 
or other application using the libvirt API.
-->

handbrake ★★★
()
Ответ на: комментарий от King_Carlo

Меня смущает вот эти строки

 <cpu mode='custom' match='exact'>
    <model fallback='allow'>Haswell</model>
Если у меня AMD - повлияет ли это на производительность гостя? И что значит model и require? У тебя всё стоит require, это значит что эти инструкции задействованы?

welzool
() автор топика
Ответ на: комментарий от handbrake

Если исправил вручную gedit, а потом сделал virsh define, то там всё прекрасно сохраняется и эти параметры передаются в виртуальную машину. Но ясно что лучше так не делать, это уже я эксперементировал с определениями моего процессора и его инструкций.

welzool
() автор топика
Ответ на: комментарий от NeverLoved

делаю vfio-bind в qemu дописываю

-device vfio-pci,host=00:13.0,bus=pcie.0 \
-device vfio-pci,host=00:13.1,bus=pcie.0
на выходе получаю:
Cannot reset device 00:13.0 no available reset mechanism
Cannot reset device 00:13.1 no available reset mechanism

welzool
() автор топика
Ответ на: комментарий от handbrake

Я в курсе. Использовал gedit из-за привычкы мышко-тыкальства. Так мне по тексту проще перемещаться.

welzool
() автор топика

Скажите, а куда в virt-manager забить параметр аналогичный в qemu -vga none ??? Чето немогу догнать, как заставить сразу грузить окно с bios на проброшенную видеокарту.

welzool
() автор топика
Ответ на: комментарий от NeverLoved

тот твой топик для меня стал вдохновением :)

welzool
() автор топика

А я не пользуюсь ни наркоманским virt-manager'ом, ни libvirt, virsh и прочие наркоподелия. То то нельзя выбрать, то этого нет, короче гониво.

«Simplify, simplify, simplify!» как говорил великий Генри Дэвид Торо, что может быть проще простой команды запуска?

QEMU="/usr/bin/qemu-system-x86_64"

NIC="virtio"

gen_macaddr() {
    printf 'DE:AD:%02X:%02X:%02X:%02X\n' $((RANDOM%256)) $(($$%256)) $(($$/256%256)) $(($1))
}

MACADDR0=$(gen_macaddr 10)

echo "macaddr0: ${MACADDR0}"

/etc/init.d/samba start &&

${QEMU} \
    -enable-kvm -realtime mlock=off -rtc base=localtime \
    -m 4096 -machine pc-i440fx-2.0,accel=kvm -cpu host,hv_relaxed,hv_vapic,hv_spinlocks=0x1000 -smp 4,sockets=1,cores=4,threads=1 \
    -drive if=pflash,format=raw,readonly,file=/mnt/vm/OVMF/OVMF_CODE.fd -drive if=pflash,format=raw,file=/mnt/vm/OVMF/OVMF_VARS.fd \
    -device pci-assign,host=01:00.0 \
    -device virtio-scsi-pci,id=scsi -drive file=/mnt/vm/windows8.qcow2,if=virtio,id=c,format=qcow2,cache=none,aio=native \
    -boot menu=off,strict=on -vga none -nographic \
    -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device usb-host,hostbus=3,hostport=3 -device usb-host,hostbus=3,hostport=4 \
    -net nic,vlan=0,macaddr=${MACADDR0},model=${NIC} -net bridge,vlan=0 &
Только я использую pci-assign, а не vfio.

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

где взял парамтры проброса usb?

-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -device usb-host,hostbus=3,hostport=3 -device usb-host,hostbus=3,hostport=4

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

Если у меня AMD - повлияет ли это на производительность гостя?

Впиши свой процессор. Я тебе свой конфиг для примера кинул, у меня intel i7-4790k.

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

У тебя гость повторно запускается, хост не вешает?

может повесить, а может просто не запуститься, у меня через vfio не получается просто, приходится вот так. Скрипты в госте отключения лень городить.

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

Запустил и пусть себе работает.

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

Можешь подсказать?

welzool@UBUKVM ~ $ lsusb -t
/:  Bus 09.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/:  Bus 08.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
/:  Bus 07.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 1: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/2p, 12M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/5p, 12M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/5p, 12M
    |__ Port 1: Dev 2, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 1: Dev 2, If 1, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/5p, 480M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/5p, 480M

Мне нужно пробросить Bus 06 (это usb 3.0. в него вставил свисток беспроводной мыши и клавы) В запускалку qemu добавляю такие строчки (сомневаюсь в правильности)

-device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 \
-device usb-host,hostbus=6,hostport=1 \
-device usb-host,hostbus=6,hostport=1
На выходе получаю:
qemu-system-x86_64: -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2: Bus 'pci.0' not found

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

Я использую -machine pc-i440fx-2.0 , который лучше для проброса нежели q35, возможно причина в этом (т.к. в q35 встроенный usb-контроллер, а я для i440fx указываю свой), я показал полную комманду запуска.

Кстати, а чего ты хочешь добиться предоставляя гостю использовать 6 ядер, но фактически отдавая только 4? Если я не ошибаюсь, вот так правильнее будет:

-smp 4,sockets=1,cores=4,threads=1

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

Кстати, уже в установленной системе всяко удобнее использовать Synergy и юзать хостовую клавиатуру, а не использовать/пробрасывать вторую.

Seamless переключение между хостом и гостем или же по хоткею.

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

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

synergy-1.6.0-ec3a9c3-Windows-x64.msi работает стабильно, можно себе его схоронить, а то вдруг еще и за ночные сборки денег захотят.

xinu
()

Вопрос снимаю. Через vfio изображение выводит, но драйвер видео не становится. Контроллер usb пробрасывается только через pci stub. Опять буду крутить настройки через pci stub на virt-manager. Всем спасибо за внимание.

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

Через vfio изображение выводит, но драйвер видео не становится.

У меня тоже, именно поэтому я использую pci-assign, а не vfio - работает как часы, идеально, разница между нативом и пробросом - меньше 10% по LuxMark и Unigine бенчмарках.

А какую именно карточку ты проборасываешь?

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

7770. Через pci assign она у меня работала, но производительность не радовала. Решил пытаться через vfio. Когда гостя грузишь, у тебя сразу изображение начинает на проброшенную видюху выводиться?

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


Да, прямо начиная еще с биоса.

Я использую OVMF (uefi-биос вместо seabios), если у тебя видеокарта с UEFI биосом, рекомендую попробовать.

но производительность не радовала.

если у тебя проц AMD, важно компилить kvm-amd как модуль, а не в ядро, а также использовать настройку: /etc/modprobe.d/kvm-amd.conf:

options kvm-amd npt=0
ускоряет работу видеокарты (хотя настройка для проца), например в моей паре A10-6700 + проброшенная 7870 примерно на 30%, или 1200 против 1700 попугаев в Unigine Valley.

Как у тебя делится шина pcie x16? 8 и 8? Или 16 и 4?

завтра посмотрю, отпишу.

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

если на хосте осталась встроенная в проц видяха, то дискретная скорее всего работает на x16. В gpu-z после x16 не должен стоять знак @ и цифры 8, 4, или 1. У меня две дискретки. Та что на хосте - x16, та что в госте - x16@4. Вот мне интересно, сильно ли это влияет на производительность гостя.

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

после x16 не должен стоять знак @ и цифры 8, 4, или 1

у меня встроенный в проц 8670D для хоста и 7870 для гостя: PCI-E 3.0x16 @ x16 1.1

нашел. uefi.

брать здесь, запускать как у меня выше в примере:

-drive if=pflash,format=raw,readonly,file=/mnt/vm/OVMF/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=/mnt/vm/OVMF/OVMF_VARS.fd
при uefi-OVMF биосе приписывать x-vga=on к карте не нужно, оно работает через UEFI напрямую без всякого VGA-legacy и связанных с этим проблем с производительностью, стабильностью и пробросом в целом.

xinu
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.