- Виртуализация операционных систем с помощью QEMU. Основы работы с эмулятором
- Как установить QEMU в Windows
- Виртуализация операционных систем в QEMU
- Установка Windows на KVM
- Установка Windows на KVM
- Конфигурация виртуальной машины
- Правильная установка Windows XP в KVM или Технонекрофилия на марше
- QEMU/KVM и установка Windows
- Подготовка
- Запуск и инсталляция
- Драйвера и доводка
- Оборудование
- В завершение
Виртуализация операционных систем с помощью QEMU. Основы работы с эмулятором
Виртуализация — наиболее доступный способ запустить на одном ПК вторую операционную систему, не устанавливая ее непосредственно на жесткий диск. Вместо этого вторая ОС устанавливается на диск виртуальный, представленный специальным файлом-контейнером, созданным в гипервизоре — программе, позволяющей эмулировать работу гостевой системы в системе хостовой. Наибольшей популярностью среди домашних юзеров пользуются гипервизоры VirtualBox и VMware с мощным функционалом и наглядным GUI .
Но есть и другие, в чём-то даже более гибкие и продуктивные решения хотя и куда менее удобные в использовании. Например, QEMU — бесплатная программа с открытым исходным кодом, предназначенная для эмуляции программного обеспечения и операционных систем. Инструмент использует аппаратную виртуализацию, поддерживая два режима работы:
• Полная эмуляция — данный режим применяется для запуска операционных систем, в его рамках QEMU эмулирует физическое устройство со всеми его компонентами, встроенными и периферийными.
• Эмуляция пользовательского режима — дает возможность запускать программы, созданные для конкретной архитектуры на другой архитектуре, например, приложения ARM в x86 . Режим доступен только в хостовой системе Linux.
QEMU поддерживается эмуляция архитектуры x86 , ARM , MIPS , PowerPC , m68k , Alpha , SPARC , SH-4 , CRISv2 , MicroBlaze и это более солидный список, чем у того же Виртуалбокс.
Как установить QEMU в Windows
Скачать установочный файл эмулятора можно с официального сайта www.qemu.org/download/#windows,
есть редакции 32-битные и 64-битные, версию выбираем последнюю.
Устанавливается QEMU как обычная программа в папку Program Files\qemu , но можно выбрать и другое расположение.
Установку выполняем с параметрами по умолчанию, ничего менять не нужно, просто жмем в окне мастера «Next».
Виртуализация операционных систем в QEMU
В отличие от VirtualBox и подобных гипервизоров, QEMU не имеет графического интерфейса, работа с ней ведется через командную строку. Команд и параметров для создания и управления виртуальными машинами много, но для начала вам нужно знать хотя бы эти шесть.
• qemu-system — задает архитектуру виртуальной машины.
• qemu-img create — создает файл виртуального IMG -диска, на который будет устанавливаться операционная система.
• -m — выделяет виртуальной ОС указанный объем оперативной памяти.
• -hda — подключает созданный виртуальный диск.
• -boot IMG — указывает, что загрузка должна производиться с виртуального диска, вместо IMG следует указать имя IMG -файла.
• cdrom — содержит путь к установочному образу ISO , эмулирует дисковод.
Чтобы вам стало всё немного понятнее, установим и запустим с помощью QEMU какую-нибудь операционную систему. Для примера мы выбрали Windows XP, так как она легкая и занимает на диске мало места. QEMU у нас уже установлен, открываем командную строку, переходим в каталог установки и создаем виртуальный жесткий диск следующей командой:
qemu-img.exe create -f raw c.img 5000M
Файл qemu-img.exe в эмуляторе отвечает за создание IMG -образов, с — это название образа, 5000 — размер виртуального диска в мегабайтах. По умолчанию образ будет создан в папке QEMU .
Теперь сформируем следующую команду:
qemu-system-i386w.exe -boot c -m 350 -hda c.img -cdrom «E:\WinXP_SP3.iso»
Исполняемый файл в начале команды отвечает за создание виртуальной машины с архитектурой х86 , -boot с ключом -с сообщает, что грузиться она будет с диска, в значение параметра -hda подставляем созданный образ, а в качестве значения параметра –cdrom указываем путь к дистрибутиву Windows.
После выполнения команды появляется окошко QEMU с загрузочным меню, в котором мы выбираем установку на диск.
Далее проходим все этапы установки операционной системы вплоть до локальных настроек и загрузки рабочего стола.
Чтобы запустить закрытую виртуальную машину, выполните команду qemu-system-i386w.exe -hda name.img , где name — название вашего виртуального диска, чтобы удалить ставшую ненужной VM, просто удалите из каталога установки QEMU созданный IMG -образ.
Управлять QEMU можно с помощью клавиатуры и мыши, для переключения между эмулятором и хостовой машиной используйте комбинацию Ctrl + Alt + G . Запущенная с минимальными настройками ОС не будет иметь доступа к аудио- и сетевой карте, не будет также возможности обмена файлами между виртуальной и хостовой системами.
Нельзя сказать, что QEMU лучше или хуже VirtualBox либо VMware, это альтернативное средство виртуализации, имеющие как свои плюсы, так и минусы. QEMU менее удобен, требует знания документации и демонстрирует весьма небольшую производительность. Для ускорения работы в Windows требуется установка и настройка Диспетчера аппаратного ускорения HAXM, в Linux – подключение загружаемого модуля ядра KVM . С другой стороны, инструмент позволяет эмулировать работу устройств на базе разных архитектур, не поддерживаемые популярными гипервизорами.
Установка Windows на KVM
Установка Windows на KVM для опытных системных администраторов не составит труда. Тем не менее, в процессе развертывания ОС и создания под неё виртуальной машины могут встретиться ряд нетривиальных проблем , связанных с особенностями KVM. О них я и расскажу.
Если вам интересна тематика Debian и связанных с ним приложений, рекомендую обратиться к тегу Debian на моем блоге
Установка Windows на KVM
К настоящему моменту у меня уже есть сервер с KVM. На нем также сконфигурирована сеть и хранилище гостевых дисков. Все это я подробно расписал в своей предыдущей статье Установка гипервизора KVM.
Для создания виртуальной машины я буду использовать утилиту virt-install.
Конфигурация виртуальной машины
Есть ряд базовых параметров, без указания которых создание виртуальной машины с помощью virt-install невозможно — это имя ВМ, объем оперативной памяти, настройки диска и параметры установки. Тем не менее, для наглядности я укажу и другие опции, которые так или иначе используются не реже обязательных.
Команда для создания виртуальной машины:
- —-os-type windows — Устанавливает более подходящие аппаратные настройки для конкретной ветки ОС;
- —disk pool=guest_images — Создает виртуальные диски в данном хранилище;
- —graphics vnc,listen=0.0.0.0 — Устанавливаем тип графики. Адрес прослушки необходим, чтобы к vnc могли подключаться удаленные админы. По дефолту разрешены только локальные подключения.
Назначение остальных параметров очевидно.
Если в процессе создания виртуальной машины вы получили ошибку:
Правильная установка Windows XP в KVM или Технонекрофилия на марше
По работе потребовалось, чтобы некая программа для windows была постоянно доступна.
Ставить её на пользовательские компьютеры смысла не имело, т.к. они бывает что и выключаются, а из серверов на windows у меня под рукой был контроллер домена и вешать на него всё подряд как-то не хотелось.
Поэтому в офисе по сусекам поскребли, по отсекам помели и нашли старую, покрытую пылью лицензию к Windows XP HE. А большего, в принципе, и не нужно. И вот, я стал запихивать её в виртуалку.
Естественным образом возник спортивный интерес, как бы сделать так, чтобы жрала она поменьше, а работала пошустрее.
Понятно, что для этого виртуальное оборудование должно не эмулировать реальное железо, а использовать виртуальное. Скажем, HDD должен быть не на шине IDE, а на virtio. То же касается и сетевой карты. Обычно рекомендуют сначала ставить ОС на виртуальный IDE-HDD, затем добавлять второй виртуальный винт virtio-HDD, ставить на него драйвера, а потом выключать машину, удалять ненужный уже второй винт и менять тип системного HDD с IDE на virtio.
Честно говоря, все эти вытребеньки показались мне какими-то избыточными, поэтому я процитировал одного известного политического деятеля на предмет пути, которым мы пойдём и взялся за дело по своему.
Для начала я убедился, что virt-manager постоянно создаёт образ диска в qcow2-формате, что само по себе неплохо, но в данном случае излишне, так что я руками создал образ диска в raw-формате.
Затем, при создании виртуальной машины выбрал его и слегка поменял параметры (шину на VirtIO, кэширование на none):
Затем сменил модель сетевой карты на всё ту же VirtIO, для простоты поменял модель звуковой карты на AC97, а затем сделал самое интересное — добавил FDD и подключил в него образ дискеты, взятый отсюда: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win_x86.vfd.
После этого, при установке жёсткий диск определяется без проблем, ОС устанавливается также без проблем (единственное, жалуясь на то, что драйвера не подписаны). Однако после установки видно, что не хватает драйверов для видео, сетевой карты и пары неизвестных устройств.
Проблем в этом нет, достаточно извлечь установочный образ CD и заменить его на ISO с драйверами. Дальше просто открываем диспетчер устройств, выбираем те, что без драйверов и ставим их через автопоиск.
В результате получаем маленькую, аккуратную виртуалку, с вполне достойной производительностью.
Вопрос кому и зачем она может понадобиться в 2017 году оставим за кадром. : )
Тем более, рекомендации вполне подходят и для актуальный версий windows.
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