Как пользоваться qemu в windows

Документация пользователя эмулятора процессора QEMU

ПЕРЕВОД: Павел Марьянов , март 2006

Содержание

  • 1. Введение
  • 1.1 Возможности
  • 2. Установка
    • 2.1 Linux
    • 2.2 Windows
    • 2.3 Mac OS X
    • 3. Запуск QEMU в качестве эмулятора системы типа PC
      • 3.1 Введение
      • 3.2 Быстрый запуск
      • 3.3 Запуск
      • 3.4 Клавиши
      • 3.5 Монитор QEMU
        • 3.5.1 Команды
        • 3.5.2 Целочисленные выражения
        • 3.6 Образы дисков
          • 3.6.1 Быстрое создание образа диска
          • 3.6.2 Режим snapshot
          • 3.6.3 Запуск qemu-img
          • 3.7 Эмуляция сети
            • 3.7.1 Использование сетевого интерфейса tun/tap
            • 3.7.2 Использование сетевого стека в режиме пользователя
            • 3.8 Непосредственная загрузка Linux
            • 3.9 Использование GDB
            • 3.10 Дополнительная информация по эмулируемой ОС
              • 3.10.1 Linux
              • 3.10.2 Windows
                • 3.10.2.1 Поддержка графических режимов SVGA
                • 3.10.2.2 Снижение загрузки процессора
                • 3.10.2.3 Проблема с переполнением диска в Windows 2000
                • 3.10.2.4 Завершение работы Windows 2000
                • 3.10.2.5 Использование общих каталогов для Unix и Windows
                • 3.10.2.6 Проблемы с безопасностью в Windows XP
                • 3.10.3 MS-DOS и FreeDOS
                  • 3.10.3.1 Снижение загрузки процессора
                  • 4. Запуск QEMU в качестве эмулятора системы типа PowerPC
                  • 5. Запуск QEMU в качестве эмулятора системы типа Sparc32
                  • 6. Запуск QEMU в качестве эмулятора системы типа Sparc64
                  • 7. Запуск QEMU в качестве эмулятора системы типа MIPS
                  • 8. Запуск QEMU в качестве эмулятора пользовательского пространства
                    • 8.1 Быстрый запуск
                    • 8.2 Запуск Wine
                    • 8.3 Опции командной строки
                    • 9. Компиляция из исходного кода
                      • 9.1 Linux/Unix
                        • 9.1.1 Компиляция
                        • 9.1.2 Версии проверенных утилит
                        • 9.2 Windows
                        • 9.3 Кросс-компиляция в Linux для Windows
                        • 9.4 Mac OS X
                        • 1. Введение

                          1.1 Возможности

                          QEMU — это БЫСТРЫЙ! эмулятор процессора, использующий динамическую трансляцию для достижения хорошей скорости эмуляции.

                          QEMU имеет два режима работы:

                          • — Эмуляция всей системы. В этом режиме QEMU эмулирует полноценную систему (например ПК), включая процессор и различное периферийное оборудование. Его можно использовать для запуска различных операционных систем без необходимости перезагрузки ПК или для отладки кода системы.
                          • — Эмуляция пользовательского режима (только Linux-машины). В этом режиме QEMU может запускать процессы Linux, скомпилированные для одного процессора, на другом процессоре. Его можно использовать для запуска Wine — эмулятора API Windows (http://www.winehq.org), или для упрощённой кросс-компиляции и кросс-отладки.

                          QEMU может работать на системе-хозяине без драйвера, обеспечивая при этом удовлетворительную производительность.

                          При эмуляции целой системы поддерживается следующее оборудование:

                          • PC (процессор x86 или x86_64)
                          • PREP (процессор PowerPC)
                          • G3 BW PowerMac (процессор PowerPC)
                          • Mac99 PowerMac (процессор PowerPC, в процессе разработки)
                          • Sun4m (32-битный процессор Sparc)
                          • Sun4u (64-битный процессор Sparc processor, в процессе разработки)
                          • Malta board (32-битный процессор MIPS, в процессе разработки)

                          При эмуляции пользователя поддерживаются процессоры x86, PowerPC, ARM и Sparc32/64.

                          2. Установка

                          Если вы хотите самостоятельно скомпилировать QEMU, обратитесь к compilation.

                          2.1 Linux

                          Если для вашего дистрибутива есть пакет с уже откомпилированными бинарными файлами — вам нужно просто установить их. В противном случае см. compilation.

                          2.2 Windows

                          Экспериментальный бинарный инсталлятор можно загрузить с http://www.free.oszoo.org/download.php.

                          2.3 Mac OS X

                          Экспериментальный бинарный инсталлятор можно загрузить с http://www.freeoszoo.org/download.php.

                          3. Запуск QEMU в качестве эмулятора системы типа PC

                          3.1 Введение

                          Как эмулятор системы QEMU эмулирует следующее периферийное оборудование:

                          • — i440FX host PCI bridge и PIIX3 PCI to ISA bridge
                          • — PCI VGA-карту Cirrus CLGD 5446 или фиктивную VGA-карту с VESA-расширениями Bochs (аппаратный уровень, включая все нестандартные режимы).
                          • — PS/2-мышь и клавиатуру
                          • — 2 PCI IDE-интерфейса с поддержкой жёстких и приводов CD-ROM
                          • — дисковод
                          • — сетевые PCI-адаптеры NE2000
                          • — последовательные порты
                          • — звуковую карту Soundblaster 16

                          QEMU использует PC BIOS проекта Bochs и Plex86/Bochs LGPL VGA BIOS.

                          3.2 Быстрый запуск

                          Загрузите и распакуйте образ linux (`linux.img'), а затем наберите:

                          Должен загрузиться Linux, предоставив вам строку приглашения.

                          3.3 Запуск

                          disk_image — это "сырой" образ жёсткого диска, соответствующий нулевому жёсткому IDE-диску.

                          `-fda файл’ `-fdb файл’

                          Здесь файл — образ дискеты для дисковода 0/1 соответственно (See Образы дисков.). Вы можете использовать дискету системы-хозяина, указав `/dev/fd0' в качестве файла.

                          `-hda файл’ `-hdb файл’ `-hdc файл’ `-hdd файл’

                          Здесь файл — образ жёсткого диска 0, 1, 2 или 3 соответственно (See Образы дисков.).

                          Здесь file — образ CD-ROM (вы не можете одновременно использовать `-hdc’ и `-cdrom’ ). Вы можете использовать CD-ROM системы-хозяина, указав `/dev/cdrom' в качестве файла.

                          Загрузка с дискеты (a), жёсткого диска (c) или CD-ROM (d). По умолчанию выполняется загрузка с жёсткого диска.

                          Запись во временный файл, а не в файл образа жёсткого диска. В этом случае образ "сырого" диска остаётся нетронутым. Однако вы можете принудительно включить запись, нажав клавиши C-a s (See Образы дисков.).

                          Устанавливает объём виртуальной памяти в megs мегабайт. По умолчанию он составляет 128 МБ.

                          Обычно QEMU использует SDL для вывода VGA-данных. Используя эту опцию, вы можете вообще отключить графический вывод, сделав, таким образом, QEMU простым консольным приложением. Эмулируемый последовательный порт перенаправляется в консоль. Зато вы так вы можете использовать QEMU для отладки ядра Linux, имея в своём распоряжении последовательную консоль.

                          Использование раскладки клавиатуры для данного языка (например ru для русского). Эта опция нужна только в тех случаях, когда трудно получить "сырые" коды клавиш (напр., на Mac’ах или в некоторых серверах X11). Вам не нужно использовать её на машинах PC/Linux или PC/Windows.

                          Доступны следующие раскладки:

                          По умолчанию используется раскладка en-us .

                          По умолчанию эмуляция SB16 отключена, поскольку она может вызвать некоторые проблемы у Windows. Вы можете включить её вручную с помощью этой опции.

                          Настраивает часы реального времени согласно локальному времени (по умолчанию в UTC). Эта опция нужна для обеспечения правильного времени в MS-DOS или Windows.

                          Запуск в полноэкранном режиме.

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

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

                          Задаёт скрипт инициализации сети TUN/TAP [default=/etc/qemu-ifup]. Этот скрипт запускается для настройки сетевого интерфейса системы-хозяина (обычно tun0), соответствующего виртуальной сетевой карте NE2000.

                          Эмуляция n -ого числа сетевых карт (по умолчанию 1).

                          Задаёт mac-адрес первого интерфейса (в hex-формате типа aa:bb:cc:dd:ee:ff). Mac-адрес увеличивается для каждого нового сетевого интерфейса.

                          Подразумевает, что fd общается с сетевым интерфейсом tap/tun системы-хозяина и использует его. Примеры использования опции смотрите на сайте http://bellard.org/qemu/tetrinet.html.

                          Использование сетевого стека в режиме пользователя. Используется по умолчанию, если не найден скрипт инициализации сети tun/tap.

                          При использовании сетевого стека в режиме пользователя активирует встроенный сервер TFTP. Все файлы, начинающиеся с префикса , могут быть загружены с системы-хозяина в гостевую систему с помощью клиента TFTP. Клиент TFTP в гостевой системе должен быть настроен на двоичный режим передачи данных (используйте команду bin для TFTP-клиента для Unix). IP-адресом системы-хозяина обычно выступает 10.0.2.2.

                          При использовании сетевого стека в режиме пользователя активирует встроенный сервер SMB, чтобы Windows-системы могли иметь прозрачный доступ к файлам системы-хозяина, находящимся в указанном `каталоге'.

                          В гостевой ОС Windows нужно добавить строку:

                          в файл `C:\WINDOWS\LMHOSTS' (для Windows 9x/Me) или `C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS' (Windows NT/2000).

                          Тогда доступ к `каталогу' можно получить через `\\smbserver\qemu'.

                          Учтите, что на системе-хозяине должен быть установлен сервер SAMBA как `/usr/sbin/smbd'. QEMU был успешно протестирован с smbd версии 2.2.7a из Red Hat 9 и версии 3.0.10-1.fc3 из Fedora Core 3.

                          При использовании сетевого стека в режиме пользователя перенаправляет TCP- или UDP-подключения, входящие в порт_хозяина , на гостя_хозяина в порт_гостя . Если гость_хозяина не указан, используется 10.0.2.15 (адрес, выдаваемый по умолчанию встроенным сервером DHCP).

                          Например, чтобы перенаправить подключение X11 хозяина с экрана 1 на экран 0 гостя, используйте следующие команды:

                          Чтобы перенаправить telnet-подключение к порту 5555 хозяина на telnet’овский порт гостя, используйте следующие команды:

                          Далее, если вы запустите telnet localhost 5555 , вы подключитесь к telnet-серверу гостя.

                          Использование фиктивного сетевого стека: сетевыми картами не будет получено ни одного пакета.

                          Загрузка Linux. С помощью этих опций вы можете использовать заданное ядро Linux, не устанавливая его на образ диска. Это может быть полезным для раннего тестирования различных ядер.

                          Использование bzImage в качестве образа ядра.

                          Использование cmdline в качестве командной строки ядра.

                          Использование файл в качестве исходного ram-диска.

                          Перенаправление виртуального последовательного порта в устройство dev системы-хозяина. Доступные устройства:

                          [только для Linux] Pseudo TTY (новый PTY выделяется автоматически)

                          [только для Unix] стандартный ввод/вывод

                          Стандартным устройством в графическом режиме является vc , а в неграфическом — stdio .

                          Эту опцию можно использовать многократно для эмуляции до четырёх последовательных портов.

                          Перенаправление монитора в устройство dev системы-хозяина (те же самые устройства, что и для последовательных портов). Стандартным устройством в графическом режиме является vc , а в неграфическом — stdio .

                          Ожидание подключения gdb к порту 1234 (See Использование GDB.).

                          Изменение порта подключения gdb.

                          Не запускать процессор при запуске (вы должны ввести ‘c’ в мониторе).

                          Выводить журнал событий в /tmp/qemu.log.

                          Принудительно использовать физическую геометрию жёсткого диска 0 (1 c h s t =none, lba или auto). Обычно QEMU может сам определить все эти параметры. Эта опция полезна для образов дисков старого MS-DOS.

                          Эмуляция системы только с ISA (по умолчанию эмулируется система с PCI).

                          Эмуляция стандартной VGA-карты с VBE-расширениями Bochs (по умолчанию эмулируется PCI VGA Cirrus Logic GD5446)

                          Запуск из сохранённого ранее состояния ( loadvm в мониторе)

                          3.4 Клавиши

                          Во время графической эмуляции вы можете использовать следующие клавиши:

                          Переключение в полноэкранный режим.

                          Переключение в виртуальную. консоль ‘n’. Стандартными консолями могут быть:

                          дисплей системы назначения

                          Переключение захвата клавиатуры и мыши.

                          В виртуальных консолях вы можете использовать сочетания клавиш Ctrl-Up , Ctrl-Down , Ctrl-PageUp и Ctrl-PageDown для перемещения по журналу сообщений.

                          Во время эмуляции, если вы используете опцию `-nographic’ , нажмите используйте Ctrl-a h , чтобы можно было вызвать в терминале следующие команды:

                          Вывод этой справки.

                          Выход из эмулятора.

                          Сохранение данных диска в файл (если используется -snapshot).

                          Отправка break (magic sysrq в Linux).

                          Переключение между консолью и монитором.

                          Отправка комбинации клавиш Ctrl-a.

                          3.5 Монитор QEMU

                          Монитор QEMU используется для выполнения сложных команд в эмуляторе QEMU. Вы можете использовать его для:

                          • — извлечения или вставки образов съёмных накопителей (таких как CD-ROM или дисководов);
                          • — "замораживать"/"размораживать" виртуальную машину (ВМ) и сохранять или восстанавливать её состояние из файла на диске;
                          • — изучать состояние ВМ без необходимости использования внешнего отладчика.

                          3.5.1 Команды

                          Доступны следующие команды:

                          Вывод справки по всем командам или только по команде cmd .

                          Запись изменений в образ диска (если используется -snapshot).

                          показывает различную информацию о состоянии системы:

                          показывает состояние сети

                          показывает блочные устройства

                          показывает регистры процессора

                          показывает историю набранных команд

                          Выход из эмулятора.

                          `eject [-f] устройство’

                          Извлечение съёмного носителя (используйте для принудительного извлечения -f).

                          `change устройство файла’

                          Смена съёмного носителя.

                          Сохранение содержимого экрана в виде PPM-изображения в файл .

                          Включение журналирования указанных объектов в файл `/tmp/qemu.log'.

                          Сохранение состояния виртуальной машины в файл .

                          Восстановление состояния виртуальной машины из файла .

                          Запуск сеанса gdbserver (по умолчанию порт=1234).

                          Дамп виртуальной памяти, начиная с указанного адреса .

                          Дамп физической памяти, начиная с указанного адреса .

                          fmt — это формат, сообщающий команде, как нужно форматировать данные. Его синтаксис: `/<количество><формат><размер>’

                          это число объектов для дампа.

                          может быть x (шестнадцатиричный), d (десятичный со знаком), u (десятичный без знака), o (восьмеричный), c (символьный) или i (инструкции asm).

                          может быть b (8 бит), h (16 бит), w (32 бит) или g (64 бит). На платформе x86 размеры h или w могут быть указаны с форматом i для выбора размера инструкций для 16- или 32-битного кода соответственно.

                          • Дамп 10 инструкций относительно текущего указателя:
                          • Дамп 80-ти 16-битных значений относительно начала видеопамяти:

                          `p или print/fmt выражение’

                          Вывод значения выражения. Используется только часть format из fmt .

                          Отправляет клавиши в эмулятор. Используйте — для одновременного нажатия нескольких клавиш. Пример:

                          Эта команда полезна для отправки нажатий клавиш, которые ваш графический интерфейс перехватывает на низком уровне, наподобие ctrl-alt-f1 в X Window.

                          3.5.2 Целочисленные выражения

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

                          3.6 Образы дисков

                          QEMU, начиная с версии 0.6.1, поддерживает несколько форматов образов дисков, включая образы растущего объёма (их размер увеличивается по мере записи непустых секторов), а также сжатые и зашифрованные образы дисков.

                          3.6.1 Быстрое создание образа диска

                          Вы можете создать образ диска с помощью команды:

                          где образ.img — это имя файла образа диска, а размер — его размер в килобайтах. Вы можете добавить окончание M , чтобы указать размер в мегабайтах, и G для размера в гигабайтах.

                          Дополнительную информацию See Запуск qemu-img.

                          3.6.2 Режим snapshot

                          Если вы используете опцию `-snapshot’ , все образы дисков используются только для чтения. При записи секторов они записываются во временный файл, созданный в `/tmp'. Однако вы можете включить принудительную запись в "сырой" образ диска с помощью команды commit в мониторе (или клавиш C-a s в последовательной консоли).

                          3.6.3 Запуск qemu-img

                          Поддерживаются следующие команды:

                          `create [-e] [-b базовый_образ ] [-f формат ] файл [ размер ]’ `commit [-f формат ] файл ‘ `convert [-c] [-e] [-f формат ] файл [-O выходной_формат ] выходой_файл ‘ `info [-f формат ] файл ‘

                          имя файла с образом диска

                          образ диска, доступный только для чтения, который используется в качестве базы для образа т.н. copy-on-write; в этом образе сохраняются только изменённые данные.

                          это формат образа диска. В большинстве случаев он определяется автоматически. Поддерживаются следующие форматы:

                          "Сырой" формат (по умолчанию). Преимуществом этого формата является то, что он прост и легко экспортируется в другие эмуляторы. Если ваша файловая система поддерживает дыры (holes) (например, в ext2 или ext3 в Linux), тогда место на диске будут занимать только записанные секторы. Используйте qemu-img info , чтобы узнать реальный размер, занимаемый образом, или ls -ls в Unix/Linux (или du -h — прим. переводчика).

                          Формат QEMU — наиболее универсальный формат. Он позволяет получить образы меньшего размера (полезно в том случае, если вы ваша файловай система не поддерживает "дыры", например, в Windows), опциональное шифрование AES и сжатие zlib.

                          Формат User Mode Linux Copy On Write. Используется в QEMU для образов с увеличивающимся объёмом. Поддерживается только для совместимости с предыдущими версиями. Не работает в win32.

                          Формат, совместимый с VMware 3 и 4.

                          Формат Linux Compressed Loop. Полезен только для повторного использования сжатых образов CD-ROM, использующихся, например, на LiveCD с Knoppix.

                          размер образа диска в килобайтах. Возможно использование необязательных окончаний: M (мегабайт) и G (гигабайт).

                          имя файла создаваемого образа диска.

                          формат создаваемого диска.

                          означает, что создаваемый образ должен быть сжат (только для формата qcow).

                          означает, что создаваемый образ должен быть зашифрован (только для формата qcow).

                          `create [-e] [-b базовый_образ ] [-f формат ] файл [ размер ]’

                          Создаёт образ нового диска в виде указанного файла указанного размера и формата .

                          Если указан базовый_образ , тогда в образ будут записываться только изменения, относительно базового_образа . Базовый_образ не будет изменяться, только если вы не воспользуетесь в мониторе командой commit .

                          `commit [-f формат ] файл ‘

                          Вносит в базовый образ изменения, записанные в файл .

                          `convert [-c] [-e] [-f формат ] файл [-O выходной_формат ] выходной_файл ‘

                          Преобразовывает образ диска файл в образ выходной_файл с использованием указанного формата . Опционально он может быть зашифрован (опция -e ) или сжат (опция -c ).

                          Шифрование и сжатие поддерживаются только в формате qcow . Сжатие работает в режиме "только для чтения", т.е. если перезаписывается сжатый сектор, то данные в него пишутся в несжатом виде.

                          При шифровании используется довольно безопасный алгоритм AES (со 128-битными ключами). Для обеспечения максимальной защиты используйте длинные пароли (порядка 16 символов).

                          Преобразование образов также полезно для уменьшения их размеров при использовании формата увеличивающегося размера, такого как qcow или cow : при этом выявляются пустые секторы и в полученном образе они отсутвуют.

                          `info [-f формат ] файл ‘

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

                          3.7 Эмуляция сети

                          QEMU может эмулировать до 6-и сетевых карт (NE2000-типа). Каждая из карт может быть подключена к определённому сетевому интерфейсу системы-хозяина.

                          3.7.1 Использование сетевого интерфейса tun/tap

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

                          В качестве примера вы можете загрузить архив `linux-test-xxx.tar.gz', скопировать скрипт `qemu-ifup' в `/etc' и настроить соответствующим образом sudo , чтобы команда ifconfig , находящаяся в `qemu-ifup', могла быть выполнена с правами root’а. Сначала вы должны убедиться в том, что ядро системы-хозяина поддерживает сетевые интерфейсы TUN/TAP: должно существовать устройство `/dev/net/tun'.

                          В direct_linux_boot есть пример использования такой сети в дистрибутиве Linux.

                          3.7.2 Использование сетевого стека в режиме пользователя

                          При использовании опции `-user-net’ , или если у вас нет скрипта инициализации tun/tap, QEMU использует полностью пользовательский сетевой стек (вам не нужны права root’а для использования виртуальной сети). Конфигурация виртуальной сети представляет собой следующее:

                          ВМ QEMU ведёт себя так, как если бы она находилась за файерволом, блокирующим все входящие подключения. Вы можете использовать клиент DHCP для автоматической настройки сети в ВМ QEMU.

                          Чтобы проверить работу сети в режиме пользователя, пропингуйте адрес 10.0.2.2 и проверьте, получили ли вы адрес из диапазона 10.0.2.x от виртуального DHCP-сервера QEMU.

                          Обратите внимание, что ping не работает по отношению к Интернет-адресам, поскольку для этого требуются привилегии root’а. Это означает, что вы можете пропинговать только локальный маршрутизатор (10.0.2.2).

                          При использовании встроенного сервера TFTP, маршрутизатор также выступает в роли TFTP-сервера.

                          При использовании опции `-redir’ , TCP- или UDP-подключения к системе-хозяину могут быть перенаправлены в гостевую систему. Например, это позволяет перенаправлять X11-, telnet- или SSH-подключения.

                          3.8 Непосредственная загрузка Linux

                          В этом разделе рассказано о том, как запустить ядро Linux внутри QEMU без необходимости создания целого загрузочного диска. Это очень полезно для быстрого тестирования ядра Linux. Также разъяснена настройка сети в QEMU.

                          1. Загрузите архив `linux-test-xxx.tar.gz', содержащий ядро Linux и образ диска.
                          2. Необязательно: если вам нужна поддержка сети (например для запуска X11-приложений), вы можете скопировать скрипт `qemu-ifup' в `/etc' и настроить соответствующим образом sudo , чтобы команда ifconfig , находящаяся в `qemu-ifup', могла быть выполнена с правами root’а. Сначала вы должны убедиться в том, что ядро системы-хозяина поддерживает сетевые интерфейсы TUN/TAP: должно существовать устройство `/dev/net/tun'.

                          Если сеть включена, между ядром системы-хозяина и эмулируемым ядром устанавливается виртуальное сетевое соединение. Из ядра хозяина эмулируемое ядро доступно по IP-адресу 172.20.0.2, а ядро хозяина доступно в эмулируемом по IP-адресу 172.20.0.1.

                        • Запустите qemu.sh . Вы должны будете увидеть следующее:
                        • Затем вы можете поиграться с ядром, используя виртуальную последовательную консоль. Например, вы можете выполнить команду ls . Введите Ctrl-a h , чтобы получить справку о клавишах, которые вы можете использовать в виртуальной последовательной консоли. В частности используйте Ctrl-a x для выхода из QEMU и Ctrl-a b в качестве "магической" клавиши системного вызова (Magic SysRq).
                        • Если сеть включена, запустите в эмуляторе скрипт `/etc/linuxrc' (не забудьте точку в начале):
                        • Затем разрешите X11-подключения к своему ПК из эмулируемого Linux’а:

                          Теперь вы можете запустить `xterm' или `xlogo', чтобы убедится в том, что перед вами действительно виртуальная система Linux!

                          1. В состав архива также входит ядро версии 2.5.74. Чтобы попробовать его, просто замените им bzImage в qemu.sh.
                          2. Чтобы корректно завершить работу с qemu, вы можете выполнить в нём команду shutdown. qemu автоматически закроется по завершении работы Linux.
                          3. Вы можете немного увеличить скорость загрузки, отключив опрос отсутствующих интерфейсов IDE. Для этого добавьте следующие параметры в командную строку ядра:
                          4. Этот образ диска является изменённой версией образа, созданного Кевином Лоутоном (Kevin Lawton) для проекта plex86 (www.plex86.org).

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

                          QEMU поддерживает упрощённую работу с gdb. Таким образом вы можете нажать ‘Ctrl-C’ во время работы виртуальной машины и просмотреть её состояние.

                          Чтобы можно было использовать gdb, запустите qemu с опцией ‘-s’. При этом он будет ожидать подключения gdb:

                          Затем запустите gdb, передав ему в качестве параметра исполняемый файл ‘vmlinux’:

                          В gdb подключитесь к QEMU:

                          Затем вы можете использовать gdb обычным образом. Например, введите ‘c’, чтобы запустить ядро:

                          Вот несколько полезных подсказок по использованию gdb при работе с системным кодом:

                          1. Используйте info reg для вывода всех регистров процессора.
                          2. Используйте x/10i $eip для вывода кода в разряде PC.
                          3. Используйте set architecture i8086 дампа 16-битного кода. Затем воспользуйтесь x/10i $cs*16+*eip для получения дампа кода в разряде PC.

                          3.10 Дополнительная информация по эмулируемой ОС

                          3.10.1 Linux

                          Чтобы иметь доступ к графическим режимам SVGA в X11, используйте драйвер vesa или cirrus . Для получения оптимальной производительности используйте 16-битную глубину цвета и в гостевой системе, и в системе-хозяине.

                          При использовании в гостевой системе ядра Linux версии 2.6 вам следует добавить параметр clock=pit в командную строку ядра, потому что ядра Linux серии 2.6 по умолчанию выполняют очень ограниченную проверку часов реального времени, которую QEMU не может в точности сэмулировать.

                          Так же при использовании в гостевой системе ядра Linux версии 2.6 убедитесь, что не задействован патч 4G/4G, потому что с этим патчем QEMU работает медленнее. Модуль ускорения QEMU (QEMU Accelerator Module) в этом случае также работает гораздо медленнее. Этот патч использовался по умолчанию в ранних версиях ядер Linux в Fedora Core 3 ( `-win2k-hack’ , чтобы устранить эту проблему. После установки Windows 2000 вам больше не нужно использовать эту опцию (она замедляет передачу данных по IDE).

                          3.10.2.4 Завершение работы Windows 2000

                          Windows 2000 не может автоматически завершить свою работу в QEMU в отличие от Windows 98. Это связано с тем, что Windows 2000 по умолчанию не использует драйвер автоматического управления питанием (APM), предоставляемого BIOS’ом.

                          Чтобы исправить это, выполните следующее (спасибо Струану Барлетту (Struan Bartlett)): откройте Control Panel => Add/Remove Hardware & Next => Add/Troubleshoot a device => Add a new device & Next => No, select the hardware from a list & Next => NT Apm/Legacy Support & Next => Next (снова) несколько раз. Теперь драйвер установлен и Windows 2000 может корректно сообщать QEMU о завершении своей работы в нужный момент.

                          3.10.2.5 Использование общих каталогов для Unix и Windows

                          Смотрите sec_invocation об использовании опции `-smb’ .

                          3.10.2.6 Проблемы с безопасностью в Windows XP

                          Некоторые сборки Windows XP нормально устанавливаются, однако во время загрузки выдают сообщение об ошибке безопасности:

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

                          В следующих релизах QEMU эта проблема скорее всего будет устранена.

                          3.10.3 MS-DOS и FreeDOS

                          3.10.3.1 Снижение загрузки процессора

                          DOS некорректно использует инструкцию CPU HLT. В результате процессор системы-хозяина продолжает использоваться даже при простое. Для устранения этой проблемы вы можете установить специальную утилиту http://www.vmware.com/software/dosidle210.zip.

                          4. Запуск QEMU в качестве эмулятора системы типа PowerPC

                          Используйте исполняемый файл `qemu-system-ppc', чтобы эмулировать целую систему типа PREP или PowerMac PowerPC.

                          QEMU эмулирует следующее периферийное оборудование PowerMac:

                          • — UniNorth PCI Bridge
                          • — PCI VGA-совместимую карту с VESA-расширениями Bochs
                          • — 2 PCI IDE-интерфейса с поддержкой жёстких и приводов CD-ROM
                          • — сетевые PCI-адаптеры NE2000
                          • — энергонезависимую оперативную память
                          • — VIA-CUDA с клавиатурой и мышью ADB.

                          QEMU эмулирует следующее периферийное оборудование PREP:

                          • — PCI Bridge
                          • — PCI VGA-совместимую карту с VESA-расширениями Bochs
                          • — 2 PCI IDE-интерфейса с поддержкой жёстких и приводов CD-ROM
                          • — дисковод
                          • — сетевые PCI-адаптеры NE2000
                          • — последовательные порты
                          • — энергонезависимую оперативную память PREP
                          • — PC-совместимую клавиатуру и мышь

                          В QEMU используется Open Hack’Ware Open Firmware Compatible BIOS, доступный на сайте http://site.voila.fr/jmayer/OpenHackWare/index.htm.

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

                          Следующие опции касаются только эмуляции PowerPC:

                          Эмуляция системы PREP (по умолчанию это PowerMAC)

                          Исходный графический режим VGA. По умолчанию используется 800x600x15.

                          Дополнительная информация доступна по адресу http://jocelyn.mayer.free.fr/qemu-ppc/.

                          5. Запуск QEMU в качестве эмулятора системы типа Sparc32

                          Используйте исполняемый файл `qemu-system-sparc', чтобы эмулировать JavaStation (архитектура sun4m). Достигнута почти полная эмуляция.

                          QEMU эмулирует следующее периферийное оборудование sun4m:

                          • — IOMMU
                          • — видеобуфер TCX
                          • — сетевую карту Lance (Am7990)
                          • — энергонезависимую оперативную память M48T08
                          • — Slave I/O: таймеры, контроллеры прерываний, последовательные порты Zilog, клавиатуру и логический power/reset
                          • — ESP SCSI-контроллер с поддержкой жёстких и приводов CD-ROM
                          • — дисковод

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

                          В QEMU используется Proll — замена PROM, доступная на сайте http://people.redhat.com/zaitcev/linux/. Необходимые патчи для QEMU включены в архив с исходными текстами.

                          Образец ядра Linux серии 2.6 и образ ram-диска доступны на веб-сайте QEMU. Обратите внимание, что в настоящий момент не работают ядра Linux серии 2.4, NetBSD и OpenBSD.

                          Следующие опции касаются только эмуляции Sparc:

                          Исходный графический режим TCX. По умолчанию используется 1024×768.

                          6. Запуск QEMU в качестве эмулятора системы типа Sparc64

                          Используйте исполняемый файл `qemu-system-sparc64', чтобы эмулировать vfibye Sun4u. Пока что эмулятор ни для чего другого не подходит.

                          QEMU эмулирует следующее периферийное оборудование sun4u:

                          • — UltraSparc IIi APB PCI Bridge
                          • — PCI VGA-совместимую карту с VESA-расширениями Bochs
                          • — энергонезависимую оперативную память M48T59
                          • — PC-совместимые последовательные порты

                          7. Запуск QEMU в качестве эмулятора системы типа MIPS

                          Используйте исполняемый файл `qemu-system-mips', чтобы эмулировать машину MIPS. Эмулятор начинает запускать ядро Linux.

                          8. Запуск QEMU в качестве эмулятора пользовательского пространства

                          8.1 Быстрый запуск

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

                            Для архитектуры x86 вы можете просто попробовать запустить любой процесс, используя родные библиотеки:

                          Опция -L / означает, что динамический компоновщик x86 необходимо искать с префиксом `/'.

                        • Поскольку QEMU также является процессом linux, вы моете запустить qemu с помощью qemu (ЗАМЕЧАНИЕ: вы сможете сделать это только в том случае, если вы сами скомпилировали QEMU из исходных кодов):
                        • На не x86 процессорах вам нужно сначала загрузить как минимум glibc для x86 (`qemu-runtime-i386-XXX-.tar.gz' на веб-сайте QEMU). Убедитесь, что не установлена переменная окружения LD_LIBRARY_PATH :
                        • Затем вы можете запустить исполняемый файл `ls', скомпилированный под x86:

                          Вы можете взглянуть на `qemu-binfmt-conf.sh', чтобы узнать, как QEMU автоматически запускается ядром Linux, когда вы пытаетесь запустить исполняемые файлы x86. Для этого в ядро Linux должен быть загружен модуль binfmt_misc .

                        • Версия QEMU для x86 также присутствует. Вы можете попробовать следующие вещи:
                        • 8.2 Запуск Wine

                          • Убедитесь, что у вас есть работающий QEMU и дистрибутив glibc для x86 (см. предыдущий раздел). Чтобы проверить это, выполните следующее:
                          • Загрузите бинарный инсталлятор Wine для x86 (`qemu-XXX-i386-wine.tar.gz' на веб-сайте QEMU).
                          • Настройте свою учётную запись. Для этого взгляните на скрипт `/usr/local/qemu-i386/bin/wine-conf.sh'. Ваш старый каталог $/.wine будет сохранён в $/.wine.org .
                          • Теперь попробуйте запустить, например, `putty.exe':

                          8.3 Опции командной строки

                          Префикс интерпретатора x86 elf (по умолчанию используется /usr/local/qemu-i386)

                          Размер стека x86 в байтах (по умолчанию 524288)

                          Включить журналирование (logfile=/tmp/qemu.log)

                          Работает так, как если бы размер страницы системы-хозяина составлял указанное значение.

                          9. Компиляция из исходного кода

                          9.1 Linux/Unix

                          9.1.1 Компиляция

                          Сначала распакуйте архив с исходными текстами:

                          Затем настройте QEMU и соберите его (обычно никакие опции не нужны):

                          Затем выполните под root’ом:

                          чтобы установить QEMU в `/usr/local'.

                          9.1.2 Версии проверенных утилит

                          Чтобы успешно скомпилировать QEMU, очень важно, чтобы у вас были правильные версии утилит. Самым важным является gcc. Я не могу гарантировать работу QEMU, если вы не используете проверенную версию gcc. Взгляните на содержимое файлов ‘configure’ и ‘Makefile’, если вы хотите заставить работать другую версию gcc.

                          9.2 Windows

                          • Установите последние версии MSYS и MinGW с сайта http://www.mingw.org/. Вы можете найти подробные инструкции по установке в разделе загрузки и в FAQ’е.
                          • Загрузите devel-библиотеку MinGW для SDL 1.2.x (`SDL-devel-1.2.x-mingw32.tar.gz') с сайта http://www.libsdl.org. Распакуйте её во временный каталог и распакуйте архив `i386-mingw32msvc.tar.gz' в каталог MinGW. Отредактируйте скрипт `sdl-config', чтобы при запуске в нём использовался правильный каталог SDL.
                          • Распакуйте архив с последней версией QEMU.
                          • Запустите командный процессор MSYS (файл `msys.bat').
                          • Перейдите в каталог QEMU. Запустите `./configure' и `make'. Если у вас возникли проблемы с SDL, проверьте, можно ли запустить `sdl-config' из командной строки MSYS.
                          • вы можете установить QEMU в `Program Files/Qemu', выполнив команду `make install'. Не забудьте скопировать `SDL.dll' в `Program Files/Qemu'.

                          9.3 Кросс-компиляция в Linux для Windows

                          • Установите утилиты кросс-компиляции MinGW, доступные на сайте http://www.mingw.org/.
                          • Установите версию SDL для Win32 (http://www.libsdl.org), распаковав `i386-mingw32msvc.tar.gz'. Настройте переменную окружения PATH, чтобы `i386-mingw32msvc-sdl-config' мог быть запущен скриптом настройки QEMU.
                          • Настройте QEMU для кросс-компиляции под Windows:

                          Если необходимо, вы можете изменить кросс-префикс согласно префиксу, выбранному для утилит MinGW, с помощью опции -cross-prefix. Вы также можете использовать -prefix для указания пути установки Win32.

                        • Вы можете установить QEMU в каталог установки, выполнив `make install'. Не забудьте скопировать `SDL.dll' в каталог установки.
                        • Замечание: в настоящий момент похоже, что Wine не может запустить QEMU для Win32.

                          9.4 Mac OS X

                          Патчи Mac OS X не полностью интегрированы в QEMU, поэтому всю необходимую информацию следует искать в архиве почтовой рассылки QEMU.

                          [Top] [Contents] [Index] [ ? ]

                          About This Document

                          This document was generated by Acid Jack on March, 19 2006 using texi2html 1.76.

                          The buttons in the navigation panels have the following meaning:

                          Button Name Go to From 1.2.3 go to
                          [ ] Forward next section in reading order 1.2.4
                          [ > ] FastForward next chapter 2
                          [Top] Top cover (top) of document
                          [Contents] Contents table of contents
                          [Index] Index index
                          [ ? ] About about (help)

                          where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:

                          • 1. Section One
                          • 1.1 Subsection One-One
                          • .
                        • 1.2 Subsection One-Two
                          • 1.2.1 Subsubsection One-Two-One
                          • 1.2.2 Subsubsection One-Two-Two
                          • 1.2.3 Subsubsection One-Two-Three
                          • This document was generated by Acid Jack on March, 19 2006 using texi2html 1.76.
                            Плюс небольшая правка готового HTML-кода до удобоваримого состояния 🙂

                            Обзор и установка QEMU

                            Обзор и установка QEMU

                            Введение

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

                            Перед знакомством с QEMU стоит рассказать о том, что такое виртуализация и эмуляция в частности.

                            Виртуализация и виртуальная машина

                            Виртуализация ОС

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

                            А виртуальная машина, в свою очередь, это программа, которая эмулирует (имитирует) работу другого компьютера. То есть на виртуальную машину можно установить операционную систему, она имеет свою оперативную память, жесткий диск и так далее.

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

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

                            Популярные программы виртуализации это:

                            О последней и пойдет речь в этой статье.

                            QEMU — это программа, которая используется для эмуляции программного обеспечения разных платформ. Она распространяется бесплатно и имеет открытый исходный код. Работает во всех популярных операционных системах — Microsoft Windows, Linux, MacOS, а также ее можно запускать на Android.

                            Существует программная и аппаратная виртуализация — QEMU использует вторую. Аппаратная виртуализация дает возможность использовать изолированные гостевые операционные системы, которые будут управляться гипервизором (используется гипервизор XEN либо модуль ядра KVM в Linux).

                            Два режима работы, в которых может работать QEMU, это:

                            1. Полная эмуляция системы (full-system emulation) — в этом режиме QEMU полностью эмулирует устройство со всеми его компонентами и периферийными устройствами. Режим используется для запуска операционных систем.
                            2. Эмуляция пользовательского режима (user-mode emulation) — режим позволяет программы, созданные на одном процессоре, запускать на другом, эмулируемом движке.

                            QEMU может эмулировать следующие архитектуры:

                            • x86 (32 и 64 бит),
                            • ARM,
                            • SPARC,
                            • PowerPC (32 и 64 бит),
                            • MIPS,
                            • m68k (Coldfire),
                            • SH-4,
                            • CRISv2,
                            • Alpha,
                            • MicroBlaze.

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

                            Установка QEMU

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

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

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

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

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

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

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

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

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

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

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

                            Заключение

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

                            А вы пользуетесь программами виртуализации? Какими именно?

                            Виртуализация операционных систем с помощью QEMU. Основы работы с эмулятором

                            Виртуализация — наиболее доступный способ запустить на одном ПК вторую операционную систему, не устанавливая ее непосредственно на жесткий диск. Вместо этого вторая ОС устанавливается на диск виртуальный, представленный специальным файлом-контейнером, созданным в гипервизоре — программе, позволяющей эмулировать работу гостевой системы в системе хостовой. Наибольшей популярностью среди домашних юзеров пользуются гипервизоры VirtualBox и VMware с мощным функционалом и наглядным GUI .

                            Но есть и другие, в чём-то даже более гибкие и продуктивные решения хотя и куда менее удобные в использовании. Например, QEMU — бесплатная программа с открытым исходным кодом, предназначенная для эмуляции программного обеспечения и операционных систем. Инструмент использует аппаратную виртуализацию, поддерживая два режима работы:

                            • Полная эмуляция — данный режим применяется для запуска операционных систем, в его рамках QEMU эмулирует физическое устройство со всеми его компонентами, встроенными и периферийными.

                            • Эмуляция пользовательского режима — дает возможность запускать программы, созданные для конкретной архитектуры на другой архитектуре, например, приложения ARM в x86 . Режим доступен только в хостовой системе Linux.

                            QEMU поддерживается эмуляция архитектуры x86 , ARM , MIPS , PowerPC , m68k , Alpha , SPARC , SH-4 , CRISv2 , MicroBlaze и это более солидный список, чем у того же Виртуалбокс.

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

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

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

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

                            Установка QEMU

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

                            Choose install location

                            Виртуализация операционных систем в QEMU

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

                            • qemu-system — задает архитектуру виртуальной машины.
                            • qemu-img create — создает файл виртуального IMG -диска, на который будет устанавливаться операционная система.
                            • -m — выделяет виртуальной ОС указанный объем оперативной памяти.
                            • -hda — подключает созданный виртуальный диск.
                            • -boot IMG — указывает, что загрузка должна производиться с виртуального диска, вместо IMG следует указать имя IMG -файла.
                            • cdrom — содержит путь к установочному образу ISO , эмулирует дисковод.

                            Чтобы вам стало всё немного понятнее, установим и запустим с помощью QEMU какую-нибудь операционную систему. Для примера мы выбрали Windows XP, так как она легкая и занимает на диске мало места. QEMU у нас уже установлен, открываем командную строку, переходим в каталог установки и создаем виртуальный жесткий диск следующей командой:

                            qemu-img.exe create -f raw c.img 5000M

                            Файл qemu-img.exe в эмуляторе отвечает за создание IMG -образов, с — это название образа, 5000 — размер виртуального диска в мегабайтах. По умолчанию образ будет создан в папке QEMU .

                            Теперь сформируем следующую команду:

                            qemu-system-i386w.exe -boot c -m 350 -hda c.img -cdrom "E:\WinXP_SP3.iso"

                            Исполняемый файл в начале команды отвечает за создание виртуальной машины с архитектурой х86 , -boot с ключом сообщает, что грузиться она будет с диска, в значение параметра -hda подставляем созданный образ, а в качестве значения параметра –cdrom указываем путь к дистрибутиву Windows.

                            CMD QEMU

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

                            QEMU

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

                            QEMU

                            QEMU

                            QEMU

                            Чтобы запустить закрытую виртуальную машину, выполните команду qemu-system-i386w.exe -hda name.img , где name — название вашего виртуального диска, чтобы удалить ставшую ненужной VM, просто удалите из каталога установки QEMU созданный IMG -образ.

                            Управлять QEMU можно с помощью клавиатуры и мыши, для переключения между эмулятором и хостовой машиной используйте комбинацию Ctrl + Alt + G . Запущенная с минимальными настройками ОС не будет иметь доступа к аудио- и сетевой карте, не будет также возможности обмена файлами между виртуальной и хостовой системами.

                            Нельзя сказать, что QEMU лучше или хуже VirtualBox либо VMware, это альтернативное средство виртуализации, имеющие как свои плюсы, так и минусы. QEMU менее удобен, требует знания документации и демонстрирует весьма небольшую производительность. Для ускорения работы в Windows требуется установка и настройка Диспетчера аппаратного ускорения HAXM, в Linux – подключение загружаемого модуля ядра KVM . С другой стороны, инструмент позволяет эмулировать работу устройств на базе разных архитектур, не поддерживаемые популярными гипервизорами.

                            Технически современные компьютерные игры не идут ни в какое сравнение со старыми консольными игрушками, найти Читать далее

                            Чтобы иметь возможность наслаждаться старыми играми из 90-х, необязательно устанавливать MS DOS на ПК или Читать далее

                            Несмотря на унификацию интерфейсов современных операционных систем, переход с Windows на Linux может оказаться достаточно Читать далее

                            Что такое DOSBox? Это замечательная программа, которая позволяет эмулировать работу старенькой операционной системы DOS. Disk Читать далее

                            Добавить комментарий

                            Ваш адрес email не будет опубликован.