Вопрос или проблема
В данный момент я тестирую основные ядра, поэтому не могу использовать VirtualBox, и ищу другие доступные варианты, и Gnome-Boxes кажется привлекательным. Однако попытка импортировать мои VirtualBox UEFI VDI приводит к тому, что ВМ (Ubuntu, Fedora, Windows 10 Preview) не загружаются. Моя установка Endless OS запускается нормально в режиме legacy.
Что мне нужно сделать, чтобы указать Gnome-Boxes запустить конкретную машину с использованием прошивки UEFI/TianoCore/edk2? Я уже установил ovmf и также пробовал virt-manager, где у меня не было проблем с импортом и загрузкой VDI с UEFI, но автоматическая смена размера экрана там не работает, и импортированные из virt-manager ВМ в gnome-boxes по-прежнему пытаются загрузиться в режиме legacy. Я провел несколько часов вчера, тестируя все это, и знаю очень мало о этих программах и их компонентах, графический интерфейс VirtualBox и команды оболочки до этого времени были достаточно хороши, чтобы выполнить задачи (я также попытался собрать последнюю версию из SVN, но безуспешно).
Я на xenial, но также могу протестировать на zesty. Я проверил журналы изменений gnome-boxes и ovmf/edk2, но не нашел ничего полезного.
Поэтому, если кто-то мог бы помочь мне запустить UEFI-гостев в gnome-boxes, сделать автоматическую смену размера экрана в virt-manager/viewer или объяснить, почему у меня сейчас нет ничего из этого, я был бы очень признателен.
Что касается автоматической смены размера экрана в virt-manager, вот конфигурация гостя Ubuntu. xserver-xorg-video-qxl
и spice-vdagent
установлены, однако гость все еще использует Gallium 0.4 llvmpipe, соответствующие службы (spice-vdagent(d)) активированы в systemd, но сообщают spice-vdagentd[703]: Error getting session for pid 1992: No such device or address
. Буфер обмена не работает. Я не смог сделать это работающим, следуя этим инструкциям: https://www.linux-kvm.org/page/SPICE
$ virsh dumpxml ubuntu-zesty
<domain type="kvm" id='10'>
<name>ubuntu-zesty</name>
<uuid>1bbde115-8968-4f27-8aca-5f498757fea7</uuid>
<memory unit="KiB">1048576</memory>
<currentMemory unit="KiB">1048576</currentMemory>
<vcpu placement="static">1</vcpu>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch="x86_64" machine="pc-i440fx-xenial">hvm</type>
<loader readonly='yes' type="pflash">/usr/share/OVMF/OVMF_CODE.fd</loader>
<nvram>/var/lib/libvirt/qemu/nvram/ubuntu-zesty_VARS.fd</nvram>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode="host-model">
<model fallback='allow'/>
</cpu>
<clock offset="utc">
<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/qemu-system-x86_64</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="vdi"/>
<source file="/media/livewire/Lionheart/virtmanager/images/Zesty-UEFI.vdi"/>
<backingStore/>
<target dev='vda' bus="virtio"/>
<alias name="virtio-disk0"/>
<address type="pci" domain='0x0000' bus="0x00" slot="0x07" function='0x0'/>
</disk>
<controller type="usb" index='0' model="ich9-ehci1">
<alias name="usb"/>
<address type="pci" domain='0x0000' bus="0x00" slot="0x06" function='0x7'/>
</controller>
<controller type="usb" index='0' model="ich9-uhci1">
<alias name="usb"/>
<master startport="0"/>
<address type="pci" domain='0x0000' bus="0x00" slot="0x06" function='0x0' multifunction='on'/>
</controller>
<controller type="usb" index='0' model="ich9-uhci2">
<alias name="usb"/>
<master startport="2"/>
<address type="pci" domain='0x0000' bus="0x00" slot="0x06" function='0x1'/>
</controller>
<controller type="usb" index='0' model="ich9-uhci3">
<alias name="usb"/>
<master startport="4"/>
<address type="pci" domain='0x0000' bus="0x00" slot="0x06" function='0x2'/>
</controller>
<controller type="pci" index='0' model="pci-root">
<alias name="pci.0"/>
</controller>
<controller type="virtio-serial" index='0'>
<alias name="virtio-serial0"/>
<address type="pci" domain='0x0000' bus="0x00" slot="0x05" function='0x0'/>
</controller>
<interface type="network">
<mac address="52:54:00:8c:92:60"/>
<source network='default' bridge="virbr0"/>
<target dev='vnet0'/>
<model type="virtio"/>
<alias name="net0"/>
<address type="pci" domain='0x0000' bus="0x00" slot="0x03" function='0x0'/>
</interface>
<serial type="pty">
<source path="/dev/pts/24"/>
<target port="0"/>
<alias name="serial0"/>
</serial>
<console type="pty" tty='/dev/pts/24'>
<source path="/dev/pts/24"/>
<target type="serial" port="0"/>
<alias name="serial0"/>
</console>
<channel type="spicevmc">
<target type="virtio" name="com.redhat.spice.0" state="disconnected"/>
<alias name="channel0"/>
<address type="virtio-serial" controller="0" bus="0" port="1"/>
</channel>
<input type="mouse" bus="ps2"/>
<input type="keyboard" bus="ps2"/>
<graphics type="spice" port="5900" autoport="yes" listen='127.0.0.1'>
<listen type="address" address="127.0.0.1"/>
<image compression='off'/>
</graphics>
<sound model="ich9">
<alias name="sound0"/>
<address type="pci" domain='0x0000' bus="0x00" slot="0x04" function='0x0'/>
</sound>
<video>
<model type="qxl" ram='65536' vram='65536' vgamem='16384' heads="1"/>
<alias name="video0"/>
<address type="pci" domain='0x0000' bus="0x00" slot="0x02" function='0x0'/>
</video>
<redirdev bus="usb" type="spicevmc">
<alias name="redir0"/>
</redirdev>
<redirdev bus="usb" type="spicevmc">
<alias name="redir1"/>
</redirdev>
<memballoon model="virtio">
<alias name="balloon0"/>
<address type="pci" domain='0x0000' bus="0x00" slot="0x08" function='0x0'/>
</memballoon>
</devices>
<seclabel type="dynamic" model="apparmor" relabel="yes">
<label>libvirt-1bbde115-8968-4f27-8aca-5f498757fea7</label>
<imagelabel>libvirt-1bbde115-8968-4f27-8aca-5f498757fea7</imagelabel>
</seclabel>
</domain>
Автоматическая смена размера экрана в virt-manager & virt-viewer должна работать (в гостевой ОС), как только вы измените модель видеокарты гостя на QXL, дисплей на Spice, и (в случае с гостем Windows) установите драйвер QXLDOD из ISO virtio-win.
https://www.spice-space.org/spice-user-manual.html
“используя драйвер QXL, разрешение гостевой ОС будет автоматически подстраиваться под размер окна клиента.”
https://fedoraproject.org/wiki/Windows_Virtio_Drivers#ISO_contents
“qxldod/: графический драйвер QXL для Windows 8 и выше. (сборка virtio-win-0.1.103-2 и позже)”
Ответ или решение
Как настроить UEFI-гостей в Gnome-Boxes?
Введение
Настройка виртуальных машин с UEFI в Gnome-Boxes может представлять собой сложную задачу, особенно для пользователей, переходящих с других платформ виртуализации, таких как VirtualBox. В данной статье мы подробно рассмотрим, как правильно настроить Gnome-Boxes для запуска виртуальных машин с UEFI и устранить возможные проблемы, с которыми вы можете столкнуться.
Установка необходимых компонентов
Для начала вам следует убедиться, что у вас установлены необходимые пакеты. Воспользуйтесь следующей командой в терминале для установки OVMF, который содержит поддержку UEFI.
sudo apt install ovmf
Это позволит вашему хосту использовать UEFI в качестве прошивки для виртуальных машин.
Конфигурация виртуальной машины
Для настройки виртуальной машины с использованием UEFI необходимо выполнить несколько шагов.
-
Создайте новую виртуальную машину:
Запустите Gnome-Boxes и выберите опцию создания новой виртуальной машины. В процессе создания выберите ISO-образ вашей операционной системы (например, Ubuntu или Fedora). -
Настройка параметров загрузки:
Для того чтобы включить UEFI, вам необходимо убедиться, что ваша виртуальная машина настроена на использование прошивки OVMF. Однако, в Gnome-Boxes эта опция может быть не так очевидна, как в других гипервизорах, например Virt-Manager.На данный момент Gnome-Boxes не имеет явного интерфейса для выбора UEFI при создании виртуальной машины, что затрудняет использование. Без специальной настройки или изменения конфигурации XML загрузчик может по умолчанию использовать режим BIOS.
Конвертация и импорт виртуальных дисков
При импорте VDI-образов из VirtualBox в Gnome-Boxes вы можете столкнуться с проблемами совместимости. Если ваши VDI-ярлыки не удается загрузить, стоит рассмотреть возможность конвертации этих дисков в формат, который больше подходит для KVM. Используйте команду qemu-img
:
qemu-img convert -O qcow2 /path/to/source.vdi /path/to/destination.qcow2
После этого создайте новую виртуальную машину и укажите путь к должно использоваться в качестве загрузочного устройства.
Использование virt-manager для надлежащей настройки
Если Gnome-Boxes не позволяет вам правильно настраивать UEFI, вы можете рассмотреть возможность использования Virt-Manager для создания и настройки виртуальной машины с UEFI, а затем импортировать её в Gnome-Boxes.
-
Создайте виртуальную машину в Virt-Manager:
- Убедитесь, что в конфигурации XML вашей виртуальной машины указаны правильные пути к OVMF:
<loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> <nvram>/var/lib/libvirt/qemu/nvram/ubuntu-zesty_VARS.fd</nvram>
-
Экспортируйте конфигурацию:
Когда конфигурация будет завершена, сохраните все изменения и экспортируйте её. -
Импортируйте в Gnome-Boxes:
Попытайтесь импортировать созданную VM в Gnome-Boxes. Но учтите, что эта процедура может не всегда работать должным образом.
Решение проблем с изменением размера экрана
Для настройки автоматического изменения размера экрана в Virt-Manager и работы с графикой QXL, убедитесь, что вы выполнили следующие действия:
- Установите в гостевой ОС драйвера QXL, например, используя VirtIO-ISO.
- Убедитесь, что в конфигурации вашего виртуального устройства видеокарт установлена модель QXL и тип графики Spice.
Заключение
Настройка UEFI-гостей в Gnome-Boxes требует особого внимания и определённой экспертизы в работе с виртуализацией. Даже если данный процесс может показаться сложным вначале, следуя описанным шагам, вы сможете успешно настроить свои виртуальные машины. Если же у вас возникли неудобства с Gnome-Boxes, рассматривайте возможность использования Virt-Manager для более тонкой настройки конфигурации.
Надеемся, это руководство поможет вам успешно настроить UEFI-гостей в Gnome-Boxes и устранить возникшие проблемы.