Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #89, МАЙ 2006 г.

Искусство виртуализации

Евгений Зобнин aka j1m

Хакер, номер #089, стр. 089-094-4


# отводим 64 Мб оперативной памяти

memory = 64

# имя может быть любым

name = "ubuntu"

# эмулируем одну сетевую карту

nics = 1

# мак-адрес и IP-адрес (нужен для маршрутизации)

vif = [ 'mac=fe:fd:00:00:00:11, ip=10.0.0.1' ]

# гостевая ОС будет видеть только два раздела диска (здесь /dev/hda2 - корень, а /dev/hda3 - своп)

disk = [ 'phy:hda2,hda2,w', 'phy:hda3,hda3,w' ]

# указываем корневой раздел

root = "/dev/hda2 ro"

# параметры, передаваемые ядру (указываем только уровень инициализации для init)

extra = "3"

Теперь нужно снова примонтировать раздел с Ubuntu (/dev/hda2) и отредактировать соответствующим образом его конфиг /etc/fstab. Дело осталось за малым. Набираем команду "xm create ubuntu -c" и получаем доступ к первой консоли Ubuntu, на которой можно наблюдать загрузку ядра и инициализацию, а затем и приглашение к регистрации в системе. Обратно в xterm выходим через комбинацию <Ctrl+]>, возвращаемся в Ubuntu с помощью команды "xm console ubuntu".

[реактивный qemu]

С моей стороны было бы преступлением не рассказать про эмулятор ПК qemu, одно из главных достоинств которого - высокая скорость эмуляции. Автор qemu, Фабрис Беллард (Fabrice Bellard), - человек очень компетентный в данном вопросе. Он даже выложил на своем сайте документ, где поделился секретами оптимизации кода эмуляции. Вторая отличительная черта qemu - возможность работы в двух режимах: режиме эмуляции всего ПК и режиме эмуляции процессора. Первый режим позволяет запускать операционные системы внутри эмулятора, а второй - исполнять бинарные файлы на процессоре иной архитектуры. Например, с помощью qemu можно запустить бинарник от PowerPC на обычном пентиуме. Сейчас qemu поддерживает эмуляцию процессоров архитектуры x86, ARM, SPARC, PowerPC и MIPS. Сам эмулятор может работать на множестве архитектур, в операционных системах семейства UNIX, Windows и MacOS X.

Относительно недавно разработчик выложил на своем сайте (fabrice.bellard.free.fr) модуль ядра Linux - kqemu, превращающий qemu в настоящую виртуальную машину (двоичный код теперь исполняется не виртуальным процессором, а физическим). Код модуля не доступен, и автор его не раскроет, пока не получит материальной поддержки. Однако энтузиасты из open source сообщества время даром не теряли и уже выпустили alpha-версию альтернативного модуля qvm86 (www.qvm86.org), бинарно совместимого с kqemu.

Текущая версия qemu (0.8) воссоздает следующую аппаратную конфигурацию: чипсет i440, видеокарта Cirrus CLGD 5446, мышь и клавиатура с интерфейсом PS/2, сетевая карта NE2000, звуковая карта Creative SoundBlaster 16. Кроме того, qemu эмулирует последовательные, параллельные, USB-порты и поддерживает SMP, вплоть до 255 процессоров.

[добро пожаловать в виртуальный мир]

Настало время опробовать qemu в деле. Скачиваем последнюю версию qemu и kqemu с официальной странички (fabrice.bellard.free.fr/qemu), распаковываем архив qemu-0.8.0.tar.gz в каталог /tmp, а kqemu-0.7.2.tar.gz - в новообразованный /tmp/qemu-0.8.0. В нем набираем, ставшие уже классическими, команды: "./configure && make && make install". Инсталлятор установит бинарник qemu и сопутствующие файлы, а также поместит модуль kqemu в /lib/modules. Для работы kqemu требует доступ к tmpfs, поэтому в /etc/fstab необходимо добавить строку "tmpfs /dev/shm tmpfs defaults 0 0", выполнить команду "mount -a" и подгрузить модуль: "modprobe kqemu".

Назад на стр. 089-094-3  Содержание  Вперед на стр. 089-094-5