Создание универсальной мультизагрузочной флешки с Windows 7/8/10, WinPE, Linux и пр. (Legacy + UEFI поддерживается)

База знаний о хостинге и серверных технологиях Timeweb Community: Обзор и установка QEMU. Опыт наших пользователей поможет разобраться с любым вопросом из IT-сферы.

Что такое qemu?

Qemu — это бесплатный инструмент с открытым исходным кодом для эмуляции и виртуализации работы операционных систем на компьютере. Программа может работать в Windows, Linux, MacOS и даже на Android. Ресурсы хоста, такие как процессор, жесткий диск, память, разделяются между виртуальными машинами.

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

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

Эмулировать можно такие архитектуры: x86 (32 и 64 бит), PowerPC (32 и 64 бит), ARM, MIPS (32 бит), Sprac (32 и 64 бит), Alpha, ColdFire(m68k), CRISv2 и MicroBlaze. Этот список уже более внушительный чем у Virtualbox.

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.

QEMU, compilation.

Подготовка

Самый первый шаг — настройка параметров ядра. Обязательна поддержка KVM и vhost-net, желательна поддержка туннельных интерфейсов[1] и сетевого моста[2]. Полный список на Gentoo вики-странице QEMU.

Подготовьте дисковое пространство. Я выделил 70 GiB, и Windows 8.1 за пару месяцев использовала почти 50 GiB так, что для обновления до 10-й версии места на диске не хватило.

Далее, нам понадобится набор редхатовских драйверов virtio-win. Если у вас установлен RedHat, достаточно запустить

[root@server ~]# yum install virtio-win

и образ iso будет записан в каталог /usr/share/virtio-win/. Также можно его скачать с репозитариев Fedora.
Убедитесь, что поддержка аппаратной виртуализация включена в BIOS/UEFI. Без этого KVM не будет активирован, а virt-manager выдаст вот такую ошибку.

f323da496d2d4a06a3eac76bfbf8e678.png

В качестве проверки можно прочитать файл устройства.

(2:506)$ ll /dev/kvmcrw-rw—-+ 1 root kvm 10, 232 ноя 9 02:29 /dev/kvm

Если файл не обнаружен, а опции ядра выставлены верно, значит дело в настройках BIOS/UEFI.
Устанавливаем нужные пакеты.

(5:519)$ sudo emerge -av qemu virt-manager

Для RedHat 7 достаточно установить только virt-manager, так как QEMU устанавливается по умолчанию.

[root@server ~]# yum install virt-manager

Дебианщикам надо установить пакет qemu.

root# aptitute install qemu

Можно теперь переходить к установке.

Описание:

На этом сайте будут регулярно выкладываться образы дисков для эмуляторов Pentium x86 — BOCHS, QEMU и Limbo.

Для кого создан этот ресурс:

— Для тех, кто проявляет интерес к различным операционным системам и хочет познакомиться с ними поближе.
— Для владельцев старых компьютеров выпуска 1990-х и начала 2000-х гг.
— Для тех, кто изучает новую систему, но пока не собирается устанавливать её на компьютер.
— Для обладателей программ, которые могут быть запущены только в DOS или ранних версиях Windows.
— Для тех, кто хочет получить готовую систему для эмулятора без необходимости её установки и настройки.

и тому подобное.

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.

Запуск и инсталляция

Запускаем virt-manager и создаем новую виртуальную машину из локального хранилища.

c14ad0762b084d4bab3df0d64cb13a78.png

Указываем путь к установочному iso образу Windows.

28b90e9a1415433ab26bfc246c17002a.png

Далее, на 3-м и 4-м шаге будет выбор количества CPU, объем RAM и размер дискового пространства, после чего на 5-м шаге следует выбрать дополнительные конфигурации перед настройкой.

b5fa490fbe584355a7d1f750058d9500.png

Окно дополнительных настроек нужно для того, чтобы выполнить финт ушами. Его смысл в том, чтобы добавить виртуальный флопарь с драйверами из набора virtio-win. Это даст возможность изменить тип жесткого диска: удалить диск с шиной IDE и добавить его же, но с шиной VirtIO. Подробно, в доках RedHat.

fefa3ff8458f4df9be366f28ecd7f184.png

Прописываем драйвер /usr/share/virtio-win/virtio-win.vfd и добавляем виртуальный флоппи-диск. Затем переходим на вкладку [Шина] Диск № и проделываем финт с заменой шины диска: удаляем с IDE и добавляем с VirtIO.

4acbb4b93f494e62a98c4eb2587d732d.png

Чуть не забыл сказать, для чего нужен этот фокус. Специалисты утверждают, что с шиной VirtIO, производительность диска ощутимо выше.

В принципе, уже можно начинать инсталляцию, но мы забыли добавить CD-ROM с драйверами virtio-win, а они нам пригодятся, когда диспетчер устройств засверкает желтыми иконками вопросительного знака.

a8d93a336e9a4a56be2d4f1a74a23667.png

Ну вот теперь можно начать установку.

2c9f10a71cfd49cbad915b2931b10f87.jpg

Ну хорошо, начали мы установку. А что, если установщик Windows попросит сменить диск? Мне из-за этого пришлось пару раз прервать и начать всю карусель заново, но с вами такого уже не случится.

(qemu) change ide1-cd0 /tmp/windows_8.1_x64_disk2.iso

Установка qemu

Перед тем как мы сможем использовать программу, необходимо ее установить. Если вы используете дистрибутив Linux, например, Ubuntu, то сможете найти программу в официальных репозиториях. Для Ubuntu команда будет выглядеть вот так:

sudo apt install qemu-kvm qemu

Для Fedora и других систем RedHat можно установить группу Virtualization:

sudo dnf install @virtualization

В ArchLinux используйте Pacman:

pacman -S qemu

Для Windows или MacOS вам нужно скачать исполняемый файл из официального сайта. Программа управляется только через терминал, так что вы главном меню системы ничего не появиться после установки. А теперь перейдем к тому как настроить qemu.

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

Теперь, когда программа установлена и готова к использованию попытаемся разобраться как ее запустить и применять. Но сначала нужно разобраться какие команды и для чего используются. Эмулятор qemu создает много команд, но их можно разделить на группы:

  • qemu-архитектура — эмуляция окружения пользователя для указанной архитектуры;
  • qemu-system-архитектура — эмуляция полной системы для архитектуры;
  • qemu-img — утилита для работы с дисками;
  • qemu-io — утилита для работы с вводом/выводом на диск;
  • qemu-user — оболочка для qemu-архитектура, позволяет запускать программы других архитектур в этой системе;
  • qemu-system — оболочка для qemu-system-архитектура, позволяет полностью эмулировать систему нужной архитектуры.

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

1. Использование qemu-system

Чтобы вы понимали что и откуда берется для начала рассмотрим опции утилиты qemu-system. Синтаксис команды такой:

$ qemu-system параметры

Куда сложнее здесь синтаксис каждого из параметров:

-имя_параметра имя_опции=значение:значение2

Мы рассмотрим только основные параметры, и их опции, которые нам понадобятся:

  • -machine указывает тип компьютера, который вы собрались эмулировать, можно выбрать ubuntu, pc, pc-q35 и другие варианты, смотрите подробнее командой -machine help;
  • -cpu — тип процессора, можно передать непосредственно тип процессора, а также дополнительные флаги;
  • -smp — включает симуляцию мультипроцессорной архитектуры;
  • -boot — позволяет настроить порядок загрузки устройств, a,b — дискета, с — первый жесткий диск, d — CDROM, n-p — загрузка через сеть, по умолчанию виртуальная машина загружается из жесткого диска;
  • -m — указывает количество оперативной памяти, доступной машине;
  • -k — раскладка клавиатуры по умолчанию;
  • -soundhw — подключить звуковую карту к системе;
  • -device — подключить указанное устройство к машине, нужно указать драйвер и его опции;
  • -name — имя гостевой системы, будет отображаться в верху окна;
  • -uuid — установить UUID для системы;
  • -fda, fdb — подключить дискету из файла;
  • -hda, hdb — подключить жесткий диск из файла;
  • -cdrom — подключить оптический диск;
  • -usb — включить поддержку USB;
  • -usbdevice — подключить USB устройство;
  • -display — выбрать тип отображения, доступно sdl, curses, gtk, none, vga и другие;
  • -full-screen — запустить в полный экран;
  • -no-acpi — отключить поддержку ACPI;
  • -net — создать сетевой интерфейс;
  • -realtime включить режим реального времени, опции mclock нужно передать значение on;
  • -gdb — ожидать подключения отладчика gdb;
  • -enable-kvm — включить поддержку kvm;
  • -loadvm — загрузить сохраненное состояние;
  • -daemonize — сделать процесс фоновым;
  • -snapshot — записывать изменения не в файл жесткого диска, а в отдельные файлы;
  • -nographic — отключить графический вывод.
  • -kernel — использовать указанный образ ядра linux.
  • -append — командная строка для ядра;
  • -initrd — файл initrd для загрузки Linux.

Мы рассмотрели опции для qemu-system-x86-64, для других архитектур, они могут немного отличаться. А теперь разберем несколько простых примеров как использовать qemu, как создать машину qemu и настроить ее.

Сначала нужно создать жесткий диск для установки. Вы можете использовать реальные жесткие диски, но работать с образами намного удобнее. Можно просто создать пустой файл, заполненный нулями, а затем форматировать его в нужную файловую систему во время установки, но также можно создать файл формата qcow2, этот формат используется по умолчанию в qemu. Воспользуемся командой qemu-img:

qemu-img create -f qcow2 ubuntu.qcow 10G

Опция -f указывает формат нового файла. Теперь мы можем непосредственно перейти к запуску qemu-system. Вот так будет выглядеть самая простая команда запуска системы:

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

Здесь мы подключаем наш жесткий диск как hda, затем указываем что нужно загружаться с cdrom и подключаем образ системы ubuntu к нему. Последний параметр указывает сколько оперативной памяти будет выделено для машины.

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

 qemu-system-x86_64 -hda ubuntu.img -m 640

Создавать виртуальную машину с другой архитектурой не очень сложно, достаточно изменить команду. Например, сделаем виртуальную машину ppc:

qemu-system-ppc -hda ubuntu.qcow -boot d -cdrom ~/downloads/ubuntu-17.04-server-amd64.iso -m 640

Поскольку сейчас мы не используем kvm, то система будет работать очень медленно все можно очень сильно ускорить, если его включить с помощью опции -enable-kvm:

 qemu-system-x86_64 -hda ubuntu.qcow -m 640 -enable-kvm

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

 qemu-system-x86_64 -hda ubuntu.qcow -m 640 -enable-kvm -soundhw ac97

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

 qemu-system-x86_64 -hda ubuntu.qcow -m 640 -enable-kvm -soundhw ac97 -vga qxl

С помощью опции -global qxl-vga.vram_size можно задать объем видеопамяти, доступный машине, значение указывается в байтах, например:

 qemu-system-x86_64 -hda ubuntu.qcow -m 640 -enable-kvm -soundhw ac97 -vga qxl -global qxl-vga.vram_size=4294967

Для многих машин важно чтобы из них был доступ в сеть интернет. Настройка сети qemu — это достаточно обширная тема, которую мы не будем полностью раскрывать в этой статье. Если кратко, то, в qemu используется специальный виртуальный шлюз vlan, который позволяет соединять машины с внешней сетью или между собой. Каждый vlan имеет свой номер. Самый простой способ настроить сеть — использовать такие параметры:

qemu-system-x86_64 -hda ubuntu.qcow -m 640 -enable-kvm -net nic,vlan=0 -net user,vlan=0

Здесь мы два раза вызываем опцию -net, в первый раз создаем виртуальную сетевую карту с помощью параметра -nic и подключаем ее к vlan с номером 0. Вторая же опция -net создает наш vlan 0 с типом конфигурации user, которая не требует дополнительной настройки и автоматически подключается к сети хоста.

2. Использование эмуляции окружения

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

qemu-x86_64 /bin/ls

Точно так же вы можете выполнить arm программу или программу для любой из поддерживаемых архитектур.

3.5 QEMU

QEMU QEMU. :

  • — ߣ ( CD-ROM );
  • -«»/»» () ţ ;
  • — .

3.5.1

:

`help ? [cmd]’

cmd.

`commit’

( -snapshot).

`info -‘

:

`info network’ `info block’ `info registers’ `info history’ `q quit’

.

`eject [-f] ‘

ߣ ( -f).

`change ‘

ߣ .

`screendump ‘

PPM- .

`log 1[,…]’

`/tmp/qemu.log’.

`savevm ‘

.

`loadvm ‘

.

`stop’

.

`c cont’

.

`gdbserver []’

gdbserver ( =1234).

`x/fmt ‘

, .

`xp /fmt ‘

, .

fmt — , , . : `/{}{}{}’

.

x (), d ( ), u ( ), o(), c () i ( asm).

b (8 ), h (16 ), w (32 ) g (64 ). x86 h w i 16- 32- .

:

  • 10 :
      (qemu) x/10i $eip0x90107063: ret0x90107064: sti0x90107065: lea 0x0(%esi,1),%esi0x90107069: lea 0x0(%edi,1),%edi0x90107070: ret0x90107071: jmp 0x901070800x90107073: nop0x90107074: nop0x90107075: nop0x90107076: nop
  • 80- 16- :
      (qemu) xp/80hx 0xb80000x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b420x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b410x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b720x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b730x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b200x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x07200x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x07200x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x07200x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x07200x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720

`p print/fmt ‘

. format fmt.

`sendkey ‘

. — . :

, , ctrl-alt-f1 XWindow.

`system_reset’

.

3.5.2

, . ̣ , $.

В завершение

Трудно рассказать в одной статье обо всех аспектах Windows + QEMU/KVM, поэтому завершим в следующей. А там будет самый смак, командный интерфейс, разрешение экрана максимум 1024×768, Сцилла pulseaudio и Харибда сети, команда virsh и настройка ВМ из конфиг файла, фейл с tpm, двоичный синтаксис устройств и прочие тихие радости.

  1. ↑TUN/TAP interfaces
  2. ↑Ethernet bridging
  3. ↑От английского root
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: