Qemu создать виртуальную машину
Виртуализация операционных систем с помощью QEMU. Основы работы с эмулятором
Но есть и другие, в чём-то даже более гибкие и продуктивные решения хотя и куда менее удобные в использовании. Например, QEMU — бесплатная программа с открытым исходным кодом, предназначенная для эмуляции программного обеспечения и операционных систем. Инструмент использует аппаратную виртуализацию, поддерживая два режима работы:
Как установить QEMU в Windows
Скачать установочный файл эмулятора можно с официального сайта www.qemu.org/download/#windows,
есть редакции 32-битные и 64-битные, версию выбираем последнюю.
Установку выполняем с параметрами по умолчанию, ничего менять не нужно, просто жмем в окне мастера «Next».
Виртуализация операционных систем в QEMU
В отличие от VirtualBox и подобных гипервизоров, QEMU не имеет графического интерфейса, работа с ней ведется через командную строку. Команд и параметров для создания и управления виртуальными машинами много, но для начала вам нужно знать хотя бы эти шесть.
Чтобы вам стало всё немного понятнее, установим и запустим с помощью QEMU какую-нибудь операционную систему. Для примера мы выбрали Windows XP, так как она легкая и занимает на диске мало места. QEMU у нас уже установлен, открываем командную строку, переходим в каталог установки и создаем виртуальный жесткий диск следующей командой:
Теперь сформируем следующую команду:
После выполнения команды появляется окошко QEMU с загрузочным меню, в котором мы выбираем установку на диск.
Далее проходим все этапы установки операционной системы вплоть до локальных настроек и загрузки рабочего стола.
QEMU/KVM и установка Windows
Хотим мы того или нет, но программы, для которых необходима Windows, никуда из офисов не исчезли. В ситуации, когда их использование безальтернативно, лучше иметь виртуальную ОС, например для того, чтобы подключиться к аудио-конференции через Skype for Business.
Подготовка
Подготовьте дисковое пространство. Я выделил 70 GiB, и Windows 8.1 за пару месяцев использовала почти 50 GiB так, что для обновления до 10-й версии места на диске не хватило.
В качестве проверки можно прочитать файл устройства.
Можно теперь переходить к установке.
Запуск и инсталляция
Запускаем virt-manager и создаем новую виртуальную машину из локального хранилища.
Указываем путь к установочному iso образу Windows.
Далее, на 3-м и 4-м шаге будет выбор количества CPU, объем RAM и размер дискового пространства, после чего на 5-м шаге следует выбрать дополнительные конфигурации перед настройкой.
Прописываем драйвер /usr/share/virtio-win/virtio-win.vfd и добавляем виртуальный флоппи-диск. Затем переходим на вкладку [Шина] Диск № и проделываем финт с заменой шины диска: удаляем с IDE и добавляем с VirtIO.
Чуть не забыл сказать, для чего нужен этот фокус. Специалисты утверждают, что с шиной VirtIO, производительность диска ощутимо выше.
Ну вот теперь можно начать установку.
Ну хорошо, начали мы установку. А что, если установщик Windows попросит сменить диск? Мне из-за этого пришлось пару раз прервать и начать всю карусель заново, но с вами такого уже не случится.
Драйвера и доводка
По окончанию процесса установки диспетчер устройств недосчитается некоторых драйверов. Предположительно, это могут быть:
Делается это стандартно: правой кнопкой на желтый знак вопроса, обновить драйвера, путь к файлам.
Вот весь список, а это соседняя страница RedHat доков, где установка драйверов показана подробнее.
Оборудование
Тут постепенно начинается область безграничных возможностей и 101 способов сделать по-своему, поэтому я покажу, как это работает у меня, а вы можете настроить более точно под свои нужды.
Подключаться к ВМ можно разнообразно.
У меня вариант 3, для Gentoo это программа spice-gtk
Такой простой выбор сетевых опций дает результат превосходящий ожидания. Создаются 3 дополнительных сетевых интерфейса: virbr0, virbr0-nic, vnet0.
В iptables создается свод правил, вот основные:
В завершение
Разворачиваем виртуалку с Windows с пробросом виртуальной видеокарты с помощью QEMU и Intel GVT-g
Всем привет! Intel предложили отличное решение извечной проблемы: «у меня есть ноутбук на Linux и мне надо запускать Windows с аппаратным ускорением, но у меня нет тяжеленного ноутбука с двумя GPU и жидкостным охлаждением». С помощью архитектуры своих GPU или чего-то ещё им удалось сделать так, что вы можете разбить свой встроенный Intel GPU на два или более GPU.
К сожалению, это отнюдь не так просто… Документация слегка устарела, и некоторые вещи ломаются непонятным образом без очевидной причины. Поэтому в данном посте я расскажу вам, как настроить аппаратно ускоренную виртуальную машину с Windows с крутыми быстрыми драйверами virtio и Intel GVT-g.
Для этого вам понадобится более-менее современный GPU (Примечание переводчика: согласно официальной документации, GVT-g поддерживают интегрированные видеокарты, начиная с пятого поколения Intel Core и с четвёртого поколения Xeon).
Шаг 1: настраиваем ядро
Проверьте, что у вас свежая версия ядра. Похоже, что опции для GVT-g были включены и до версии 4.8, но тогда они точно работали хуже, поэтому я рекомендую использовать последнее доступное ядро. Если вы достаточно оригинальны, чтобы собирать своё ядро, включите эти опции. Также отключите удаление неиспользуемых ksyms, поскольку эта опция вызывает баг.
Теперь нужно поправить аргументы командной строки ядра. Важные опции таковы:
Как вариант решения проблемы можно добавить эти модули в initramfs и удалить оттуда i915.
Для более подробного логирования, можно задать переменной drm.debug какое-нибудь значение, например, установка её в значение 0x02 включит сообщения от драйверов.
Шаг 2: создаём виртуального друга
Внутри mdev_supported_types можно найти целый набор директорий. Этот набор определяется количеством вашей графической памяти, каждая поддиректория соответствует некоторому типу виртуального GPU. Файл description в ней содержит информацию о памяти и разрешениях, поддерживаемых данным виртульным GPU. Если создание виртуального GPU с большой памятью с помощью вывода UUID в файл /create вам выдаёт непонятную ошибку, то у вас есть несколько опций. Сперва стоит зайти в BIOS и добавить видеопамяти, если возможно. Если это не работает, можно остановить ваш DM, переключиться на фреймбуфер, создать нужный vGPU оттуда, а затем вернуться в x11. К сожалению, такой способ приводит ко многим багам и не даёт добиться 60 FPS на моём ноутбуке. Альтернативный вариант состоит в том, чтобы создать vGPU поменьше, и использовать специальную программу для увеличения разрешения (CRU). Таким способом мне удалось добиться 60 FPS и багов и зависаний встретилось гораздо меньше.
Создать vGPU можно такой командой:
Шаг 3: Cortana кричит на вас
На очереди существенно лучше поддерживаемая и существенно более медленная и болезненная вещь — установка Windows 10. Не стоит использовать торренты или неофициальную загрузку, или старую версию Windows, правильная ссылка здесь. Также стоит скачать образ диска с драйверами virtio, разработанными специально для ускорения гостей, здесь. Установите libvirt и virt-manager и запустите libvirtd :
Примечание переводчика:
Для того, чтобы virt-manager мог подключиться к системной сессии, можно запустить его от имени суперпользователя, но лучше настроить авторизацию, например, как предложено на Arch Wiki.
Как только вы это сделали, можно приступить к созданию виртуальной машины. В диалоге настройки выберите загрузку с локального iso-образа и найдите скачанный образ. Если virt-manager не распознал его, как образ Windows 10, выберите её вручную, поскольку это ускорит Windows, так как virt-manager в этом случае предоставляет некоторые интерфейсы виртуализации от Microsoft. Создайте образ диска или LVM-раздел и настройте конфигурацию, как вам нужно. Интерфейс настройки перед установкой весьма ограничен, поэтому я обычно начинаю установку и сразу её останавливаю, чтобы полностью настроить всё. Вот некоторые настройки:
Примечание переводчика:
Несмотря на то, что пост о настройке виртуальной машины на ноутбуке, почему-то опущен вопрос насчёт раздачи сети с помощью беспроводного адаптера. Дело в том, что настройки сети по-умолчанию в virt-manager не годятся для беспроводной сети. В этой ситуации может помочь ответ на этот вопрос и комментарии к нему. Также автор предлагает использовать BIOS вместо UEFI, вероятно, из-за того, что UEFI требует дополнительной настройки. К тому же, похоже, tianocore ещё не работает с GVT-g, см. bug 935. В моём случае, впрочем, ВМ запускалась, но Windows не распознавала монитор, к которому подключена интегральная видеокарта.
В этом фрагменте я настраиваю ВМ так, чтобы она видела процессор с тремя физическими ядрами, каждое из которых имеет два гиперпотока. Далее, каждый процессор/гиперпоток прикрепляется к своему гиперпотоку, и это соответствие не меняется. Планировщик Windows знает о гиперпотоках и может их использовать корректно, не считая их отдельными процессорами. Также я включаю некоторые интерфейсы Hyper-V, которые по умолчанию выключены и могут не иметь эффекта. Если вы используете SPICE, можно добавить следующие строки, чтобы отключить сжатие, поскольку внешняя сеть для доступа к ВМ всё равно не используется.
Шаг 4: Весёлая часть
Есть три способа получить ускоренный виртуальный дисплей VM с Windows на экране вашей машины.
Что бы вы ни собирались использовать, вам всё равно придётся использовать второй вариант, чтобы установить драйвера для GPU. Встроенные драйвера от Microsoft не очень хорошо работают с GVT-g на момент написания поста, и часто ломаются. До того, как вы подсоедините vGPU к ВМ, желательно скачать последнюю версию драйвера от Intel(Судя по всему, Intel меняет подход к распространению драйверов, так что в будущем этот шаг, возможно, будет другим, либо станет вообще не нужным). Теперь убедитесь, что у вас создан vGPU. Откройте virt-manager и замените хороший быстрый QXL на медленный Cirrus во избежание конфликтов. Чтобы подключить vGPU к ВМ, нужно открыть virsh edit и где-нибудь добавить такой фрагмент:
Замечание: Когда я предоставляю XML-фрагмент вроде этого, вам по возможности следует добавить его к текущему, не заменяя ничего.
Чтобы добиться прекрасных 60 FPS, нужно переключиться на встроенный монитор QEMU на GTK+ без поддержки общего буфера обмена с хостом и подобных плюшек, а также изменить в нём одну строчку и пересобрать QEMU. Также понадобится добавить пачку противных аргументов командной строки в ваш XML. Удалите дисплей SPICE и видеокарту Cirrus и установите атрибут display у вашего vGPU в off (libvirt не поддерживает дисплей на GTK+ и не позволит загрузиться с display=’on’ без дисплея).
Масштабирование для HiDPI у монитора QEMU работает из рук вон плохо, поэтому мы его отключим. Также, вам понадобится установить переменную DISPLAY в тот номер дисплея, который вы используете. Чтобы дать пользователю, запускающему qemu, права доступа к X серверу, используйте команду:
При таких ухищрениях вы всё равно не получите выше 30 FPS из-за этого глупого бага в QEMU, если вы не пропатчите его, изменив строку, как указано в комментарии по ссылке. Убедитесь, что вы собрали только QEMU для x86-64, если только вы не собираетесь использовать его на другой платформе. Я прикрепил мой PKGBUILD, который не меняет строчку, а только лишь собирает QEMU для x86_64 без поддержки сетевого хранилища здесь.
Если вы потерялись где-то по пути, можете посмотреть мой текущий XML для libvirt.
Полезные ссылки
P. S.: Спасибо aNNiMON за помощь в вычитке текста перевода и исправлении ошибок.
QEMU (Quick EMUlator) или VirtualBox
QEMU — это программное обеспечение с открытым исходным кодом, используемое для виртуализации и в качестве эмулятора, тогда как другой инструмент VirtualBox используется для виртуализации. Прежде чем углубляться в эти инструменты, давайте взглянем на концепцию эмуляции и виртуализации:
Эмуляция — это вычислительный феномен, который позволяет одному компьютеру вести себя как другой компьютер, например, запускать другое программное обеспечение, созданное не для этого компьютера специально, например, консольные игры на вашем ПК или выполнение программного обеспечения для Windows на Mac.
Виртуализация, как следует из названия, представляет собой акт создания копии или виртуальной версии чего-либо, и на компьютерах ресурсы могут использоваться совместно с компьютерами для создания большего количества рабочих машин, обычно называемых виртуальными машинами. С другой стороны, VirtualBox — еще один полезный инструмент, специально созданный для виртуализации. Его можно установить на один компьютер, и с помощью виртуализации вы можете получить больше операционных систем вместе с родительской ОС.
Оба инструмента широко используются из-за их функциональности и требований современной эпохи, поэтому в нашей сегодняшней статье мы обсудим оба инструмента:
Плюсы и минусы VirtualBox
Давайте посмотрим на некоторые плюсы и минусы VirtualBox:
Минусы
Плюсы и минусы QEMU
В этом разделе перечислены заметные плюсы и минусы QEMU:
Плюсы
Минусы
Ключевые различия между QEMU и VirtualBox
Как обсуждалось ранее, QEMU можно использовать для эмуляции и виртуализации, однако VirtualBox можно использовать только для виртуализации. QEMU имеет двойную поддержку эмуляции и виртуализации, тогда как последняя предоставляет только функции виртуализации. Следя за этой точкой зрения, мы перечислили несколько различий между обоими инструментами:
Удобство использования: первое, что замечают пользователи, — это интерфейс и простота использования. В этом отношении VirtualBox превосходит QEMU, поскольку VB более удобен для пользователя, тогда как QEMU сложно установить и использовать.
Поддержка архитектуры: Архитектура обработки, поддерживаемая VirtualBox, основана на x32bit и x64bit; однако QEMU имеет длинный список поддерживаемых архитектур, таких как ARM, Alpha, SPARC. Поэтому QEMU рекомендуется для пользователей продвинутого уровня и для разработчиков ядра. С другой стороны, VirtualBox лучше подходит для пользователей, которые хотят запустить несколько операционных систем на одной машине без препятствий для двойной загрузки.
Настройка: функция настройки VirtualBox занимает больше времени, чем QEMU и даже другие конкуренты; Одна из причин заключается в том, что VB прост в использовании, а параметры настройки понятны и для начинающих пользователей. Хотя VB удобен для пользователя и прост в настройке, QEMU старше VirtualBox и, что интересно, VB использует несколько компонентов QEMU для виртуальных машин.
Виртуализация: для виртуализации QEMU должен быть объединен с KVM (модулем Linux), чтобы действовать как виртуальная машина, тогда как пользователи могут напрямую создавать виртуальные машины в VirtualBox без добавления каких-либо дополнительных компонентов.
Удовлетворенность конечного пользователя: Основное различие между обоими инструментами заключается в том, что VirtualBox оценивается как хороший, когда дело доходит до удовлетворенности конечного пользователя, тогда как QEMU не хватает этой функции, поэтому QEMU попадает в недооцененное ведро.
Заключение
В эту современную эпоху виртуализация и эмуляция проложили путь для любителей техники, позволяя им запускать любую ОС на своей родительской ОС и запускать программное обеспечение, недоступное для их машин. Для выполнения этих действий доступно несколько инструментов, позволяющих включить поддержку виртуализации и эмуляции. Например, QEMU — это инструмент, который поддерживает виртуализацию, а также эмуляцию, тогда как другой инструмент VirtualBox позволяет только виртуализацию. В этом руководстве мы представили подробное сравнение этих инструментов и пришли к выводу, что, если вы профессионально играете с технологиями, вы можете выбрать QEMU для виртуализации и эмуляции, тогда как VirtualBox лучше всего подходит для начинающих пользователей, чтобы виртуализировать ОС своих выбор.
Qemu-KVM: работа в Debian
Данная статья — это обобщение информации, накопленной за время использования гипервизора Qemu-KVM. Я хочу поделиться теми знаниями опытом, которыми обладаю на данный момент. Надеюсь, что моя статья пойдет на пользу тем, кто только собирается использовать гипервизор Qemu-KVM или уже использует. И еще: статья не для новичков linux (элементарные вещи здесь рассматриваться не будут).
Про данную систему виртуализации в сети написано много. Но когда действительно начинаешь с ней работать — сталкиваешься с нехваткой информации и практических примеров применения. Итак приступим.
Переходим к делу. Установку операционной среды описывать я не буду. Оговорюсь лишь, что во время установки операционной среды жесткий диск большего размера не трогал. Его время еще придет. Как установить гипервизор на Debian очень хорошо описано здесь. Лично я ставлю qemu-kvm libvirt-bin.
Гипервизор поставили, теперь немного о внутренней структуре. Есть два каталога, в которые стоит заглянуть:
/etc/libvirt/ — здесь в основном хранятся конфигурационные файлы
/var/lib/libvirt/ — здесь будут хранится образы жестких дисков, мгновенные снимки системы и многое другое.
Наш гипервизор установлен.
Теперь немного о настройках. Qemu-kvm не работает напрямую с сетевой картой на физическом компьютере. Следовательно нужно настроить мост. Что делаем: открываем файл /etc/network/interfaces и приводим его к следующему виду:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo br0
iface lo inet loopback
# Set up interfaces manually, avoiding conflicts with, e.g., network manager
iface eth0 inet manual
# Bridge setup
iface br0 inet static
bridge_ports eth0
address ххх.ххх.ххх.ххх
broadcast ххх.ххх.ххх.ххх
netmask ххх.ххх.ххх.ххх
gateway ххх.ххх.ххх.ххх
bridge_stp off
bridge_fd 0
bridge_maxwait 0
Больше информации здесь.
Далее сохраняем файл и перезагружаем компьютер.
О, чудо! Гипервизор установлен!
Дальше возникает вопрос: как управлять сервером? Управлять Qemu-kvm можно двумя программами: virt-manager и virtinst.
Virt-manager.
Эта программа рассчитана на графический интерфейс. Она поддерживает как удаленное управление виртуальными машинами, так и локальное. Но у нее есть огромный минус — аналогов для windows попросту нет.
Как лично я вышел из положения. Установил графическую оболочку LXDE и сервер xrdp, благодаря такому нехитрому набору программ мне не пришлось физически ходить к компьютеру (больно много ему чести). Я просто подключался через стандартный RDP клиент который, есть в windows. Но это дополнительная трата ресурсов компьютера.
Если вы установили virt-manager, он автоматически создает:
хранилище для образов виртуальных машин по пути /var/lib/libvirt/images
виртуальный сетевой интерфейс default.
Следовательно подмонтировать жесткий диск с большим объемом нужно в директорию /var/lib/libvirt/images.
Говорим, что пул запускается автоматически
virsh # pool-autostart storage
Стартуем пул
virsh # pool-start storage
Теперь проверяем
virsh # pool-list –all
В принципе наш гипервизор установился и его можно использовать. Но есть еще маленькая мелочь, о которой хотелось бы упомянуть. А именно о том, как работает Qemu-kvm.
Запущенная на нем виртуальная машина шлет команды физическому процессору напрямую через загружаемый модуль (kvm-amd или kvm-intel). Это должен быть один из модулей, который соответствует производителю процессора (Intel или AMD).
В сборке собственного ядра мне помогли вот эти статьи первая и вторая.
Забегу немного вперед. Многие люди в интернете жаловались на то, что модель сетевой карты virtio некорректно работает. Этому есть объяснение, и достаточно простое. Драйвера для этого устройства находятся в стадии экспериментальных. Зато virtio storage работают отлично.
Если все прошло успешно, то для подключения к консоли нашей виртуальной машины нужно установить Ultra VNC Viewer к себе на компьютер. В подключении нужно указать IP адрес сервера и порт, или доменное имя сервера и порт.
Как происходит установка Windows, надеюсь, знают все.
Теперь о драйверах виртуальных машин. Для установки драйверов нужны следующие образы дисков: virtio-win-0.1-30.iso и viostor-0.1-30-floppy.img
Последний диск не обязателен, он нужен только в том случае, если вы собираетесь установить windows xp или windows 2003 server на virtio storage (кстати, если так сделать, то операционная система работает быстрее).
Во многом поможет и вот эта статья. Рекомендую также заглядывать вот сюда.
Установил на нем Qemu-KVM, переместил на него файл конфигурации виртуальной машины и образ диска. В файле конфигурации отредактировал путь к диску виртуальной машины, перезагрузил ноутбук. И, о чудо! Гипервизор не только увидел мою виртуальную машину, но и запустил ее.
Создание снимков виртуальных машин.
Qemu-KVM поддерживает создание снимков виртуальных машин. Приведу самый простой пример. От суперпользователя заходим в virsh и выполняем следующую команду:
virsh # snapshot-create-as name
name — это имя виртуальной машины.
После того, как снимок виртуальной машины будет сделан, резервные копии файлов конфигураций будут лежать в директории /var/lib/libvirt/qemu/snapshot/. Но вот где лежат данные диска виртуальной машины — мне пока не известно.
Просмотреть снимки можно следующей командой:
virsh # snapshot-list name
Name Creation Time State
— 1360593244 2013-02-11 16:34:04 +0200 running
1360594479 2013-02-11 16:54:39 +0200 running
Восстановить из фотографии можно так:
virsh # snapshot-revert name 1360593244
Удалить не нужный снимок можно так:
virsh # snapshot-delete name 1360593244
Вот так теперь и живем: гипервизор Qemu-KVM, виртуальный контролер домена, и довольный проделанной работой я.
Спасибо всем, кто дочитал до конца. Надеюсь, мои мысли оказались полезными.