Страница 1 из 7

QEMU

Добавлено: 06 июл 2012, 20:28
Olej
Сам консольный QEMU используют не очень часто, но:
- часто используемый VirtualBox построен на коде QEMU;
- для QEMU сделано много фронт-эндов: AQEMU, Qemulator, Qemu Launcher ... много их;
- модный KVM на сегодня стал составной частью проекта QEMU;
- QEMU может выполнять VM для доброго десятка поцессорных платформ (ARM, MIPS, PPC, ...).

Некоторые возможности QEMU не попользуешь через его GUI-обёртки.
Вот такие возможности мне снова понадобились для: загрузочный Linux на USB флешке.

И я вспомнил, что 2 года назад, активно работая с ОС MINIX3, я понаделал много разного с QEMU + описал такое расширенное использование QEMU в 2-х больших статьях. Я и вспомнил, что нужно их разыскать, и там есть всё, что мне понадобится. А заодно поместить их (статьи) сюда, чтоб не терялись:
minix-in-qemu-218.odt
раскрутка QEMU + запуск под ним гостевой ОС, в данном случае был MINIX3, но это абсолютно неважно, на этот раз это будет, например, PuppyRus Linux ;) - 28 стр.
(626.42 КБ) 852 скачивания
net-minix-config-419.odt
а это - разные способы конфигурирования сети для VM установленной в QEMU - 27 стр.
(40.58 КБ) 831 скачивание

Re: QEMU

Добавлено: 07 июл 2012, 17:40
Olej
Olej писал(а): Вот такие возможности мне снова понадобились для: загрузочный Linux на USB флешке.
Задача понятна...
Доунлодим 2 образа ISO:
- http://narod.ru/disk/53977481001.524650 ... 4.iso.html - это совершенно последняя beta;
- и один из стабильных релизов (вот отсюда: http://uco.puppyrus.org/catalog/1021) ... мне приглянулся ;-) : http://uco.puppyrus.org/catalog/item99.html - xLupuRus528_IvannaSE.iso

Хотелось бы:
1. download образ XXX.iso ...
2. накатываем его на CD/DVD-R/RW ... (можно, как вариант, создать LiveUSB)
3. загружаемся с этого CD/DVD-R/RW ...
4. рассказываем всякие ответы на вопросы (установка) - указав устанавливать на /dev/sdb;
5. загружаемся c флешки.

Но мне это сильно не нравится для экспериментов с RAM-based Linux из за 3-х шагов, отмеченных bold шрифтом.
Хочу всё сделать не перегружаясь из своего привычного окружения, сидя в своём кресле, а не бегая с бубном вокруг перезагрузок!
Как?

Есть у меня предположение (и опыт некоторый прежний), что всё: от XXX.iso и до проверки загрузки и настройки полученной системы - я могу сделать с помощью классического консольного QEMU.
Идея состоит в том, чтобы:
- загрузиться с XXX.iso, указав QEMU его как CD-ROM ...
- и указать /dev/sdc (USB флешь) как HDD QEMU ...
- после чего в гостевой VM запустить "установить ОС на диск"...
- и всё получится ;-)

Re: QEMU

Добавлено: 07 июл 2012, 17:46
Olej
Olej писал(а):- и всё получится ;-)
Пропуская промежуточные ступени (сначала можно только CD_ROM указать - поверить загрузку, потом HDD добавить, потом сеть...), в конечном итоге команда выглядит так:

Код: Выделить всё

[olej@notebook Puppy]$ sudo qemu -m 500M -hda /dev/sdc -cdrom xLupuRus528_IvannaSE.iso -boot d -net nic,vlan=0 -net tap,vlan=0 -smp 2
Could not initialize KVM, will disable KVM support
-------------- tap up -------------
^C-------------- tap down -------------
При этом для работы сети (в VM) заранее создаю 2 файла:

Код: Выделить всё

[root@notebook B84B-8520]# ls -l /etc/qem*
-rwxr-xr-x 1 olej olej   77 июня  16  2010 /etc/qemu-ifdown
-rwxr-xr-x 1 olej olej  119 нояб. 14  2010 /etc/qemu-ifup

[root@notebook etc]# cat /etc/qemu-ifup
#!/bin/sh
echo -------------- tap up -------------
/sbin/ifconfig $1 192.168.3.6 up

[root@notebook etc]# cat /etc/qemu-ifdown
#!/bin/sh
echo -------------- tap down -------------
/sbin/ifconfig $1 down
Это для работы tap0 (тунельного) сетевого интерфейса, а сеть виртуальная должна настраиваться на подсеть: 192.168.3.0/24
(это всё подробно расписано в тех статьях, с которых началась тема).
Именно из-за TAP-интерфейса QEMU придётся запускать от root.

Смотрим, что из всего этого кина получается:
QEMU-1.png
(301.36 КБ) 13864 скачивания
QEMU-2.png
(803.97 КБ) 13864 скачивания
На этом этапе:

1. не используется аппаратная виртуализация KVM (см. строку запуска QEMU); почему? не знаю ... раньше у меня (в статьях) KVM использовался, что-то поменялось за 2 года в QEMU - надо разбираться ... и это при всём том:

Код: Выделить всё

[olej@notebook Slax]$ lsmod | grep ^k
kvm_intel             126394  0
kvm                   346342  1 kvm_intel
- модули KVM, вроде как, загружены - процессор поддерживает аппаратную виртуализацию.

2. из-за отсутствия KVM, показанные экраны GUI ведут себя страшно тягомутно, большие задержки на шёлканье мышкой...

Re: QEMU

Добавлено: 07 июл 2012, 18:05
Olej
Olej писал(а):2. из-за отсутствия KVM, показанные экраны GUI ведут себя страшно тягомутно, большие задержки на шёлканье мышкой...
По такому случаю убиваю X11 и всё, что нужно, делаю в текстовой консоли - здесь никаких ощутимых задержек:
QEMU-3.png
QEMU-3.png (16.79 КБ) 16261 просмотр
QEMU-4.png
QEMU-4.png (17.1 КБ) 16265 просмотров
настроил интерфейс eth0 на подсеть 192.168.3.Х, пингуется хостовая машина...

Теперь остаётся:
- пробросить (iptables) NAT подсеть 192.168.3.Х в 192.168.1.Х для выхода на шлюз во внешний интернет (для доустановки пакетов)...
- или объединить 192.168.3.Х и 192.168.1.Х в единый бридж...
- (всё подробнейшим образом расписано во 2-й из показанных в начале статей);
- и установить ОС на /dev/hda
P.S. это очень интересное место:
- USB флешка хостовой машины /dev/sdc
- указанная в команде запуска в опции -hda
- начинает видеться в VM как единственный HDD /dev/sda

Re: QEMU

Добавлено: 07 июл 2012, 21:06
Olej
Olej писал(а): Теперь остаётся:
- пробросить (iptables) NAT подсеть 192.168.3.Х в 192.168.1.Х для выхода на шлюз во внешний интернет (для доустановки пакетов)...
- или объединить 192.168.3.Х и 192.168.1.Х в единый бридж...
- (всё подробнейшим образом расписано во 2-й из показанных в начале статей);
- и установить ОС на /dev/hda
Но ...
... это всё можно побороть (делал и знаю), но хлопотно. И подумалось следующее:
- визуальный VirtualBox написан на коде виртуализации QEMU ...
- и что можно сделать в QEMU - должно быть можно и в VirtualBox ...
- если его немножко обмануть ;-)

1. готовлю USB флешку, которая будет установочным диском:

Код: Выделить всё

[olej@nvidia Puppy]$ sudo fdisk /dev/sdc

Команда (m для справки): p

Диск /dev/sdc: 1009 МБ, 1009778688 байт
6 heads, 9 sectors/track, 36522 cylinders, всего 1972224 секторов
Units = секторы of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8ef43be3

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sdc1   *        2048     1972223      985088   83  Linux
- свеже созданный раздел.
У меня не получилось это шаманство с разделом FAT16 ... но возможно что-то пропустил - это нужно повторить и проверить!

Обязательно! не забыть форматировать новый раздел, я это сделал в ext2:

Код: Выделить всё

[olej@nvidia media]$ sudo mkfs.ext2 /dev/sdc1
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
61568 inodes, 246272 blocks
12313 blocks (5.00%) reserved for the super user
First data block=0
...
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
2. диск сделали - делаем VM в VirtualBox.
vm1.png
vm1.png (55.81 КБ) 16261 просмотр
- сам виртуальный диск VDI (главный элемент "нормальной" VM) - нам здесь не нужен, он фикция, пустой ... тупо создаём его по дефаулту.
vm2.png
vm2.png (50.28 КБ) 16258 просмотров
- а вот USB свой добавляем (в этот раз это тот 3-й, отмеченный птичкой).

и добавим в настройки IO APIC
vm3.png
vm3.png (59.13 КБ) 16260 просмотров
Старт...

Re: QEMU

Добавлено: 07 июл 2012, 21:12
Olej
Olej писал(а):Старт...
puppyrus-1.png
puppyrus-1.png (22 КБ) 16274 просмотра
Облом ;-)
Образы Linux они собрали с поддержкой PAE.
Возвращаемся в настройки и устанавливаем PAE.
vm4.png
vm4.png (44.28 КБ) 16258 просмотров
Поехали...

QEMU

Добавлено: 07 июл 2012, 21:18
Olej
Olej писал(а):Поехали...
pp1.png
(315.65 КБ) 13854 скачивания
pp2.png
pp2.png (22.06 КБ) 16257 просмотров
pp3.png
(579.36 КБ) 13855 скачиваний
VM работоспособна и пошла в интернет (я ничего не настраивал - всё сделал DHCP):
pp4.png
(126.96 КБ) 13854 скачивания

Re: QEMU

Добавлено: 07 июл 2012, 21:25
Olej
Вот тут и начинается самое интересное:

- устанавливаем ОС на диск:
pp8.png
(412.47 КБ) 13867 скачиваний
- но диск выбираем не /dev/sda (который у нас пустая VDI болванка виртуального диска VirtualBox), а /dev/sdb (который на самом деле ;-) диск /dev/sdc хостовой машины - USB флеш):
pp6.png
(563.8 КБ) 13857 скачиваний
pp7.png
(580.11 КБ) 13854 скачивания

Re: QEMU

Добавлено: 07 июл 2012, 21:29
Olej
Нам больше не нужна VM.
При завершении работы VM происходит то, ради чего я трахаюсь с этим дистрибутивом - сброс всего, что наизменено в RAM на диск:
ppe1.png
ppe1.png (29.45 КБ) 16250 просмотров
ppe2.png
ppe2.png (21.9 КБ) 16257 просмотров

Re: QEMU

Добавлено: 07 июл 2012, 21:41
Olej
И последний штрих:
- закончив изготовление bootable USB флешки хотелось бы проверить её загрузку...
- теперь опять перехожу из VirtualBox QEMU (сеть QEMU мне для проверки не нужна):

Код: Выделить всё

[olej@nvidia media]$ sudo qemu-kvm -m 700M -hda /dev/sdc -boot c -smp 2
...
ppq1.png
(287.4 КБ) 13855 скачиваний
ppqerr.png
ppqerr.png (9.72 КБ) 16249 просмотров
- здесь не всё нормально, но это ошибка терминальной системы (?), как её предоставляет QEMU Linux-у ... с этим можно разобраться, но система в текстовом режиме загрузилась - дальше в этом терминале можем выполнять команды Linux.

Резюме: мы изготовили USB флешке загрузочный RAM-based Linux + проверили его загрузочность, ни разу не перезагружая компьютер - это то, что я и хотел сделать, чтобы не дёргать помногу из-за "левых" экспериментов рабочие компьютеры.
(ну и дополнительно в "+" то, что нам из .iso файла не потребовалось накатывать LiveCD или LiveUSB промежуточные для загрузки с них)