Устанавливаем Windows в виртуальной машине (KVM/QEMU) на Linux — без VirtualBox и VMware

Напильник, Программы

Начинающие пользователи операционных систем на базе ядра Linux (да, Linux это не «операционная система», а «ядро» операционной системы, но об этом как-нибудь в другой раз), мигрировавшие из мира Windows, рано или поздно сталкиваются с необходимостью создать «виртуалку» для запуска ещё одной ОС параллельно основной.

Одних в эти степи заводит жажда экспериментов (а как иначе, если вы мигрировали из уютненького мира Windows в тёплый ламповый мир Linux), других — необходимость запустить ПО существующее только для определённой операционной системы. И начинаются поиски туториалов «как установить Windows в VMware Player или VirtualBox на Linux|Ubuntu». Но почему-то мало где пишут о том, что в ядро Linux уже встроена своя «виртуалка», которая отлично работает без танцев с бубном и «красных глаз». Имя ей «KVM» и её установкой и настройкой мы сегодня и займёмся.

Итак, KVM или Kernel Virtual Module — это программное решение, обеспечивающее виртуализацию в среде Linux на платформе x86, которая поддерживает аппаратную виртуализацию на базе Intel VT (Virtualization Technology) либо AMD SVM (Secure Virtual Machine). KVM использует QEMU в качестве фронтенда и для эмуляции некоторых устройств.

В свою очередь QEMU — свободная программа с открытым исходным кодом для эмуляции аппаратного обеспечения различных платформ. Включает в себя эмуляцию процессоров Intel x86 и устройств ввода-вывода. Может эмулировать 80386, 80486, Pentium, Pentium Pro, AMD64 и другие x86-совместимые процессоры; PowerPC, ARM, MIPS, SPARC, SPARC64, m68k — лишь частично.

Надеюсь вы поняли, что это очень крутая штука, которая даёт прикурить как VirtualBox, так и решениям от VMware (плюс ещё и полностью бесплатная, в отличии от некоторых предложений последней). Приступим к делу.

Проверка поддержки виртуализации оборудованием:

Вообще последние лет 10 на рынке практически не было x86-процессоров, которые бы не поддерживали аппаратную виртулизацию, т.ч. с вероятностью в 99% ваш компьютер имеет поддержку всех необходимых технологий. Но всё же стоит проверить это с помощью следующей команды в терминале:

egrep -c ‘(vmx|svm)’ /proc/cpuinfo

Если в результате терминал выдаст число большее чем 0 (у меня, например, было 4) — значит ваш процессор поддерживает аппаратную виртуализацию и можно сразу переходить к следующему разделу этой статьи.

А вот если терминал выдал 0 — значит ваш процессор не поддерживает аппаратную виртуализацию или система думает, что ваш процессор не имеет такой поддержки, хотя по факту она есть. Причина этого скорее всего банальна — в BIOS отключена поддержка технологий виртуализации. Это легко решаемо — необходимо зайти в настройки BIOS (о том как это сделать было упомянуто в этой статье) и найти там следующие опции (одну или несколько) и включить их:

  • Для процессоров Intel: Intel VT или Intel Virtualization Technology, или VT-x, или VT-d, или Intel vPro
  • Для процессоров AMD: AMD-V, или AMD Virtualization, или AMD Secure Virtual Machine, или AMD SVM

Кстати, не забудьте после включения соответствующей опции в BIOS сохранить настройки — как правило это кнопка F10, но бывают и исключения (просто внимательно читайте всё что на экране — искомое «Save and exit setup» или что-то аналогичное).

Установка KVM и QEMU:

Здесь всё просто, т.к. все необходимые пакеты есть в репозиториях всех популярных дистрибутивов. Мы будем рассматривать на примере установки в Ubuntu-based дистрибутивах, но и в openSUSE, Manjaro и прочих все нижеперечисленные пакеты есть — надеюсь сами разберётесь. Если не разберётесь, тогда задавайте вопросы в комментариях.

Итак, команды для уставновки KVM и утилит QEMU:

sudo apt install qemu-kvm qemu-utils libvirt-bin bridge-utils virt-manager cpu-checker

После завершения установки вам необходимо будет добавить своего пользователя в группу libvirtd. Делаем в терминале:

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

Вместо «ПОЛЬЗОВАТЕЛЬ» необходимо указать имя вашего пользователя — если забыли, то в терминале это всё то, что написано перед знаком «@». Вообще желательно теперь разлогиниться и вновь залогиниться, но лично у автора всегда всё и так работало без релогина.

Теперь проверяем правильно ли всё было установлено (вводим команду в терминале):

kvm-ok

Если всё и правда «ок», тогда терминал в ответ выдаст:

INFO: /dev/kvm exists
KVM acceleration can be used

Всё, KVM установлен, осталось настроить и использовать. Именно этим сейчас и займёмся.

Вообще на просторах сети множество туториалов, инструкций, советов и прочих опусов о настройке KVM и QEMU, но все они пестрят огромным количеством шаманских команд в терминале, суть которых понимают только гуру и мастера игры на бубне. При этом в таких командах описан порядок создания и настройки сетевого моста (проброс подключения к сети виртуальных машин), создания виртуальных разделов жесткого диска, создание и настройка самих виртуальных машин и подключения к ним установочных образов и всё такое прочее — ничего такого, что нельзя сделать с помощью мыши.

Мы же пойдём другим путём — будем всё настраивать с помощью графической оболочки (GUI) для KVM и QEMU. Это намного более понятно для всех тех пользователей, которые ранее имели опыт работы с приложениями от VMware и VirtualBox, а те кто не имели — намного быстрее разберутся в графической оболочке, чем в командах для терминала.

Создание и настройка виртуальных машин KVM в GUI:

Находим в списке установленных программ свежую «Менеджер виртуальных машин» (если у вас меню приложений группируется по категориям — должно быть в разделе «Администрирование») и запускаем.

Далее опишу алгоритм создания виртуальной машины для установки Windows. Понятное дело, что для установки Windows нам необходим будет установочный ISO образ. Образ Windows 10 можно свободно скачать на сайте Microsoft по следующей ссылке: https://www.microsoft.com/uk-ua/software-download/windows10ISO.

Итак, наши шаги:

  • выбираем меню «Файл» — «Новая виртуальная машина»;
  • дальше ничего не меняем и оставляем «Локальный ISO или CDROM» (в этом окне также можно задать подгрузку установочного образа из сети, сетевую загрузку или подключение уже готовой виртуальной машины) и жмём «Вперёд»;
  • далее ничего не меняем, если устанавливать гостевую ОС будем с диска, вставленного в привод, а в случае если установка будет производиться из ISO образа — выбираем «Образ ISO», жмём «Обзор». В следующем окне жмём внизу кнопку «Локальный файл» и выбираем скачанный заранее установочный ISO образ (после однократного использования любого ISO файла, он будет добавлен в перечень томов хранилища и поэтому в следующий раз нет необходимости искать его в диспетчере файлов) и жмём «Вперёд»;
    • галочку «Автоматически определить операционную систему носителя» нет необходимости ставить или убирать — на моём опыте KVM ещё ни разу сам этого корректно не сделал, поэтому не обращаем внимание на это;
  • далее нам предложат настроить размер выделяемой оперативной памяти и количества ядер процессора для гостевой ОС — здесь необходимо выставить как минимум минимальные системные требования. Для Windows 10 это 1024 МиБ (для 32-битной версии) или 2048 МиБ (для 64-битной версии) оперативной памяти и как минимум 2 ядра процессора (но важно понимать, что оптимальным параметром является не более 1/2 от всех физических ядер вашего процессора — поэтому если у вас 2-х ядерный процессор, то не выбирайте более «1» ядра для гостевой). После выставления значений жмём «Вперёд»;
  • далее нам предложат настроить размер выделяемой постоянной памяти для гостевой ОС — это будет наш виртуальный жесткий диск;
  • в следующем окне задаём имя для нашей виртуальной машины (пишем на ваш выбор) и отметить галочкой пункт «Дополнить конфигурацию перед установкой» — жмём «Готово»;
  • перед нами окно дополнительных настроек виртуальной машины — здесь необходимо будет сделать ещё несколько корректировок (в нашем случае будем настраивать для Windows, но прирблизительно аналогичные настройки подойдут и практически для всех дистрибутивов Linux и *BSD):
    • в разделе «Процессоры» выбираем «Копировать конфигурацию ЦП хоста» — теперь наша виртуальная машина будет видеть наш реальный CPU, хотя в этом пункте можно выбрать и эмуляцию других архитектур с помощью QEMU;
    • в разделе «Параметры загрузки» выбираем «Включить меню загрузки», после чего поставить галочки напротив «Диск 1» и «CDROM», затем с помощью стрелок необходимо пункт «CDROM» поставить на первое место в списке;
    • в разделе «CDROM» необходимо подключить установочный ISO образ — да, мы это уже делали в предыдущих пунктах на этапе создания виртуальной машины, но здесь вот такая алогичная логика — просто выбираем ещё раз тот же самый установочный ISO образ;
    • в разделе «Дисплей Spice» необходимо изменить тип на «VNC-сервер» — Windows не умеет должным образом взаимодействовать с Spice, поэтому необходимо изменить тип на VNC;
    • в разделе «Видео QXL» изменить модель на VGA — аналогично ситуации со Spice, гостевая Windows нормально взаимодействует с VGA, но не с QXL.
  • теперь можно начинать установку Windows в виртуальной машине KVM — в верхнем левом углу выбираем кнопку «Показать графическую консоль», затем на кнопку «Включить виртуальную машину» (кнопка Play):
  • в окне с белым текстом на чёрном фоне нажать «F12», затем «1» и «Enter» — всё, загрузка с установочного ISO образа началась.

Предупреждение №1: гостевая ОС перехватывает управление мышью — для возврата курсора необходимо нажать одновременно левые «Ctrl» и «Alt».

Предупреждение №2: часто наблюдаются проблемы с выходом из полноэкранного режима — здесь можно поступить двумя способами:

  • повесить шорткат на функцию «Показать рабочий стол» — после использования комбинации, описанной в «Предупреждении №1» используйте шорткат для «Показать рабочий стол» для выхода из полноэкранного режима;
  • после использования комбинации, описанной в «Предупреждении №1» используйте всем известный шорткат «Alt» + «Tab» для переключения на любое другое открытое окно.

Предупреждение №3: если вы попали на эту страницу в поисках решения ошибки «Не удалось завершить установку: «Couldn’t create storage volume ‘.qcow2’: ‘внутренняя ошибка: для создания обработанных образов файлов требуется qemu-img’»» — решение есть и оно очень простое (но на просторах рускоязычного интернета об этом почему-то мало написано, хотя инструкций по настройке KVM, которые и приводят к такой ошибке — вагон и маленькая тележка). Итак, всё что необходимо, это установить пакет «qemu-utils». В Ubuntu-based дистрибутивах это команда:

sudo apt install qemu-utils

В других дистрибутивах — воспользуйтесь поиском указанного пакета в вашем менеджере пакетов (он присутствует в стандартных репозиториях с вероятностью в 99,9%).

Если вы следовали инструкциям по установке из этой статьи, тогда подобной проблемы у вас не будет с установкой Windows в виртуальную машину KVM, т.к. в разделе об установке учтена данная часто встречающаяся проблема.

Ниже подборка скриншотов потнастройке KVM — для наглядности:

Вот и всё — больше здесь рассказывать особо не о чем, т.к. подробный разбор всех возможностей KVM и QEMU растянется на много-много страниц. Да и нет в этом смысла, т.к. тонкости настройки и использования хорошо описаны  на linux-kvm.org и qemu-project.org

Держите ваши напильники в чистоте и до скорого!

PS: для удаления установленного KVM и QEMU из Ubuntu-based систем необходимо выполнить следующие команды в терминале:

sudo apt purge qemu-kvm qemu-utils libvirt-bin bridge-utils virt-manager

sudo apt autoremove

sudo rm -r /etc/apparmor.d/abstractions/

sudo rm -r /etc/libvirt/qemu/networks/autostart/

sudo rm -r /var/cache/libvirt/qemu/

sudo rm -r /var/lib/libvirt/qemu/

Это очистит временные каталоги программы и удалит сами пакеты.