QEMU/Virt-Manager: установка, настройка, включение 3D-ускорения в виртуальной машине, общие папки, буфер обмена

Если есть у кого замечания и дополнения пишите…

По умолчанию QEMU поддерживает архитектуры i386 и x86_64. Отредактируйте флаги для поддержки необходимых гостевых машин. Пример добавления поддержки архитектуры arm:

#

mcedit /etc/portage/make.conf/custom

Добавляем:

QEMU_SOFTMMU_TARGETS="arm i386 x86_64"

Устанавливаем qemu libvirt virt-manager virtio-win:

Соберите QEMU с нужными USE-флагами
В Gentoo для поддержки 3D-ускорения QEMU должен иметь включённые USE-флаги opengl и virgl :
#

echo "app-emulation/qemu opengl virgl" >> /etc/portage/package.use/custom

А также устанавливаем USE-флаг для spice:

echo "app-emulation/spice -smartcard" >> /etc/portage/package.use/custom

Устанавливаем все необходимые пакеты:

#

emerge -av app-emulation/qemu app-emulation/libvirt app-emulation/virt-manager app-emulation/virtio-win app-emulation/virtiofsd media-libs/virglrenderer

Запускаем демон libvirt и добавляем его в автозагрузку:

#

/etc/init.d/libvirtd start

#

rc-update add libvirtd

Отредактируйте файл настроек:

#

mcedit /etc/libvirt/qemu.conf

Добавляем:

# Позволит vnc слушать на всех адресах
vnc_listen = "0.0.0.0"
# Отключим tls (если виртуальны машины используются не для тестирования, то лучше tls включить и настроить)
vnc_tls = 0
# Пароль по умолчанию для vnc - он будет использоваться в том случае, если для виртуальной машины не указан свой пароль
vnc_password = "XYZ12345"
# Пользователь от которого будет запускаться QEMU
user = "root"
# Группа от которой будет запускаться QEMU
group = "root"
# Формат сохранения и дампов, gzip или другое сжатие позволит уменьшить место, занимаемое образами, но притом увеличит время сохранения образов.
save_image_format = "gzip"
dump_image_format = "gzip"

Также для виртуальной сети нам понадобятся модули tun и vhost_net. Загружаем модули:

#

modprobe -a tun vhost_net

и добавляем их в автозагрузку создаем файл:
==/etc/modules-load.d/qemu.conf==
Вписываем:

tun
vhost_net

При первом и последующих запусках у вас будет спрашиваться пароль root

Давайте решим и эту проблему включив вашего пользователя в группу libvirt, следующей командой
#

gpasswd -a ПОЛЬЗОВАТЕЛЬ libvirt

Вместо ПОЛЬЗОВАТЕЛЬ — вписываем своего пользователя.
#

reboot

Директория образа драйверов virtio-win:

/usr/share/drivers/windows

Директория виртуальных образов:

/var/lib/libvirt/images/

Включение 3D-ускорения в виртуальной машине:

Работает драйверами amdgpu AMD и с nouveau NVIDIA.
С проприетарным драйвером NVIDIA nvidia-drivers не работает.

В virt-manager:

  • В разделе Видео выберите модель: virtio и включите “Ускорение 3D”.
  • В разделе Дисплей выберите Тип: Сервер SPICE, выберите Тип ожидания - Нет, обязательно поставьте галочку OpenGL (включить поддержку OpenGL).
  • XML
<graphics type="spice">
  <listen type="none"/>
# или <listen type="socket"/>
  <image compression="off"/>
  <gl enable="yes" rendernode="/dev/dri/by-path/pci-0000:2f:00.0-render"/>
</graphics>

Гостевая ОС Gentoo/Calculate-Linux:

  • В Gentoo для поддержки VirGL в Mesa нужно включить video_cards_virgl, а не просто virgl.
  • Добавьте в ==/etc/portage/package.use/custom== строку ==media-libs/mesa video_cards_virgl==:
    #
echo "media-libs/mesa video_cards_virgl" >> /etc/portage/package.use/custom

Пересобрать Mesa:
#

emerge -av media-libs/mesa

Общий буфер обмена:

  • Linux: установить spice-vdagent на гостевой компьютер:
# Arch
sudo pacman -S spice-vdagent
# Debian
sudo apt install spice-vdagent
# Fedora
sudo yum install spice-vdagent
# Gentoo
emerge -av app-emulation/spice-vdagent

Примечание:
В госте Gentoo/Calculate-Gnome буфер обмена работает только после принудительного перезапуска сервиса:
#

rc-service spice-vdagent restart

Общие папки :

На вашем хост-компьютере:

Чтобы создать общие папки при помощи драйвера Virtiofsd, нужно установить на хосте
#

emerge -av app-emulation/virtiofsd

Для работы Virtiofs требуется раздельная память. Её можно включить в окне конфигурации оборудования. Перейдите в раздел «Оборудование» → «Память» и выберите «Включить раздельную память».

  1. Создайте папку для совместного использования.

  2. Откройте virt-manger, выберите виртуальную машину, с которой вы хотите поделиться папкой, и нажмите «Открыть»:

    изображение

  3. Перейдите на вкладку “Информация”, а затем нажмите “Добавить оборудование”:

    [изображение

  4. Выберите файловую систему и заполните поля.

    [изображение

    • Драйвер (Driver): Сохраняйте это как virtiofs
    • Путь на хосте (Source path): это путь к папке, которой вы хотите поделиться на своём хостинге.
    • Путь в гостевой ОС (Target path): это вводит в заблуждение. Это не путь, а название, которое будет присвоено общему ресурсу на гостевой машине.
  5. После того как вы заполните поля, нажмите кнопку «Готово».
    Это всё, что вам нужно сделать на вашем хостинге.

О госте:

Linux:

  1. Создайте папку, к которой будет привязан общий ресурс.
  2. Откройте терминал на гостевой машине и введите:
sudo mount -t virtiofs sharename path/on/guest
  1. Чтобы сделать его постоянным, добавьте следующую запись в /etc/fstab:
sharename           path/on/guest    virtiofs    defaults        0       0

Пример:

sudo mount -t virtiofs Share /mnt/Share
Share           /mnt/Share    virtiofs    defaults        0       0
  1. Вот и все! Старый добрый Linux!!

пример

Windows:

  1. Установите пакет app-emulation/virtio-win.

    • Снова перейдите на вкладку “Информация” и нажмите на “Добавить оборудование”

    • Выберите вариант хранилища, нажмите «Выбрать или создать пользовательское хранилище»,

    • Измените «тип устройства:», а затем нажмите «Управление».

    • Нажмите на “Локальный обзор” и выберите /var/lib/ibvirt/images/virtio-win.iso

    • Выберите «virtio-win.iso» и нажмите «Выбрать том».

      [изображение

    • Или, если вы предпочитаете ручной способ, скачайте драйвер virtio 64 на компьютер с Windows и установите его там.

  2. Скачайте WinFSP и установите его (на гостевой компьютер). В установщике выберите опцию установки файлов разработчика. К ним относятся файлы файловой системы MEMFS, а также файлы заголовков и библиотек, которые позволяют разрабатывать собственную файловую систему пользовательского режима.

  3. (В гостевом компьютере), откройте проводник и выберите CD-ROM устройство с примонтированым образом virtio-win. Запустите virtio-win-guest-tools от имени Администратора и установите драйвера.

  4. Откройте диспетчер устройств и проверьте установились-ли драйвера:

    изображение

  5. Щёлкните правой кнопкой мыши по «Контроллеру запоминающих устройств» и выберите «Обновить драйвер». Выберите «Поиск драйверов на моём компьютере» и укажите подключённый ISO-образ.

  6. Зайдите в “Службы” Windows, в “VirtIO-FS Service” установите “Автоматически”, перезагузите виртуальную машину.

  7. Теперь общие папки должны отображаться, как подключенные диски, в проводнике файлов.


Открытие и запуск окна виртуальной машины:

$

virsh --connect qemu:///system start НАЗВАНИЕ_ВИРТУАЛЬНОЙ_МАШИНЫ && virt-manager --connect qemu:///system --show-domain-console НАЗВАНИЕ_ВИРТУАЛЬНОЙ_МАШИНЫ

Решение: объединить команды в скрипт
Поскольку virt-manager сам не умеет автоматически запускать ВМ, но может подключиться к уже запущенной, можно использовать такой bash-скрипт:

#!/bin/bash

# Подключение к системному QEMU и запуск ВМ, если она остановлена
virsh --connect qemu:///system start НАЗВАНИЕ_ВИРТУАЛЬНОЙ_МАШИНЫ

# Открытие графической консоли после запуска
virt-manager --connect qemu:///system --show-domain-console НАЗВАНИЕ_ВИРТУАЛЬНОЙ_МАШИНЫ

Сохраните это в файл, например, ==start_vm_and_show_console.sh==, и сделайте его исполняемым:

chmod +x start_vm_and_show_console.sh

Установка Windows-11 гостем:

В virt-manager:

Добавить оборудование: TPM
Тип: Эмулировано
Модель: CRB
Версия: 2.0