User Mode Linux

Материал из Linux Wiki
Перейти к навигацииПерейти к поиску

User Mode Linux - тип виртуализации на базе Linux-ядра, когда ядро компилируется как обычный исполняемый файл, следовательно, гостевая система запускается просто как еще один или несколько процессов на хост-системе.

Создание виртуальной UML-машины

Для создания виртуальной машины необходимо проделать 2 шага: скомпилировать ядро и создать образ корневой файловой системы.

Компиляция ядра

Все, что необходимо для создания ядра User Mode Linux присутствует в ванильном дереве, поэтому ничего докачивать и патчить не придется. Берем свежий архив исходного кода ядра, распаковываем, после чего выполняем 3 простых команды:

export ARCH=um
make defconfig
make menuconfig

Первая команда задаст архитектуру ядра, т.е., в данном случае UML, вторая сгенерирует дефолтный конфиг. Если же необходимо использовать конфиг от старого ядра - скопируйте его под именем .config в корень дерева исходников, в этом случае вторую команду можно пропустить. Последняя команда открывает конфигуратор ядра. Рекомендую собирать ядро без поддержки модулей, в таком случае на выходе получится только один бинарный файл размером примерно 3 Мб. Не забудьте включить поддержку виртуального блочного устройства и той файловой системы, которую Вы планируете использовать для образа корневой ФС. После завершения конфигурирования ядра выполняем еще одну команду:

make

Если Вы последовали совету и собирали ядро без модулей, то через несколько минут в корне дерева исходников появится бинарный файл linux - это и есть необходимое нам ядро. Сохраните его под удобным для Вас именем в отдельном каталоге.

Создание образа корневой ФС

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

dd if=/dev/zero of=root_fs bs=1M count=1024
mkfs.reiserfs -f root_fs
mkdir /tmp/rootfs
mount -o loop root_fs /tmp/rootfs

Образ размером 1 Гб создан, форматирован в ReiserFS и примонтирован, осталось распаковать на него базовую систему. В Debian GNU/Linux для этого можно воспользоваться утилитой debootstrap:

debootstrap lenny /tmp/rootfs http://debian.org.ua/debian

как вариант - можно воспользоваться скриптом для полуавтоматической установки Debian.

Итак, образ корневой ФС создан, отмонтируем его командой umount.

Запуск UML-машины

Для запуска нашей UML-машины выполните наше ядро Linux как обычный бинарный файл, передав ему в качестве аргумента путь к образу корневой ФС:

./linux32 ubda=root_fs