Создание быстрой VM для Windows на Linux

2026-02-03Genre: reports

Введение

В этой публикации описан процесс создания виртуальной машины с Windows в виде гостевой ОС, которая будет обладать важным для инженерного ПО свойством - быстродействием.

Начальные требования

Перед началом нужно:

  1. Установить KVM, Libvirt, Qemu и VMM. Процесс установки зависит от дистрибутива;
  2. Скачать образ диска с VirtIO драйверами для гостевой ОС;
  3. Скачать образ диска с Windows.

Создание виртуальной машины

  1. Зайти в меню настроек Virtual Machine Manager и включить редактирование XML - это нужно для последующих манипуляций.

fig1 Настройки VMM

fig2 Включено редактирование XML

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

fig3 Окно выбора имени VM

  1. В пункте Overview проверить, что стоит чипсет Q35

fig4 Чипсет Q35

  1. В пункте CPUs проверить, что включен проброс ядер процессора.

fig5 Проброс ядер процессора

  1. В пункте SATA Disk 1 необходимо изменить шину с SATA на VirtIO, специально оптимизированную для виртуальных машин. Это чрезвычайно важный пункт для быстродействия машины. Так как кеш нам не нужен, его тоже лучше отключить.

fig6 Настройка хранилища

  1. Монтирование образа диска с VirtIO драйверами. Внизу списка устройств находится кнопка Add Hardware, во всплывающем окне выбираем Storage, в пункте Select or create custom storage выбираем образ диска VirtIO драйверов. Тип устройства выбираем как CDROM.

fig7 Монтирование диска с драйверами

  1. В пункте NIC (Network Interface Controller) выбираем тип устройства VirtIO.

fig8 Настройка сети

  1. Устройство Tablet можно удалить.

Таким образом, подготовка к установки гостевой ОС завершена.

Установка Windows

Так как мы не хотим привязывать Microsoft аккаунт к гостевой системе, на время установки нужно отключить интернет. Для создания локального аккаунта надо нажать Shift+F10 и ввести в командную строку oobe\bypassnro.

Так как в нашей конфигурации нет TPM и Secure Boot, проверку его наличия нужно отключить, нажав Shift+F10 на экране связанной с этим ошибки ошибки, введя regedit, создав раздел LabConfig в HKEY_LOCAL_MACHINE\SYSTEM\Setup и добавив параметры BypassTPMCheck, BypassSecureBootCheck типа Dword, которым нужно присвоить значение 1.

До окна выбора диска, на который будет установлена ОС, установка проходит обычно. Однако, в этом окне не будет ни одного диска - потому что для VirtIO хранилища необходимо подключить драйверы.

fig9 Окно выбора драйверов

Чтобы установить VirtIO disk driver, надо нажать Load driver, затем Browse, CD Drive (E:), Viostor, w11, выбрать amd64 и нажать OK.

fig10 Выбор драйвера хранилища

fig11 Установка драйвера хранилища

fig12 После установки драйверов видно хранилище

Помимо драйверов хранилища, нужно установить драйверы для сетевого контроллера:

Нажимаем Load driver, затем Browse, CD Drive (E:), NetKVM, w11, выбрать amd64, и нажать OK.

fig13 Установка драйвера сети

После завершения установки ОС, необходимо установить клиентскую часть VirtIO драйверов:

fig14 Установка клиентской части VirtIO драйверов

Теперь можно сделать разрешение экрана гостевой ОС адаптивным. Для этого в меню VMM нужно нажать на View, выбрать пункт Scale Display и активировать Auto resize VM with window.

Теперь гостевая система готова к использованию.

Также для поддержки drag-and-drop и бесшовного прохождения курсора через границу гостевой системы можно установить spice-драйвера, как на хост, так и на гостевую систему.

Также, из-за отсутствия "железной" видеокарты у гостевой системы, её присутствие эмулируется на процессоре. Об этом нужно оповестить приложения, создав переменную среды QT_OPENGL=desktop. Без неё часть модулей Ansys и SolidWorks не работает.

Для того чтобы не вводить пароль каждый раз при входе в гостевую ОС, нужно ввести сочетание клавиш Win+R, после чего написать netplwiz. В открывшемся меню надо выбрать свой локальный аккаунт и снять галочку с пункта о необходимости ввода пароля при входе.