Как установить qemu на Ubuntu

Обновлено: 21.11.2024

В ядро ​​Linux интегрировано множество профессиональных инструментов. Эти инструменты позволяют делать множество вещей, и одна из них — виртуализация операционной системы. Это одна система внутри другой. Но сначала вам нужно установить необходимые инструменты, и именно это вы узнаете, как установить QEMU на Ubuntu 20.04

QEMU для Ubuntu

На веб-сайте QEMU мы получили следующее определение:

QEMU — это универсальный эмулятор машин и виртуализатор с открытым исходным кодом.

QEMU также имеет возможности виртуализации в операционной системе, будь то GNU/Linux, Windows или любая из поддерживаемых ею операционных систем. У программы нет графического интерфейса, но другие инструменты выступают в роли внешнего интерфейса, поэтому мы можем управлять ею быстро и удобно.

С другой стороны, QEMU поддерживает виртуализацию при работе под гипервизором Xen или при использовании модуля ядра KVM в Linux.

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

Установите QEMU в Ubuntu 20.04

Одним из больших преимуществ QEMU является то, что он доступен в официальных репозиториях Ubuntu. Поэтому установка описана как очень простая.

Чтобы запустить его, откройте терминал из главного меню Ubuntu или нажав клавиши CTRL+ALT+T

После загрузки терминала выполните следующие команды:

И я продолжаю объяснять пакеты, которые мы установили.

Пакет qemu — это пакет, содержащий приложение. С другой стороны, qemu-kvm — это пакет, который нам нужен, чтобы QEMU мог виртуализировать процессы с помощью KVM. Поскольку QEMU — это инструмент, который предоставляет нам графический интерфейс, мы установили virt-manager и virt-viewer, чтобы предоставить нам его. Пакеты libvirt – это двоичные файлы, которые QEMU и KVM используют для виртуализации и мониторинга служб.

После этого вы можете проверить статус службы libvirtd

После того, как вы установили все пакеты, вы можете использовать QEMU из терминала или virt-manager из главного меню.

Использование QEMU для создания новой виртуальной машины

Когда вы запускаете программу Virt Manager из главного меню, у вас будет доступ к графическому интерфейсу для использования QEMU и KVM.

Как видите, интерфейс довольно прост. И легко понять. Графический интерфейс Virt-менеджера

Чтобы создать новую виртуальную машину, нажмите кнопку рядом с кнопкой Открыть.

Затем нам будет представлен экран, на котором мы должны указать источник ISO-образа системы, которую мы собираемся виртуализировать. В этом случае я выберу местный.

Выбор образа ОС

Появится следующий экран. Чтобы выбрать изображение, нажмите кнопку Браузер, а затем Локальный просмотр и выберите его. Выберите ISO

Если QEMU не может определить, какая операционная система используется, просто выберите похожую. Создание новой виртуальной машины

На следующем экране вам нужно указать объем памяти и ЦП, которые вы будете выделять виртуальной машине. Выберите память и ЦП

Далее у вас есть возможность определить хранилище виртуальной машины.

Установите новый диск QEMU для виртуальной машины

На последнем экране вы можете определить сеть, которая будет использовать виртуальную машину, а также имя. Использование QEMU в Ubuntu 20.04

Затем завершите процесс, и вы сможете использовать новую виртуальную машину.

Удалить QEMU в Ubuntu 20.04

Когда вы решите, что вам больше не нужен QEMU на вашем компьютере, пришло время удалить его. Для этого выполните следующую команду:

Это приведет к удалению всех пакетов, связанных с QEMU, и их конфигураций.

Виртуализация операционной системы — очень полезная практика во многих случаях. Особенно в Linux, где у нас есть много разных дистрибутивов, и QEMU позволяет нам виртуализировать их для тестирования. И все это без их установки на реальный диск. Настоящее чудо.

Теперь, благодаря этому сообщению, вы знаете эту технологию и знаете, как ее использовать.

Итак, расскажите, используете ли вы QEMU? вам нравится это? оставьте нам комментарий и поделитесь этим постом.

сообщить об этом объявлении

Раскрытие партнерской информации

Этот веб-сайт содержит партнерские ссылки. Мы получаем небольшую комиссию за покупки, совершенные по партнерским ссылкам (без дополнительной оплаты для вас)

В этом руководстве мы узнаем, как установить и настроить QEMU в Ubuntu 20.04.

QEMU – это бесплатный гипервизор с открытым исходным кодом, который эмулирует процессор машины посредством динамической двоичной трансляции и предоставляет набор различных моделей оборудования и устройств для машины, что позволяет запускать на ней различные гостевые операционные системы.

QEMU может эмулировать полную машину в программном обеспечении без необходимости поддержки аппаратной виртуализации. Он также может обеспечивать виртуализацию API пользовательского пространства для служб ядра Linux и BSD. Обычно он вызывается косвенно через библиотеку libvirt при использовании приложений с открытым исходным кодом, таких как oVirt, OpenStack и virt-manager.

Установите QEMU в Ubuntu 20.04

1. Запустить системные обновления

Для начала нам нужно обновить наши репозитории, чтобы сделать их актуальными. Используйте следующую команду на своем терминале.

После завершения обновлений мы можем установить QEMU.

2. Установите QEMU 5.0 на Ubuntu 20.04

QEMU доступен в репозиториях Ubuntu, поэтому нам нужно установить его с помощью virt-manager с помощью следующей команды.

Пример вывода, который вы получите

Нажмите Y, чтобы продолжить установку.

По завершении установки мы можем проверить, запущен ли демон виртуализации. Этот демон виртуализации — libvirtd. проверьте с помощью следующей команды;

Чтобы открыть QEMU с помощью графического интерфейса, просто введите virt-manager на терминале

Он покажет следующее

Следуйте инструкциям по добавлению необходимых вам ISO-образов.

3. Обновите Qemu до версии 5.0

Вы поймете, что Qemu версии 4.2 находится в репозиториях Ubuntu 20.04, поэтому для обновления до 5.0 нам нужно использовать PPA. Я буду использовать Jacob Zimmermann PPA.

Выполните следующие действия:

Добавьте Джейкоба Циммерманна в свои репозитории Ubuntu

Обновите репозитории еще раз, чтобы изменения вступили в силу, и запустите команду обновления;

По завершении обновления вы можете проверить установленную версию Qemu.

Проверьте версию с помощью следующей команды;

Будет отображен следующий вывод.

Чтобы удалить Qemu, выполните следующие действия

Заключение

Мы успешно установили QEMU на Ubuntu 20.04. Чтобы узнать больше, вы можете обратиться к документации QEMU.

Возьмите исходный код последних версий и скомпилируйте его самостоятельно! Подробные инструкции по компиляции можно найти на вики для Linux, Win32 и macOS.

или оставайтесь на переднем крае с репозиторием git!

Инструкции по сборке

Чтобы загрузить и собрать QEMU 7.0.0-rc0:

Чтобы загрузить и собрать QEMU из git:

Последняя разработка происходит в главной ветке. Деревья стабильных версий расположены в ветвях с именами ветвей stable-X.YY, где X.YY — это версия выпуска.

Линукс

QEMU входит в состав большинства дистрибутивов Linux:

Архив: pacman -S qemu

Debian/Ubuntu: apt-get install qemu

Fedora: dnf install @virtualization

Gentoo: emerge --ask app-emulation/qemu

RHEL/CentOS: yum установить qemu-kvm

SUSE: zypper устанавливает qemu

macOS

QEMU можно установить из Homebrew:

QEMU можно установить с MacPorts:

QEMU требует самой последней доступной версии macOS. Поддержка последней предыдущей версии будет прекращена через два года после выпуска текущей версии или когда Apple прекратит ее поддержку, в зависимости от того, что наступит раньше.

Окна

Стефан Вейл предоставляет двоичные файлы и программы установки как для 32-разрядной, так и для 64-разрядной версии Windows.

Нумерация версий

Начиная с версии 3.0.0, QEMU использует схему нумерации версий по времени:

major увеличивается на 1 для первого релиза в году.

Подразумевается, что изменения основного номера версии не влияют на объем изменений, включенных в выпуск.Изменения, не совместимые с предыдущими версиями, могут быть внесены в любой основной выпуск ветки при условии, что они следуют политике устаревания, которая требует выдачи предупреждений как минимум за два выпуска до внесения изменений.

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

Хотя у qemu есть интерфейс командной строки и монитор для взаимодействия с запущенными гостями, они редко используются таким образом для других целей, кроме целей разработки. Libvirt обеспечивает абстракцию от конкретных версий и гипервизоров и инкапсулирует некоторые обходные пути и рекомендации.

Запуск Qemu/KVM

Несмотря на то, что есть гораздо более удобные и удобные способы, использование приведенной ниже команды, вероятно, является самым быстрым способом увидеть, как некоторые Ubuntu движутся по экрану, напрямую запуская их из iso-файла сетевой загрузки.

Предупреждение: это просто для иллюстрации - обычно не рекомендуется без проверки контрольных сумм; Multipass и UVTool — гораздо лучшие способы легкого привлечения реальных гостей.

Вы можете загрузить ISO-образ для более быстрого доступа во время выполнения и, например, добавить диск к тому же:

    создание диска

qemu-img create -f qcow2 disk.qcow 5G

Эти инструменты могут делать гораздо больше, как вы найдете на соответствующих (длинных) справочных страницах. Существует также широкий ассортимент вспомогательных инструментов, чтобы сделать их более пригодными для конкретных случаев использования и потребностей — например, virt-manager для использования с пользовательским интерфейсом через libvirt. Но в целом — даже инструменты со временем это используют — все сводится к следующему:

Поэтому взгляните на справочную страницу qemu, qemu-img и документацию qemu и посмотрите, какие параметры подходят для ваших нужд.

Графика

Графика для qemu/kvm всегда состоит из двух частей.

  • Внешний интерфейс, управляемый с помощью аргумента -vga, который предоставляется гостю. Обычно один из cirrus, std, qxl, virtio. В наши дни по умолчанию используется qxl, который обеспечивает хороший баланс между гостевой совместимостью и производительностью. Гостю нужен драйвер для того, что выбрано, что является наиболее распространенной причиной переключения со стандартного на любой cirrus (например, очень старые версии Windows)
  • Внутренняя часть, управляемая с помощью аргумента -display, которую хост использует для фактического отображения графического содержимого. Это может быть окно приложения через gtk или vnc.
  • Кроме того, можно включить серверную часть -spice (можно сделать в дополнение к vnc ), которая может быть быстрее и предоставляет больше методов аутентификации, чем vnc.
  • если вы вообще не хотите отображать графику, вы можете сэкономить немного памяти и циклов процессора, установив -nographic

Если вы используете spice или vnc, вы можете использовать собственные инструменты vnc или инструменты, ориентированные на виртуализацию, такие как virt-viewer . Подробнее об этом в разделе libvirt.

Особенно сложные случаи могут быть довольно сложными, поэтому для таких случаев рекомендуется использовать qemu через libvirt. Libvirt позаботится обо всех задачах таких конфигураций, кроме ядра/биос хоста. Ниже приведены общие основные действия, необходимые для более быстрых вариантов, таких как сквозная передача и сквозная передача через опосредованные устройства.

Подготовка к передаче PCI и промежуточных устройств — IOMMU

Первоначальные шаги для обоих из них одинаковы, вы хотите убедиться, что в вашей системе включен IOMMU, а передаваемое устройство должно находиться в отдельной группе. Включение VT-d и IOMMU обычно является действием BIOS и, следовательно, зависит от производителя.

На стороне ядра для функции IOMMU есть различные параметры, которые вы можете включить/настроить. В последних ядрах Ubuntu (>=5.4 => ядра Focal или Bionic-HWE) все обычно работает по умолчанию, если только настройка вашего оборудования не требует каких-либо параметров настройки.

** Примечание **:
Карточка, используемая во всех приведенных ниже примерах, например. при фильтрации идентификаторов PCI или назначении это Nvidia V100 с идентификатором PCI 41.00.0
$ lspci | grep 3D
3D-контроллер 41:00.0: NVIDIA Corporation GV100GL [Tesla V100 PCIe 16GB] (rev a1)

Вы можете проверить сообщения ядра при загрузке на наличие сообщений iommu/dmar или даже отфильтровать их по определенному идентификатору pci.

Если у вас есть конкретное устройство и вы хотите проверить его группу, вы можете сделать это через sysfs.
Если у вас есть несколько карт или вам нужен полный список, вы можете использовать для этого те же пути sysfs.

Другим полезным инструментом на этом этапе (но не вдаваясь в подробности) может быть virsh node* , особенно virsh nodedev-list --tree и virsh nodedev-dumpxml

** Примечание **
Некоторые старые или не серверные платы имеют тенденцию группировать устройства в одну группу IOMMU, что не очень полезно, поскольку это означает, что вам нужно будет передать «все или ни одно из них». ” тому же гостю.

Подготовка к сквозному подключению PCI и промежуточных устройств — блокировка хост-драйверов

В обоих случаях вам нужно убедиться, что обычный драйвер не загружен. В некоторых случаях это можно сделать во время выполнения с помощью virsh nodedev-detach

<р>. Позже Libvirt сделает это даже автоматически в установленной вами сквозной конфигурации.
Обычно это работает нормально, например. для сетевых карт, но некоторые другие устройства, такие как графические процессоры, не слишком любят быть неназначенными, поэтому обычно требуется блокировать загрузку драйверов, которые вы не хотите загружать. В нашем примере с графическим процессором загрузится драйвер nouveau, и его необходимо заблокировать. Для этого вы можете создать черный список modprobe.

Вы можете проверить загруженные и доступные модули ядра с помощью lspci -v

Если конфигурация не работает, вместо этого будет отображаться:

Подготовка к сквозному подключению опосредованных устройств — драйвер

Для прохода через PCI все вышеперечисленные действия потребуются, для опосредованных устройств также необходимо установить и настроить драйвер хоста, пример здесь продолжается с нашей Nvidia V100, которая поддерживается и доступна Nvidia.
Также есть документ Nvidia о тех же шагах, доступных для установки и настройки vGPU в Ubuntu.

После того как вы получили драйверы от Nvidia, такие как nvidia-vgpu-ubuntu-470_470.68_amd64.deb, установите их и проверьте (как указано выше), что этот драйвер загружен. Вам нужно увидеть nvidia_vgpu_vfio :

Примечание.
Хотя он работает без него, для полноты возможностей вам также потребуется настроить менеджер vgpu (поставляется с указанным выше пакетом) и сервер лицензий, чтобы каждый гость мог получить лицензию для предоставленный ему vGPU. См. документацию Nvidias для сервера лицензий. Хотя (по состоянию на первый квартал 2022 г.) официально не поддерживается в Linux, стоит отметить, что он отлично работает в Ubuntu с помощью sudo apt install unzip default-jre tomcat9 liblog4j2-java libslf4j-java с использованием /var/lib/tomcat9 в качестве путь к серверу в программе установки сервера лицензий.
Примеры нормального запуска

Опосредованное устройство — это, по сути, разделение аппаратного устройства с использованием встроенного ПО и функций драйвера хоста. Это обеспечивает некоторую гибкость и возможности: в нашем примере мы можем разделить наш 16-гигабитный графический процессор на 2x8G, 4x4G, 8x2G или 16x1G по мере необходимости. Ниже приведен пример того, как разделить его на две карты 8G для профиля вычислений и передать их гостям.
Пожалуйста, обратитесь к документации nvidia для дополнительных настроек и различных профилей карты.

Инструментом для составления списка и настройки таких опосредованных устройств является mdevctl . В нем будут перечислены доступные типы.

Зная идентификатор pci 0000:41:00.0 и тип промежуточного устройства, которое нам нужно, nvidia-300, теперь мы можем создать эти промежуточные устройства:

После вышеизложенного вы можете проверить UUID ваших готовых устройств-посредников

Эти UUID затем можно использовать для передачи опосредованных устройств гостю, что в данном случае очень похоже на передачу полного устройства PCI.

Прохождение через PCI или промежуточные устройства

После того, как приведенная выше настройка готова, можно пройти через эти устройства в libvirt для прохода PCI, который выглядит следующим образом:

И для опосредованных устройств это очень похоже, но с использованием UUID.

Эти разделы могут быть либо частью самого определения гостевой системы, либо добавляться при запуске гостевой системы, либо освобождаться при завершении работы гостевой системы. Или они могут быть в файле и использоваться для горячего добавления и удаления, если аппаратное устройство и его драйверы поддерживают это virsh attach-device .

Примечание.
Это прекрасно работает в Focal, но type='none' и display='off' недоступны в Bionic. Если требуется этот уровень контроля, необходимо рассмотреть возможность использования Ubuntu Cloud Archive или Server-Backports для более нового стека компонентов виртуализации.

И, наконец, возможно, стоит отметить, что, хотя промежуточные устройства становятся все более распространенными и известными для обработки vGPU, они представляют собой общую инфраструктуру, которая также используется, например, для s390x vfio-ccw.

Обновление типа машины

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

  • чтобы получать последние исправления и функции безопасности
  • продолжить использовать гостевую систему, созданную в неподдерживаемой версии

В целом рекомендуется обновлять типы машин при обновлении qemu/kvm до новой основной версии. Но это, скорее всего, никогда не будет автоматизированной задачей, поскольку это изменение видно гостю. Внешний вид гостевых устройств может измениться, гостю будут объявлены новые функции и т. д. Linux обычно очень хорошо переносит такие изменения, но это настолько зависит от настроек и нагрузки гостя, что это должен оценивать владелец/администратор системы.Известно, что другие операционные системы часто оказывают серьезное влияние при замене оборудования. Рассмотрим изменение типа машины аналогично замене всех устройств и встроенного ПО физической машины на последнюю версию — все соображения, применимые в этом случае, применимы и к оценке обновления типа машины.

Как обычно, при значительных изменениях конфигурации целесообразно создать резервную копию определения гостевой системы и состояния диска, чтобы на всякий случай выполнить откат. Не существует встроенной единой команды для обновления типа машины с помощью virsh или подобных инструментов. Это нормальная часть определения вашей машины. И поэтому обновляется так же, как и большинство других.

Сначала выключите компьютер и подождите, пока он не достигнет этого состояния.

Затем отредактируйте определение машины и найдите тип в теге типа в атрибуте машины.

Измените это значение на нужное. Если вам нужно проверить, какие типы доступны через «-M ?» Обратите внимание, что при предоставлении восходящих типов для удобства поддерживаются только типы Ubuntu. Там вы также можете увидеть, каким будет текущее значение по умолчанию. Как правило, настоятельно рекомендуется перейти на более новые типы, если это возможно, чтобы использовать новые функции, а также воспользоваться исправлениями ошибок, которые применяются только к более новой виртуализации устройств.

После этого вы можете снова запустить своего гостя. Вы можете проверить текущий тип машины с гостевой и хост-системы в зависимости от ваших потребностей.

Если вы храните неактивные определения, например файлы xml, не забудьте обновить и их.

Примечание

Это также задокументировано вместе с некоторыми другими ограничениями и соображениями на Ubuntu Wiki

Использование QEMU для microvms

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

Для этого было добавлено несколько компонентов:

  • тип машины microvm
  • альтернативный простой FW, который может загружать Linux, называется qboot
  • сборка qemu с ограниченными функциями, соответствующими этим вариантам использования, называется qemu-system-x86-microvm

Например, если у вас уже есть урезанная рабочая нагрузка, в которой все, что она будет выполнять, находится в initrd, вы можете запустить ее примерно так:

$ sudo qemu-system-x86_64 -M ubuntu-q35 -cpu host -m 1024 -enable-kvm -serial mon:stdio -nographic -display curses -append 'console=ttyS0,115200,8n1' -kernel vmlinuz- 5.4.0-21 -initrd /boot/initrd.img-5.4.0-21-рабочая нагрузка

Чтобы запустить то же самое с microvm , qboot и свернутым qemu, вы должны сделать следующее

запустите его с типом microvm, поэтому измените -M на
-M microvm

используйте биос qboot, добавьте
-bios /usr/share/qemu/bios-microvm.bin

установите пакет qemu-system с минимальным набором функций, выполните
$ sudo apt install qemu-system-x86-microvm

Теперь вызов будет выглядеть так:

$ sudo qemu-system-x86_64 -M microvm -bios /usr/share/qemu/bios-microvm.bin -cpu host -m 1024 -enable-kvm -serial mon:stdio -nographic -display curses -append ' console=ttyS0,115200,8n1' -kernel vmlinuz-5.4.0-21 -initrd /boot/initrd.img-5.4.0-21-workload

Это значительно сократит время инициализации qemu, bios и виртуального оборудования.
Теперь вы будете - больше, чем раньше - будете проводить большую часть времени внутри гостевой системы, что означает, что дальнейшая настройка, вероятно, должна идти во время инициализации этого ядра и пользовательского пространства.

** Примечание **
На данный момент microvm, биос qboot и другие его компоненты являются довольно новыми и не проверенными, как многие другие части стека виртуализации. Поэтому ни один из вышеперечисленных не является значением по умолчанию. Кроме того, использование по умолчанию также будет означать, что многие обновители будут регрессировать, обнаружив qemu, в котором нет большинства функций, которые они привыкли использовать. Из-за этого пакет qemu-system-x86-microvm преднамеренно является сильной опцией, конфликтующей с обычным пакетом qemu-system-x86.

Читайте также: