User Mode Linux: различия между версиями
Rain (обсуждение | вклад) м (опечатка) |
Rain (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
User Mode Linux - тип виртуализации на базе Linux-ядра, когда ядро компилируется как обычный исполняемый файл, следовательно, гостевая система запускается просто как еще один | User Mode Linux - тип виртуализации на базе Linux-ядра, когда ядро компилируется как обычный исполняемый файл, следовательно, гостевая система запускается просто как еще один или несколько процессов на хост-системе. | ||
==Создание виртуальной UML-машины== | ==Создание виртуальной UML-машины== | ||
Строка 7: | Строка 7: | ||
===Компиляция ядра=== | ===Компиляция ядра=== | ||
Все, что необходимо для создания ядра User Mode Linux присутствует в ванильном дереве, поэтому ничего докачивать и патчить не придется. Берем свежий архив исходного кода ядра, распаковываем, после чего выполняем | Все, что необходимо для создания ядра User Mode Linux присутствует в ванильном дереве, поэтому ничего докачивать и патчить не придется. Берем свежий архив исходного кода ядра, распаковываем, после чего выполняем 3 простых команды: | ||
<pre> | <pre> | ||
Строка 28: | Строка 28: | ||
<pre> | <pre> | ||
dd if=/dev/zero of= | dd if=/dev/zero of=root_fs bs=1M count=1024 | ||
mkfs.reiserfs -f | mkfs.reiserfs -f root_fs | ||
mkdir /tmp/rootfs | mkdir /tmp/rootfs | ||
mount -o loop | mount -o loop root_fs /tmp/rootfs | ||
</pre> | </pre> | ||
Строка 49: | Строка 49: | ||
<pre> | <pre> | ||
./linux32 ubda= | ./linux32 ubda=root_fs | ||
</pre> | </pre> | ||
[[Category:User Mode Linux]][[Category:Linux]][[Category:Linux-ядро]] | |||
[[Category:User Mode Linux]][[Category:Linux]] |
Версия 01:10, 26 октября 2008
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