- Устанавливаем Windows в виртуальной машине (KVM/QEMU) на Linux — без VirtualBox и VMware
- Проверка поддержки виртуализации оборудованием:
- Установка KVM и QEMU:
- Создание и настройка виртуальных машин KVM в GUI:
- QEMU/KVM и установка Windows
- Подготовка
- Запуск и инсталляция
- Драйвера и доводка
- Оборудование
- В завершение
Устанавливаем 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
Вместо «ПОЛЬЗОВАТЕЛЬ» необходимо указать имя вашего пользователя — если забыли, то в терминале это всё то, что написано перед знаком «@». Вообще желательно теперь разлогиниться и вновь залогиниться, но лично у автора всегда всё и так работало без релогина.
Теперь проверяем правильно ли всё было установлено (вводим команду в терминале):
Если всё и правда «ок», тогда терминал в ответ выдаст:
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/
Это очистит временные каталоги программы и удалит сами пакеты.
Источник
QEMU/KVM и установка Windows
Хотим мы того или нет, но программы, для которых необходима Windows, никуда из офисов не исчезли. В ситуации, когда их использование безальтернативно, лучше иметь виртуальную ОС, например для того, чтобы подключиться к аудио-конференции через Skype for Business.
В этой статье я расскажу, как можно с минимальными издержками установить гостевую ОС Windows на гипервизоре QEMU с помощью графического интерфейса virt-manager . Мы нанесем на карту все подводные камни и рифы, а жучков аккуратно посадим в банку.
Подготовка
Самый первый шаг — настройка параметров ядра. Обязательна поддержка KVM и vhost-net , желательна поддержка туннельных интерфейсов [1] и сетевого моста [2] . Полный список на Gentoo вики-странице QEMU.
Подготовьте дисковое пространство. Я выделил 70 GiB, и Windows 8.1 за пару месяцев использовала почти 50 GiB так, что для обновления до 10-й версии места на диске не хватило.
Далее, нам понадобится набор редхатовских драйверов virtio-win . Если у вас установлен RedHat, достаточно запустить
и образ iso будет записан в каталог /usr/share/virtio-win/ . Также можно его скачать с репозитариев Fedora.
Убедитесь, что поддержка аппаратной виртуализация включена в BIOS/UEFI. Без этого KVM не будет активирован, а virt-manager выдаст вот такую ошибку.
В качестве проверки можно прочитать файл устройства.
Если файл не обнаружен, а опции ядра выставлены верно, значит дело в настройках BIOS/UEFI .
Устанавливаем нужные пакеты.
Для RedHat 7 достаточно установить только virt-manager , так как QEMU устанавливается по умолчанию.
Дебианщикам надо установить пакет qemu .
Можно теперь переходить к установке.
Запуск и инсталляция
Запускаем virt-manager и создаем новую виртуальную машину из локального хранилища.
Указываем путь к установочному iso образу Windows.
Далее, на 3-м и 4-м шаге будет выбор количества CPU, объем RAM и размер дискового пространства, после чего на 5-м шаге следует выбрать дополнительные конфигурации перед настройкой.
Окно дополнительных настроек нужно для того, чтобы выполнить финт ушами. Его смысл в том, чтобы добавить виртуальный флопарь с драйверами из набора virtio-win . Это даст возможность изменить тип жесткого диска: удалить диск с шиной IDE и добавить его же, но с шиной VirtIO. Подробно, в доках RedHat.
Прописываем драйвер /usr/share/virtio-win/virtio-win.vfd и добавляем виртуальный флоппи-диск. Затем переходим на вкладку [Шина] Диск № и проделываем финт с заменой шины диска: удаляем с IDE и добавляем с VirtIO.
Чуть не забыл сказать, для чего нужен этот фокус. Специалисты утверждают, что с шиной VirtIO, производительность диска ощутимо выше.
В принципе, уже можно начинать инсталляцию, но мы забыли добавить CD-ROM с драйверами virtio-win , а они нам пригодятся, когда диспетчер устройств засверкает желтыми иконками вопросительного знака.
Ну вот теперь можно начать установку.
Ну хорошо, начали мы установку. А что, если установщик Windows попросит сменить диск? Мне из-за этого пришлось пару раз прервать и начать всю карусель заново, но с вами такого уже не случится.
Драйвера и доводка
По окончанию процесса установки диспетчер устройств недосчитается некоторых драйверов. Предположительно, это могут быть:
Нужно скормить им драйвера из набора virtio-win , что подключены через IDE CD-ROM в предыдущем разделе.
Делается это стандартно: правой кнопкой на желтый знак вопроса, обновить драйвера, путь к файлам.
Вот весь список, а это соседняя страница RedHat доков, где установка драйверов показана подробнее.
- Balloon, the balloon driver, affects the PCI standard RAM Controller in the System devices group.
- vioserial, the serial driver, affects the PCI Simple Communication Controller in the System devices group.
- NetKVM, the network driver, affects the Network adapters group. This driver is only available if a virtio NIC is configured. Configurable parameters for this driver are documented in Appendix E, NetKVM Driver Parameters.
- viostor, the block driver, affects the Disk drives group. This driver is only available if a virtio disk is configured.
Оборудование
Тут постепенно начинается область безграничных возможностей и 101 способов сделать по-своему, поэтому я покажу, как это работает у меня, а вы можете настроить более точно под свои нужды.
У меня выбран дисплей Сервер Spice и звуковое устройство ich6 . Нет, конечно, если у вас уйма времени и желание во всем разобраться до самых тонкостей — дерзайте и пробуйте альтернативные подходы, но у меня звук взлетел, вернее завибрировал, только с такими настройками. Во второй части, посвященной прогулке по граблям и отлову багов, я расскажу об этом подробнее. В закладке видео я выставил QXL , ибо с этой опцией, благодаря волшебному драйверу, мне удалось добиться нормального разрешения экрана.
Подключаться к ВМ можно разнообразно.
- Через графический интерфейс virt-manager
- Выбрать дисплей VNC-сервер и подключаться через vnc-клиента
- Установить Spice-клиента и подключаться через него
- К Windows можно подключиться через rdp, если включен терминальный сервер
У меня вариант 3, для Gentoo это программа spice-gtk
Сеть для ВМ можно настроить по-разному, на Хабре умельцы уже об этом писали. Я перепробовал несколько способов, и в конце простота опять взяла вверх. Сама ВМ запускается из под рута [3] , но графический интерфейс spice-gtk — из под обычного непривилегированного пользователя. Это позволяет решить дилемму: для сетевых опций нужны права рута, а для звукового демона pulseaudio, рут запрещен. Я пробовал навешать все права на обычного пользователя, но ничего не получалось, то pulse не пульсирует, то сеть не создается, там много а тут мало. В итоге решил так и доволен. Буду рад, если в комментариях будет найден лучший способ.
Такой простой выбор сетевых опций дает результат превосходящий ожидания. Создаются 3 дополнительных сетевых интерфейса: virbr0, virbr0-nic, vnet0.
В iptables создается свод правил, вот основные:
Повторяю, все это libvirtd создает сам, ничего для этого делать не надо. В результате имеем нормальный роутинг между хостом и ВМ, можно обмениваться файлами по ssh / scp . Можно пойти дальше и создать шару на Windows, а на Linux хосте настроить samba, но мне это показалось избыточным.
В завершение
Трудно рассказать в одной статье обо всех аспектах Windows + QEMU/KVM, поэтому завершим в следующей. А там будет самый смак, командный интерфейс, разрешение экрана максимум 1024×768, Сцилла pulseaudio и Харибда сети, команда virsh и настройка ВМ из конфиг файла, фейл с tpm , двоичный синтаксис устройств и прочие тихие радости.
- ↑TUN/TAP interfaces
- ↑Ethernet bridging
- ↑От английского root
Источник