User Mode Linux: различия между версиями

Материал из Linux Wiki
Перейти к навигацииПерейти к поиску
м (опечатка)
 
(не показана 1 промежуточная версия 1 участника)
Строка 1: Строка 1:
User Mode Linux - тип виртуализации на базе Linux-ядра, когда ядро компилируется как обычный исполняемый файл, следовательно, гостевая система запускается просто как еще один (несколько) процессов на хост-системе.
User Mode Linux - тип виртуализации на базе Linux-ядра, когда ядро компилируется как обычный исполняемый файл, следовательно, гостевая система запускается просто как еще один или несколько процессов на хост-системе.


==Создание виртуальной UML-машины==
==Создание виртуальной UML-машины==
Строка 7: Строка 7:
===Компиляция ядра===
===Компиляция ядра===


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


<pre>
<pre>
Строка 15: Строка 15:
</pre>
</pre>


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


<pre>
<pre>
Строка 28: Строка 28:


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


Строка 49: Строка 49:


<pre>
<pre>
./linux32 ubda=rootfs
./linux32 ubda=root_fs
</pre>
</pre>


 
[[Category:User Mode Linux]][[Category:Linux]][[Category:Linux-ядро]]
[[Category:User Mode Linux]][[Category:Linux]]

Текущая версия на 22:27, 19 января 2009

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