Как настроить UEFI-гостей в Gnome-Boxes?

Вопрос или проблема

В данный момент я тестирую основные ядра, поэтому не могу использовать 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 необходимо выполнить несколько шагов.

  1. Создайте новую виртуальную машину:
    Запустите Gnome-Boxes и выберите опцию создания новой виртуальной машины. В процессе создания выберите ISO-образ вашей операционной системы (например, Ubuntu или Fedora).

  2. Настройка параметров загрузки:
    Для того чтобы включить 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.

  1. Создайте виртуальную машину в 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>
  2. Экспортируйте конфигурацию:
    Когда конфигурация будет завершена, сохраните все изменения и экспортируйте её.

  3. Импортируйте в Gnome-Boxes:
    Попытайтесь импортировать созданную VM в Gnome-Boxes. Но учтите, что эта процедура может не всегда работать должным образом.

Решение проблем с изменением размера экрана

Для настройки автоматического изменения размера экрана в Virt-Manager и работы с графикой QXL, убедитесь, что вы выполнили следующие действия:

  1. Установите в гостевой ОС драйвера QXL, например, используя VirtIO-ISO.
  2. Убедитесь, что в конфигурации вашего виртуального устройства видеокарт установлена модель QXL и тип графики Spice.

Заключение

Настройка UEFI-гостей в Gnome-Boxes требует особого внимания и определённой экспертизы в работе с виртуализацией. Даже если данный процесс может показаться сложным вначале, следуя описанным шагам, вы сможете успешно настроить свои виртуальные машины. Если же у вас возникли неудобства с Gnome-Boxes, рассматривайте возможность использования Virt-Manager для более тонкой настройки конфигурации.

Надеемся, это руководство поможет вам успешно настроить UEFI-гостей в Gnome-Boxes и устранить возникшие проблемы.

Оцените материал
Добавить комментарий

Капча загружается...