Qemu machine emulators and tools что это
Как пользоваться qemu
Преимущество виртуализации в том, что она позволяет запустить несколько разных операционных систем на одном компьютере одновременно и при этом неважно какой они будут архитектуры. Среди домашних пользователей достаточно часто используются такие программы для эмуляции компьютера, как Virtualbox и VMware, это мощные программы с графическим интерфейсом и множеством возможностей, которые очень просто настроить.
Что такое qemu?
Qemu использует аппаратную виртуализацию, поэтому может выполнять гостевые операционные системы почти так же быстро, как и на основном железе. Может использоваться гипервизор XEN или модуль ядра KVM в Linux. Qemu может работать в двух режимах работы:
Эмулировать можно такие архитектуры: x86 (32 и 64 бит), PowerPC (32 и 64 бит), ARM, MIPS (32 бит), Sprac (32 и 64 бит), Alpha, ColdFire(m68k), CRISv2 и MicroBlaze. Этот список уже более внушительный чем у Virtualbox.
Установка qemu
Перед тем как мы сможем использовать программу, необходимо ее установить. Если вы используете дистрибутив Linux, например, Ubuntu, то сможете найти программу в официальных репозиториях. Для Ubuntu команда будет выглядеть вот так:
sudo apt install qemu-kvm qemu
Для Fedora и других систем RedHat можно установить группу Virtualization:
sudo dnf install @virtualization
В ArchLinux используйте Pacman:
Для Windows или MacOS вам нужно скачать исполняемый файл из официального сайта. Программа управляется только через терминал, так что вы главном меню системы ничего не появиться после установки. А теперь перейдем к тому как настроить qemu.
Как пользоваться qemu?
Теперь, когда программа установлена и готова к использованию попытаемся разобраться как ее запустить и применять. Но сначала нужно разобраться какие команды и для чего используются. Эмулятор qemu создает много команд, но их можно разделить на группы:
Сначала разберемся с эмуляцией полной системы, поскольку для решения этой задачи виртуальная машина qemu используется чаще всего, а уже потом перейдем к режиму пользователя.
1. Использование qemu-system
Чтобы вы понимали что и откуда берется для начала рассмотрим опции утилиты qemu-system. Синтаксис команды такой:
$ qemu-system параметры
Куда сложнее здесь синтаксис каждого из параметров:
-имя_параметра имя_опции = значение : значение2
Мы рассмотрим только основные параметры, и их опции, которые нам понадобятся:
Мы рассмотрели опции для qemu-system-x86-64, для других архитектур, они могут немного отличаться. А теперь разберем несколько простых примеров как использовать qemu, как создать машину qemu и настроить ее.
Сначала нужно создать жесткий диск для установки. Вы можете использовать реальные жесткие диски, но работать с образами намного удобнее. Можно просто создать пустой файл, заполненный нулями, а затем форматировать его в нужную файловую систему во время установки, но также можно создать файл формата qcow2, этот формат используется по умолчанию в qemu. Воспользуемся командой qemu-img:
Здесь мы подключаем наш жесткий диск как hda, затем указываем что нужно загружаться с cdrom и подключаем образ системы ubuntu к нему. Последний параметр указывает сколько оперативной памяти будет выделено для машины.
Дальше откроется окно, похожее на VritualBox и начнется установка системы. После того как установка будет завершена, вы сможете запускать машину командой:
Создавать виртуальную машину с другой архитектурой не очень сложно, достаточно изменить команду. Например, сделаем виртуальную машину ppc:
По умолчанию в гостевой системе не будет звука, но вы можете подключить туда звуковую карту:
2. Использование эмуляции окружения
Теперь рассмотрим использование qemu для эмуляции архитектуры в окружении пользователя. Команда qemu-user или qemu-архитектура позволяет выполнять программы, собранные для другой архитектуры прямо в вашей системе. Это очень часто используется для отладки программ, собранных для arm на компьютере или других подобных задач. Команде достаточно передать команду и ее параметры:
Точно так же вы можете выполнить arm программу или программу для любой из поддерживаемых архитектур.
Выводы
В этой статье мы очень кратко рассмотрели как пользоваться qemu, основные настройки этой утилиты и опции. На самом деле там намного больше опций и возможностей. Одна только возможность эмулировать такое огромное количество архитектур чего стоит. Если для вас эмулятор qemu слишком сложен через терминал, то можно использовать графический интерфейс, например, virt-manager. А вы используете qemu? Или предпочитаете другие виртуальные машины? Почему? Напишите в комментариях!
Обзор и установка QEMU
QEMU – это приложение виртуализации, бесплатный инструмент с открытым исходным кодом, который используется для эмуляции различных архитектур.
Перед знакомством с QEMU стоит рассказать о том, что такое виртуализация и эмуляция в частности.
Виртуализация и виртуальная машина
Если говорить обобщенно, виртуализация позволяет использовать на одном физическом компьютере несколько виртуальных машин.
А виртуальная машина, в свою очередь, это программа, которая эмулирует (имитирует) работу другого компьютера. То есть на виртуальную машину можно установить операционную систему, она имеет свою оперативную память, жесткий диск и так далее.
Если мощностей компьютера хватает, то на нем можно запускать несколько виртуальных машин, в том числе и одновременно.
Поэтому чаще всего виртуальные машины используются в тех случаях, когда нужно получить новое рабочее окружение без переустановки основной операционной системы (например, Linux на машине с Windows и наоборот). Виртуальные машины позволяют эмулировать архитектуры игровых приставок. Также они используются для защиты информации и ограничения возможностей запускаемых процессов. Виртуальную машину удобно переносить на другой компьютер: для этого нужно только установить на нем программу эмуляции и перенести образ нужной виртуальной машины. В общем, существует множество преимуществ использования виртуальных машин.
Популярные программы виртуализации это:
О последней и пойдет речь в этой статье.
QEMU – это программа, которая используется для эмуляции программного обеспечения разных платформ. Она распространяется бесплатно и имеет открытый исходный код. Работает во всех популярных операционных системах – Microsoft Windows, Linux, MacOS, а также ее можно запускать на Android.
Существует программная и аппаратная виртуализация – QEMU использует вторую. Аппаратная виртуализация дает возможность использовать изолированные гостевые операционные системы, которые будут управляться гипервизором (используется гипервизор XEN либо модуль ядра KVM в Linux).
Два режима работы, в которых может работать QEMU, это:
QEMU может эмулировать следующие архитектуры:
QEMU чуть сложнее использовать, чем некоторые другие программы виртуализации, так как она больше похожа на командную строку Linux, чем на приложение. Поэтому ее стоит использовать опытным пользователям.
Установка QEMU
Команда для установки QEMU на Linux выглядит следующим образом (для примера взята Ubuntu):
Все довольно просто, так как QEMU есть в официальных репозиториях Ubuntu.
Команда для создания образа:
Команда для запуска системы:
После этого будет выполнена установка новой системы, которую потом можно запустить командой:
Заключение
QEMU – хороший инструмент виртуализации, обладающий широкими возможностями. Он подойдет не всем, однако может составить конкуренцию даже VirtualBox.
А вы пользуетесь программами виртуализации? Какими именно?
Общие принципы работы QEMU-KVM
Мое текущее понимание:
1) KVM
KVM (Kernel-based Virtual Machine) – гипервизор (VMM – Virtual Machine Manager), работающий в виде модуля на ОС Linux. Гипервизор нужен для того, чтобы запускать некий софт в несуществующей (виртуальной) среде и при этом, скрывать от этого софта реальное физическое железо, на котором этот софт работает. Гипервизор работает в роли «прокладки» между физическим железом (хостом) и виртуальной ОС (гостем).
Поскольку KVM является стандартным модулем ядра Linux, он получает от ядра все положенные ништяки (работа с памятью, планировщик и пр.). А соответственно, в конечном итоге, все эти преимущества достаются и гостям (т.к. гости работают на гипервизоре, которые работает на/в ядре ОС Linux).
KVM очень быстрый, но его самого по себе недостаточно для запуска виртуальной ОС, т.к. для этого нужна эмуляция I/O. Для I/O (процессор, диски, сеть, видео, PCI, USB, серийные порты и т.д.) KVM использует QEMU.
2) QEMU
QEMU (Quick Emulator) – эмулятор различных устройств, который позволяет запускать операционные системы, предназначенные под одну архитектуру, на другой (например, ARM –> x86). Кроме процессора, QEMU эмулирует различные периферийные устройства: сетевые карты, HDD, видео карты, PCI, USB и пр.
Инструкции/бинарный код (например, ARM) конвертируются в промежуточный платформонезависимый код при помощи конвертера TCG (Tiny Code Generator) и затем этот платформонезависимый бинарный код конвертируется уже в целевые инструкции/код (например, x86).
ARM –> промежуточный_код –> x86
По сути, вы можете запускать виртуальные машины на QEMU на любом хосте, даже со старыми моделями процессоров, не поддерживающими Intel VT-x (Intel Virtualization Technology) / AMD SVM (AMD Secure Virtual Machine). Однако в таком случае, это будет работать весьма медленно, в связи с тем, что исполняемый бинарный код нужно перекомпилировать на лету два раза, при помощи TCG (TCG – это Just-in-Time compiler).
Т.е. сам по себе QEMU мега крутой, но работает очень медленно.
3) Protection rings
Бинарный программный код на процессорах работает не просто так, а располагается на разных уровнях (кольцах / Protection rings) с разными уровнями доступа к данным, от самого привилегированного (Ring 0), до самого ограниченного, зарегулированного и «с закрученными гайками» (Ring 3).
Операционная система (ядро ОС) работает на Ring 0 (kernel mode) и может делать с любыми данными и устройствами все, что угодно. Пользовательские приложения работают на уровне Ring 3 (user mode) и не в праве делать все, что захотят, а вместо этого каждый раз должны запрашивать доступ на проведение той или иной операции (таким образом, пользовательские приложения имеют доступ только к собственным данным и не могут «влезть» в «чужую песочницу»). Ring 1 и 2 предназначены для использования драйверами.
До изобретения Intel VT-x / AMD SVM, гипервизоры работали на Ring 0, а гости работали на Ring 1. Поскольку у Ring 1 недостаточно прав для нормального функционирования ОС, то при каждом привилегированном вызове от гостевой системы, гипервизору приходилось на лету модифицировать этот вызов и выполнять его на Ring 0 (примерно так, как это делает QEMU). Т.е. гостевой бинарный код НЕ выполнялся напрямую на процессоре, а каждый раз на лету проходил несколько промежуточных модификаций.
Накладные расходы были существенными и это было большой проблемой и тогда производители процессоров, независимо друг от друга, выпустили расширенный набор инструкций (Intel VT-x / AMD SVM), позволяющих выполнять код гостевых ОС НАПРЯМУЮ на процессоре хоста (минуя всякие затратные промежуточные этапы, как это было раньше).
4) QEMU-KVM
KVM предоставляет доступ гостям к Ring 0 и использует QEMU для эмуляции I/O (процессор, диски, сеть, видео, PCI, USB, серийные порты и т.д., которые «видят» и с которыми работают гости).
Отсюда QEMU-KVM (или KVM-QEMU) 🙂
P.S. Текст этой статьи изначально был опубликован в Telegram канале @RU_Voip в качестве ответа на вопрос одного из участников канала.
Напишите в комментариях, в каких местах я не правильно понимаю тему или если есть, что дополнить.
Виртуализация операционных систем с помощью QEMU. Основы работы с эмулятором
Но есть и другие, в чём-то даже более гибкие и продуктивные решения хотя и куда менее удобные в использовании. Например, QEMU — бесплатная программа с открытым исходным кодом, предназначенная для эмуляции программного обеспечения и операционных систем. Инструмент использует аппаратную виртуализацию, поддерживая два режима работы:
Как установить QEMU в Windows
Скачать установочный файл эмулятора можно с официального сайта www.qemu.org/download/#windows,
есть редакции 32-битные и 64-битные, версию выбираем последнюю.
Установку выполняем с параметрами по умолчанию, ничего менять не нужно, просто жмем в окне мастера «Next».
Виртуализация операционных систем в QEMU
В отличие от VirtualBox и подобных гипервизоров, QEMU не имеет графического интерфейса, работа с ней ведется через командную строку. Команд и параметров для создания и управления виртуальными машинами много, но для начала вам нужно знать хотя бы эти шесть.
Чтобы вам стало всё немного понятнее, установим и запустим с помощью QEMU какую-нибудь операционную систему. Для примера мы выбрали Windows XP, так как она легкая и занимает на диске мало места. QEMU у нас уже установлен, открываем командную строку, переходим в каталог установки и создаем виртуальный жесткий диск следующей командой:
Теперь сформируем следующую команду:
После выполнения команды появляется окошко QEMU с загрузочным меню, в котором мы выбираем установку на диск.
Далее проходим все этапы установки операционной системы вплоть до локальных настроек и загрузки рабочего стола.
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 лучше всего подходит для начинающих пользователей, чтобы виртуализировать ОС своих выбор.