Эмулируем Windows на Android Lollipop через BOCHS


Что такое QEMU?

Не будет преувеличением сказать, что виртуализация — это очень востребованная в настоящее время технология. Сегодня по запросу слова виртуализация в поисковой системе выдается примерно 22 миллиона результатов. Например, только за один месяц корпорация EMC объявила о выводе на рынок ценных бумаг подразделения VMware, Citrix System объявила о планах покупки XenSource, появилось множество новых компаний в сегменте виртуализации. На этом, как оказалось, колоссальном рынке постоянно обнаруживаются новые ниши. Но за всеми разговорами о первоначальных публичных предложениях и поглощениях в области виртуализации в эти дни легко забыть о некоторых других уже существующих технологиях виртуализации.

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

QEMU 4.2.

QEMU 4.2 выпущен со многими улучшениями для виртуализации Linux.

В ПО есть много изменений, которые завершатся к концу 2020 году. Перечислим некоторые моменты обновления ведущего эмулятора с открытым исходным кодом:

  • Поддержка расширений Intel AVX-512 BFloat16 (BF16).
  • В последних обновлениях всех моделей процессоров расширения TSX (Transactional Synchronization Extensions) по умолчанию отключены. Это связано с недавней уязвимостью TSX Async Abort / Zombieload Variant Two.
  • Лучшая производительность для эмуляции Tiny Code Generator (TCG) ядер ARM.
  • Еще одно улучшение, производительности утилиты может появиться в недавних библиотеках Gcrypt и Nettle. Теперь QEMU использует собственный режим шифрования библиотеки XTS. В результате, наблюдается значительное повышение производительности для шифрования AES-XTS
  • Драйвер блока LUKS теперь поддерживает Falloc
  • Поддержка на ARM
  • Поддержка модели ASpeed ​​AST2600.
  • Arm SVE (Scalable Vector Extensions) теперь поддерживается гостевыми KVM

QEMU 4.0 — запущен только в апреле 2020 года, и уже активно разрабатывается v. 5.0, чтобы сменить v. 4.2.

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

  • устройств VirtIO IOMMU,
  • XIVE для гостей POWER KVM
  • ioctl часов реального времени

Если исходить из четырехмесячного темпа релиза, то выпуск QEMU 5.0 состоится скорее всего, в апреле 2020.

Краткое введение в технологию виртуализации

Начнем с краткого введения в технологию виртуализации, чтобы заложить основу для рассмотрения QEMU.

Под виртуализацией в этой статье подразумевается виртуализация платформы. Для физического оборудования, контролирующая программа может быть операционной системой-хозяином или гипервизором (см. Рисунок 1). В некоторых случаях сама хозяйская операционная система и является гипервизором. Гостевые операционные системы «проживают» на гипервизоре. В некоторых случаях гостевые операционные системы ориентированы на тот же процессор, что и контролирующая программа, но в других случаях платформы могут быть отличными (например, гостевая система PowerPC работает на x86 платформе).

Рисунок 1. Базовая архитектура виртуализации платформы

Кликните, чтобы увидеть увеличенное изображение

Реализовать виртуализацию можно множеством путей, но наиболее часто встречаются три основных метода. Первый называется «родной» (или полной) виртуализацией. В этом варианте гипервизор реализует основные элементы изоляции, отделяя физическое оборудование от гостевой операционной системы. Этот подход впервые был продемонстрирован в 1966 году в операционной системе виртуальных машин/виртуальной памяти IBM® CP — 40, а сейчас тот же метод используется в VMware ESX Server.

Другой популярный метод виртуализации называется паравиртуализацией. В случае паравиртуализации контролирующая программа реализует интерфейса прикладных программ (API) гипервизора, который используется гостевой операционной системой. Паравиртуализацию используют Xen и Linux Kernel-based Virtual Machine (KVM).

Третий полезный метод называется эмуляцией. Эмуляция, как видно из названия, виртуализует гостевую платформу благодаря полной имитации аппаратной среды. Эмуляция осуществляется в различных формах, даже в пределах одного и того же приложения. Примерами виртуализации посредством эмуляции -являются QEMU и Bochs.

О QEMU

QEMU — это ПО с открытым исходным кодом (FOSS), разработанное Fabrice Bellard и распространяемая по лицензии GPL. Утилита поддерживает широкий спектр ОС, включая Windows и MacOS. Bochs, PearPC.

Продукт аналогичен VirtualBox и VMware, но изначально это инструмент на основе команд, в отличие от двух упомянутых. Чтобы получить почти аппаратную скорость оборудования в среде виртуализации, можно использовать ее с KVM.

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

Основная часть продукта выпущена под LGPL, в то время как симуляция режима системы выпущена под GPL.

Преимущества ПО QEMU

  • Несколько архитектур поддерживаются по умолчанию.
  • Моделирование компьютеров IA-32 (x86), AMD 64, MIPS R4000, Sun SPARC sun3 и PowerPC (PReP и Power Macintosh)
  • Масштабируемость для настройки новых наборов команд
  • Открытый исходный код, в результате быстрое моделирование
  • В архитектуре x86, которая поддерживает аппаратную виртуализацию, можно использовать KVM для ускорения с помощью резервной памяти, что быстрее, чем VMware ESX.
  • Увеличена скорость симуляции, некоторые программы запускаются даже в режиме реального времени
  • Программы, которые могут запускать Linux на других платформах
  • Хранит и восстанавливать рабочее состояние (например, запущенные программы)
  • Виртуальная сетевая карта

Недостатки QEMU

  • Несовершенная поддержка Microsoft Windows и некоторых хост-операционных систем.
  • Поддержка менее распространенных архитектур
  • Если вы не используете ускоритель kqemu или KVM, скорость его моделирования будет ниже чем у других виртуальных программ, таких как VMware.
  • Сложно установить и использовать другое ПО для моделирования, такое как VirtualBox.

Официальный сайт QEMU

Архитектура QEMU

Рассмотрим, как QEMU обеспечивает эмуляцию. В этом разделе описываются два режима работы QEMU, а также некоторые интересные аспекты динамического транслятора QEMU.

Основные операции QEMU

QEMU поддерживает два режима эмуляции: пользовательский режим [User-mode] и системный режим [System-mode]. Пользовательский режим эмуляции позволяет процессу, созданному на одном процессоре, работать на другом (выполняется динамический перевод инструкций для принимающего процессора и конвертация системных вызовов Linux). Системный режим эмуляции позволяет эмулировать систему целиком, включая процессор и разнообразную периферию.

При эмуляции кода для x86 на хост-системе с архитектурой x86 можно достичь эффективности, близкой к родной, с помощью так называемого акселератора QEMU. Он позволяет исполнять эмулируемый код непосредственно на центральном процессоре хоста (на Linux через модуль ядра).

Но что делает QEMU действительно интересным с технической точки зрения, так это его быстрый и компактный динамический транслятор . Динамический транслятор позволяет выполнять во время исполнения переводить инструкции целевого (гостевого) процессора в инструкции центрального процессора хоста для обеспечения эмуляции. Это может быть сделано методом грубой силы (просто заменяя инструкции одного процессора другими), но это не всегда легко сделать, а в некоторых случаях одна инструкция может потребовать нескольких инструкций или даже изменений в их порядке следования для транслируемой архитектуры.

QEMU обеспечивает динамическую трансляцию преобразованием целевой инструкции в микрооперации. Эти микрооперации представляют собой элементы С-кода, которые компилируются в объекты. Затем вступает в дело основной транслятор. Он отображает целевые инструкции на микрооперации для динамической трансляции. Такой подход не только эффективен, но и обеспечивает переносимость.

Динамический транслятор QEMU также кэширует блоки транслируемого кода для снижения накладных расходов транслятора. Когда блок целевого кода встречается впервые, он переводится и хранится в виде транслированного блока . Кэш QEMU хранит недавно переведенные блоки в буфере объемом 16 МБ. QEMU может даже поддерживать самомодифицирующийся код, аннулируя транслированные блоки в кэше.

Узнать больше о деталях внутреннего устройства QEMU и ее динамическом трансляторе можно в интересной статье Фабриса Белларда (автора QEMU), представленной в разделе Ресурсы.

Поддерживаемые периферийные устройства

Использование QEMU в качестве эмулятора персонального компьютера обеспечивает поддержку разнообразных периферийных устройств. Естественно, сюда входят стандартные периферийные устройства — эмулятор аппаратного видеоадаптера (VGA), мыши и клавиатуры PS/2, интерфейс IDE для жестких дисков, интерфейс CD-ROM и эмуляция дисковода. Кроме того, QEMU имеет возможность эмуляции сетевых адаптеров NE2000 (PCI), последовательных портов, многочисленных звуковых плат и контроллера PCI Universal Host Controller Interface (UHCI) Universal Serial Bus (USB) (с виртуальным USB концентратором). Также поддерживается до 255 процессоров с поддержкой симметричной многопроцессорности (SMP).

Помимо стандартных PC и ISA PC (без шины PCI), QEMU может эмулировать и другие аппаратные платформы, не связанные с ПК, такие как базовые платы АРМ Versatile (с использованием 926E) и платы на основе Malta million instructions per second (MIPS). В настоящее время ведется работа по реализации поддержки ряда других платформ, включая Power Macintosh G3 (Blue & White) и Sun 4u.

  • -serial dev
    — Перенаправить вертуальный последовательный порт к хостовому символьному устройству dev. Дефолтовое устройство — «vc» в графическом режиме, и «stdio» в неграфическом режиме. Эта опция может использоваться несколько раз, для симуляции вплоть до четырёх последовательных портов. Используйте «-serial none», для отключения всех последовательных портов. Доступные символьные устройства — таковы: «vc» — виртуальная конмоль. «pty» — [только linux] — псевдо TTY (новые PTY — выделяются автоматически). «none» — нет выделенного устройства. NULL» — пустое устройство. «/dev/XXX» — [только linux] — использовать tty хоста, т.е. /dev/ttyS0. Параметры последовательного порта хоста устанавливаются по параметрам эмулируемого. «/dev/parportN» — [только linux, только параллельный порт] — использовать параллельный порт N хоста. В настоящее время, vj;tn использоваться лишь параллельный порт SPP. «file:filename» — записывать вывод в файл. Символы не могут читаться. «stdio» — [только UNIX] — стандартный ввод/вывод. «pipe:filename» — именованная труба filename. «COMn» — [только Windows] — использовать последовательный порт n хоста. «udp:[remote_host]:remote_port[@[src_ip]:src_port]» — это реализайия сетевой консоли UDP. Когда remote_host или src_ip не определены, они, по умолчанию, — 0.0.0.0. Когда не используется заданный src_port, автоматически выбирается случайный порт. Если вы лишь хотите простую консоль только для чтения, вы можете использовать «netcat» или «nc», пуётм запуска qemu c: «-serial udp::4555» и nc как: «nc -u -l -p 4555». В любой момент времени qemu что-то пишет в порт, таким образом это будет показано в сессии сетевой консоли. Если вы планируете посылать символы назад через сетевую консоль, или вы хотите остановить и запустить qemu несколько раз, вы должны сделать, чтобы qemu использовал тот же исходный порт каждый раз, используя что-то вроде «-serial udp::[email protected]» для qemu. Иной подход — использовать пропатченную версию netcat, которая может слушать TCP порт и посылать и принимать символы по udp. Если у вас есть патченная версия netcat, которая активирует удалённое эхо telnet, и передачу единичного символа, тогда вы можете использовать следующие опции, для повышения перенаправления netcat к разрешённому порту telnet 5555, для доступа к порту qemu.
    «Qemu Options:» -serial udp::[email protected] «netcat options:» -u -P 4555
    -L
    0
    .
    0
    .
    0
    .
    0
    :
    4556
    -t -p
    5555
    -I -T «telnet options:» localhost
    5555

    «tcp:[host]:port[,server][,nowait][,nodelay]» — сетевая консоль TCP имеет два режима работы. Она может посылать последовательный ввод/вывод в определённое местоположение, или ожидать соединения от определённого места. По умолчанию, сетевая консоль TCP посылается к host на port. Если вы используете опцию QEMU server, заставляющую ожидать сокет клиентского приложения, соединения к порту до продолжения, кроме случая когда задана опция «nowait». Опция «nodelay» отключает алгоритм буферизации Nagle. Если опущен host, предполагается 0.0.0.0. В это время принимаются лишь TCP соединения. Вы можете использовать соединение «telnet», для соответствующего символьного устройства.

    «Пример посылки консоли tcp к 192
    .
    168
    .
    0
    .
    2
    порт
    4444
    » -serial tcp:
    192
    .
    168
    .
    0
    .
    2
    :
    4444
    «Пример прослушивания и ожидания на порту
    4444
    , для соединения» -serial tcp::
    4444
    ,server «Пример не ожидания и прослушивания на ip
    192
    .
    168
    .
    0
    .
    100
    порт
    4444
    » -serial tcp:
    192
    .
    168
    .
    0
    .
    100
    :
    4444
    ,server,nowait

    «telnet:host:port[,server][,nowait][,nodelay]» — Вместо сырого tcp сокета используется соединение по протоколу telnet. Опция работает также, как если вы задаёте «-serial tcp». Отличие — что порт выступает как сервер или клиент, используя опции переговоров telnet. Это, также, позволяет вам посылать последовательность MAGIC_SYSRQ, если вы используете поддержку посылки прерывающей последовательности telnet. Обычно, в UNIX клиенте telnet, вы делаете это при помощи Control-], и, затем, вводите «send break», сопровождаемое нажатием клавиши Enter. «unix:path[,server][,nowait]» — доменный сокет UNIX использвуется место сокета tcp. Опция работает также как если вы задаёте «-serial tcp», за тем исключением, что для соединения используется доменный сокет UNIX path.

  • Сборка и установка QEMU

    Сборка и установка QEMU выполняется очень просто с помощью стандартных инструментов GNU. После скачивания и разархивирования дистрибутива QEMU нужно выполнить configure, make, а затем make install (см. листинг 1).

    Листинг 1. Сборка эмулятора QEMU

    $ wget https://fabrice.bellard.free.fr/qemu/qemu-0.9.0.tar.gz $ tar xfvz qemu-0.9.0.tar.gz $ cd qemu-0.9.0 $ ./configure $ make $ make install $
    Этот процесс создает не только загружаемый образ qemu для текущей целевой архитектуры, но и образы для других архитектур, включая ARM, MIPS, PowerPC, 68k и SPARC. После этого можно загрузить ядро Linux уже собранным для различных целевых архитектур.

    Если гостевая и операционная система хоста нацелены на одну архитектуру, то можно увеличить скорость до близкой к родной, используя акселератор QEMU (KQEMU). KQEMU — это драйвер (модуль ядра для Linux), позволяющий пользовательскому коду и коду ядра запускаться напрямую на центральном процессоре хоста. Собрать акселератор QEMU также просто, как и сам QEMU (см. листинг 2).

    Листинг 2. Сборка акселератора QEMU

    $ wget https://fabrice.bellard.free.fr/qemu/kqemu-1.3.0pre11.tar.gz $ tar xvfz kqemu-1.3.0pre11.tar.gz $ cd kqemu-1.3.0pre11 $ ./configure $ make $ make install
    KQEMU можно скомпилировать и установить на множестве операционных систем, включая Microsoft® Windows®, FreeBSD® и Linux. После сборки акселератора QEMU его нужно установить в Linux, используя следующую команду:

    $ insmod kqemu.ko $

    Как установить QEMU в Windows

    Скачать установочный файл эмулятора можно с официального сайта www.qemu.org/download/#windows,

    есть редакции 32-битные и 64-битные, версию выбираем последнюю.

    Устанавливается QEMU как обычная программа в папку Program Files\qemu, но можно выбрать и другое расположение.

    Установку выполняем с параметрами по умолчанию, ничего менять не нужно, просто жмем в окне мастера «Next».

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

    Теперь рассмотрим использование QEMU для виртуализации другой машины в типичной среде настольного ПК под GNU/Linux. Эмуляция другой машины похожа на начало работы с только что купленным новым компьютером. Первый шаг — это установка операционной системы. Новый компьютер, конечно, должен иметь место для установки операционной системы, поэтому необходим жесткий диск.

    QEMU предоставляет специальную команду для создания жесткого диска, которая называется qemu-img. Эта утилита создает образы различных форматов, но лучший (для qemu) из них называется qcow (или qemu copy-on-write). Преимуществом данного формата является то, что образ эмулируемого диска не обязательно должен занимать физический файл такого же объема. Другими словами, формат допускает пропуски, что позволяет сделать образ диска более компактным. Например, пустой образ диска объемом 4 ГБ займет всего 16 КБ.

    Для quemu-img необходимо указать операцию (create для создания нового образа диска), формат (qcow для форматирования образа qemu), размер и имя образа диска. Следующий пример эмулирует машину для небольшого дистрибутива Linux, предполагаемого для использования на Flash. Итак, создаем образ диска на 128 МБ:

    $ qemu-img create -f qcow disk.img 128M Formating ‘disk.img’, fmt=qcow, size=131072 kB $

    Необходимо помнить, что если планируется установка операционной системы общего назначения, такой как Windows, Linux или FreeBSD, то нужен гораздо больший диск. Результат выполненной операции — файл disk.img — будет содержать эмулируемый диск размером 128 МБ.

    Теперь, когда жесткий диск создан, можно установить на него новую операционную систему. Для демонстрации этого процесса я использую небольшой дистрибутив Linux, называемый cfLinux, предназначенный для применения в качестве небольшой встраиваемой Linux-системы в таких устройствах, как шлюзы, беспроводные точки доступа, брандмауэры и маршрутизаторы. Этот дистрибутив можно загрузить в формате ISO с помощью wget:

    wget ftp://ftp.cflinux.fu/pub/cflinux/iso/cflinux-1.0.iso

    Образ ISO представляют собой широко применяемый формат CD-ROM (также известный как файловая система ISO 9660).

    Теперь у нас есть эмулируемый диск (disk.img) и CD-ROM, с которого можно инсталлировать операционную систему. Следующим шагом будет инсталляция системы на жесткий диск. Это делается очень просто с помощью qemu:

    $ qemu -hda disk.img -cdrom /root/cflinux-1.0.iso -boot d $

    При использовании qemu образ жесткого диска задается с помощью опции hda, а компакт-диск (файл, где располагается образ) — с помощью опции cdrom. Опция boot позволяет загрузиться с CD-ROM. Аргумент d указывает загружаться с CD-ROM, a — с флоппи-диска, c указывает на загрузку с жесткого диска (по умолчанию), а n — загрузку с сети. Если команда введена правильно, то появится новое окно QEMU с эмулируемой машиной (см. Рисунок 2).

    Рисунок 2. Подготовка к установке cfLinux на эмулируемый диск в QEMU

    Кликните, чтобы увидеть увеличенное изображение

    Следуя инструкциям по установке с CD-ROM, легко закончить установку с ISO-образа на эмулируемый жесткий диск. Установка требует перезагрузки. В этом месте можно закончить эмуляцию (Ctrl-C в окне qemu). Теперь можно загрузить свежеустановленную операционную систему с помощью следующей команды:

    $ qemu -hda disk.img $

    Эта команда просто эмулирует стандартный PC (опция по умолчанию) с жестким диском, представленным файлом образа disk.img. Образ Linux, загрузившись с эмулируемого жесткого диска, выдаст в результате окно QEMU, показанное на Рисунке 3.

    Рисунок 3. Загрузка свежеустановленного cfLinux с эмулируемого жесткого диска

    Кликните, чтобы увидеть увеличенное изображение

    Как видите, все очень просто. При этом такую же последовательность действий можно использовать для установки и загрузки любых разновидностей операционных систем (дистрибутивов Linux, Windows и других).

    Установка QEMU

    Информация об установке есть на официальном сайте, в разделе Download QEMU. Тем, кто использует Windows, нужно будет скачать установочный файл (в зависимости от разряда своей системы).

    Команда для установки QEMU на Linux выглядит следующим образом (для примера взята Ubuntu):

    # apt-get install qemu

    Все довольно просто, так как QEMU есть в официальных репозиториях Ubuntu.

    Для изучения всех возможностей QEMU стоит обратиться к официальной документации.

    Команда для создания образа:

    # qemu-img create myimage.img mysize

    • myimage.img — название файла с образом диска;
    • mysize — размер в килобайтах (для размера в мегабайтах в конце надо добавить M, в гигабайтах — G: 10G);
    • если нужно указать формат (qcow2 — формат, который используется QEMU по умолчанию), то нужно использовать ключ -f:

    # qemu-img create -f qcow2 myimage.img 10G

    Более подробную информацию о команде qemu-img можно посмотреть здесь.

    Команда для запуска системы:

    # qemu-system-x86_64 -hda myimage.img -boot d -cdrom ~/downloads/ubuntu-17.04-server-amd64.iso -m 640

    В этом случае:

    • жесткий диск подключается как -hda (другие возможные варианты: -hdb, -hdc, -hdd);
    • если указать -boot d, то загрузка будет начинаться с CD-ROM (в противном случае -с жесткого диска);
    • -cdrom указывает, что файл будет использоваться как образ CD-ROM (поэтому нельзя одновременно использовать ключи -cdrom и -hdc);
    • в конце указывается количество оперативной памяти, которое будет выделено для машины.

    После этого будет выполнена установка новой системы, которую потом можно запустить командой:

    # qemu -hda myimage.img -m 640

    Для того, чтобы включить поддержку KVM, нужно добавить -enable-kvm в конце.

    Другие эмуляторы

    Хотя QEMU — великолепная среда эмуляции, другие программы тоже достойны изучения. Wine — реализация Windows API с открытым исходным кодом — позволяет запускать приложения Windows без самой операционной системы Windows. Но, как объясняет расшифровка сокращения Wine, Wine — это не эмулятор (Wine — Wine Is Not an Emulator). Вместо эмуляции Wine реализует набор API, позволяющий запускаться приложениям архитектуры x86. Поэтому приложения, запускаемые в Wine, чувствуют себя хорошо.

    На QEMU похож эмулятор Bochs. Bochs — это эмулятор компьютера, позволяющий эмулировать не только процессоры Intel® i386™, i486™, Pentium®, Pentium Pro и Advanced Micro Devices AMD64, но также обычную PC-периферию, такую как диски, память, дисплей и сетевые устройства. Bochs может использоваться для эмуляции операционных систем Linux, DOS и Windows 95/98/XP/2000/NT®.

    Общее описание

    Приложение является виртуальным инструментом эмуляции платформ, архитектур и самых разных осей. У виртуальной машины расширенная совместимость, благодаря которой QEMU работает с разнообразной периферией ПК и его аппаратным обеспечением. Виртуализация может проходить как на уровне центрального процессора, так и на программном уровне. Среда взаимодействует с нужной операционной системой, только необходимо указать количество системных ресурсов. ПО эмулирует как 32-битные, так и 64-разрядные системы процессоров ARM, PowerPC, SPARC, MIPS.
    Если подобрать соответствующий дистрибутив, то на QEMU можно поставить что угодно. Это может быть десктопная ОС Линукса или мобильная ось Андроида.

    Весь процесс не требует настройки BIOS. А ПО не нуждается в инсталляции дополнительных расширений и драйверов. Программный интерфейс выполнен в виде командной строки. Поэтому пользователь должен уметь работать с командами консоли. Свое назначение QEMU находит среди разработчиков кроссплатформенных ПО, которое нуждается в предварительной диагностики и бета-тестировании в разных ОС и на разной архитектуре процессоров. В данной сфере применения программа является уникальным и эффективным решением. Также можно тестировать образы и сборки Линукса.

    Благодаря открытому исходному коду приложение легко можно модифицировать и видоизменять под свои цели. QEMU имеет расширенную поддержку и распознает USB 3.0 и любые другие подключенные устройства. У среды высокая производительность и системные сбои практически не наблюдаются. Программа выгодно выделяется своими преимуществами среди проблемных аналогов. Скорость работы у софта высокая и в целом приложение не проседает.

    Двигаясь дальше

    Использование QEMU как эмулятора компьютера позволяет экспериментировать с множеством операционных систем без необходимости иметь запасную машину. Например, с ReactOS — Windows XP-совместимой операционной системой с открытым кодом (эмуляция которой показана на Рисунке 4).

    ReactOS стремится к бинарной совместимости с Windows XP, так что на ReactOS можно запускать приложения для Windows XP. В разделе Ресурсы приведены ссылки на ресурсы, содержащие информацию о текущей совместимости с приложениями.

    Рисунок 4. Эмуляция стандартного PC с ReactOS

    Кликните, чтобы увидеть увеличенное изображение

    Образ QEMU с ReactOS и множеством других операционных систем можно найти на Free Operating Systems Zoo (более подробная информация приведена в разделе Ресурсы). Эти операционные системы представлены в виде образов Live CD, дискет или дисков (в формате qcow). QEMU — это отличный способ попробовать новые операционные системы, не тратя время на их установку.

    Ресурсы для скачивания

    • этот контент в PDF

    Похожие темы

    • «System emulation with QEMU (EN)» — оригинал данной статьи.
    • В статье «QEMU, a Fast and Portable Dynamic Translator (EN)» (PDF) Фабриса Белларда описывается внутреннее устройство динамического транслятора QEMU.
    • В статье «Виртуальный Linux» рассказывается о других принципах Linux-виртуализации.
    • Статья «Узнайте о виртуальной машине ядра Linux (KVM)» посвящена архитектуре Linux KVM и тому, как ее интеграция с ядром позволяет изменить подходы к использованию Linux.
    • Эмулятор QEMU и акселератор QEMU на сайте Фабриса Белларда. Там же можно найти документацию, API и информацию о текущем этапе развития QEMU.
    • Информация о cfLinux (EN); автор использует этот маленький дистрибутив для демонстрации установки Linux на машину QEMU.
    • С сайта Free Operating Systems Zoo (EN) можно скачать готовые образы систем, чтобы сэкономить время. На этом сайте можно найти образы множества операционных систем от стандартных дистрибутивов Linux до экзотических операционных систем (Plan 9, OpenSolaris, MINUX, ReactOS, Darwin, MenuetOS и других). После загрузки любого образа диска, он готов к запуску.
    • ReactOS — это двоично совместимая с Windows операционная система с открытым кодом, которая позволяет исполнять множество приложений Windows.
    • Wine позволяет запускать приложения Windows на не-Windows операционных системах, таких как Linux.
    • Bochs как и QEMU, также позволяет полностью эмулировать систему.
    • В разделе Linux сайта developerWorks находится множество ресурсов для разработчиков Linux, а также самые популярные статьи и учебные пособия.

    1) KVM

    KVM (Kernel-based Virtual Machine) – гипервизор (VMM – Virtual Machine Manager), работающий в виде модуля на ОС Linux. Гипервизор нужен для того, чтобы запускать некий софт в несуществующей (виртуальной) среде и при этом, скрывать от этого софта реальное физическое железо, на котором этот софт работает. Гипервизор работает в роли «прокладки» между физическим железом (хостом) и виртуальной ОС (гостем).
    Поскольку KVM является стандартным модулем ядра Linux, он получает от ядра все положенные ништяки (работа с памятью, планировщик и пр.). А соответственно, в конечном итоге, все эти преимущества достаются и гостям (т.к. гости работают на гипервизоре, которые работает на/в ядре ОС Linux).

    KVM очень быстрый, но его самого по себе недостаточно для запуска виртуальной ОС, т.к. для этого нужна эмуляция I/O. Для I/O (процессор, диски, сеть, видео, PCI, USB, серийные порты и т.д.) KVM использует QEMU.

    Этап I.

    1. Скачиваем QEMU для ПК: qemu_0.13.0_windows.zip [19,7 Mb]

    2. На диске C создаём папку QEMU и распаковываем туда все файлы и скачанного архива.

    3. Запускаем командный редактор, для этого одновременно нажимаем на клавиатуре кнопки Флажок+R. Запускаем консоль командой cmd и нажимаем Enter. При помощи команды cd переходим в созданную папку (набираем cd c:\QEMU и нажимаем Enter).Обратите внимание, что данное окно закрывать дол окончания всего процесса не стоит, т.к. оно понадобится не раз.

    4. Далее нам нужно создать образ жесткого диска (для этого набираем команду qemu-img create -f raw disk.img 2000M и нажимаем Enter) Где:

    disk.img — наименование жесткого диска 2000M — размер жесткого диска в мегабайтах (размер можно задать любой, главное чтобы на него уместилась ОС Windiows.)

    5. Теперь вам нужно найти любой установочный диск с Windows XP и создать образ (.iso) и переименовать его в image.iso (как создавать образы тут описывать не буду, для тех кто это

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

    6. Копируем полученный образ image.iso в папку c:\QEMU

    7. Теперь, когда все подготовлено, запускаем QEMU (для этого набираем команду qemu.exe -m 1024 -boot d -cdrom image.iso -hda disk.img) Где: -m 1024 — объем оперативной памяти, который будет доступен QEMU -boot d — указывает на загрузку с cd-rom -cdrom image.iso — непосредственно установочный диск -hda disk.img — образ созданного жесткого диска[/spoiler]

    8. Теперь устанавливаем XP так, как вы это делаете на ПК.

    Создание образа Windows закончено.

    Созданный disk.img из папки C:\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 попросит сменить диск

    ? Мне из-за этого пришлось пару раз прервать и начать всю карусель заново, но с вами такого уже не случится.
    (qemu) change ide1-cd0 /tmp/windows_8.1_x64_disk2.iso

    Рейтинг
    ( 1 оценка, среднее 4 из 5 )
    Понравилась статья? Поделиться с друзьями:
    Для любых предложений по сайту: [email protected]