Патчительное отношение к ядру

Как было показано в предыдущих топиках, сборка программ и даже ядра из исходников (см. mtaalamu.ru/blog/linux/942, mtaalamu.ru/blog/linux/936.html и mtaalamu.ru/blog/linux/916.html) — дело вполне посильное даже для начинающих пользователей. Но, конечно, бывают ситуации специфические, когда нужно придать ядру особые свойства. Например пропатчить его под нестандартную, но весьма популярную систему для создания LiveCD aufs, о которой я тоже недавно писал.

На первый взгляд процедура наложения и установки данного патча на ядро выглядит довольно страшно. Автор модуля aufs — Junjiro R. Okajima — как будто зарекся оформлять свои мысли в каком-либо виде, кроме голимого plain-текста, набранного, судя по всему, в каком-то гикнутом редакторе. Вот ссылка на страничку проекта, вселяющую ужас при первом посещении: aufs.sourceforge.net/.

Однако самураю не откажешь в умении добротно формулировать свои мысли на английском, и за кажущейся суровостью кроется вполне адекватная инструкция. Мне остаенся только переложить ее на русский с учетом опыта установки и успешного запуска aufs на своем компьютере.

Итак, первым делом входим в каталог /usr/src.

cd /usr/src


Свои наработки Junjiro R. Okajima-сан не хранит в виде тарболов (tar.gzip — архивов), а использует репозитарии git, в полном соответствии с идеологией разработчиков ядра Linux. Поэтому чтобы вытянуть исходники модуля aufs нужно ввести

$git clone http://git.c3sl.ufpr.br/pub/scm/aufs/aufs2-standalone.git aufs2
$ cd aufs2
$ git checkout origin/aufs2-XX


где XX — номер версии ядра, исходники которого, конечно же, предварительно должны уже быть установлены всё в тот же /usr/src. Например, если патч налагается на ядро 2.6.34, то последняя строка в вышеприведенном фрагменте должна выглядеть как

$ git checkout origin/aufs2-34


В результате этих действий должен появиться каталог /usr/src/aufs2, в котором находятся каталоги Documentation, fs, include и несколько патчей. Перечисленные каталоги следует скопировать в каталог ядра, например так (находясь в /usr/src/aufs2)

cp -R Documentation /linux-2.6.34
cp -R fs /linux-2.6.34
cp -R include /linux-2.6.34


Сам я выполняю подобные операции с помощью Midnight Commander'a.

Выходим из каталога aufs2, входим в исходники ядра и накладываем 3 патча:

cd /linux-2.6.34
patch -p1 < /aufs2/aufs2-kbuild.patch
patch -p1 < /aufs2/aufs2-base.patch
patch -p1 < /aufs2/aufs2-standalone.patch


Теперь входим в конфигуратор ядра

make menuconfig


находим в списке файловых систем Aufs2 (она появилась в списке только после наложения патчей), говорим, что она нам нужна (в виде модуля) и, подтвердив сохранение изменений, выходим из конфигуратора.

Всё!

make && make modules_install


Естественно, модуль будет работать лишь с родным ядром, которое следует выбрать при загрузке. А вот о том, как организовать многовариантную загрузку (с разными ядрами) речь пойдет в следующем топике.

Продолжение следует.

Комментарии (5)

RSS свернуть / развернуть
+
0
Очень полезно !
Молодeжь!
Кодинг — дело здоровых. Кушайте больше море-продуктов!
Бросайте курить !
avatar

Markony

  • 27 мая 2010, 14:42
+
0
Но берегите глаза
avatar

yababay

  • 27 мая 2010, 15:03
+
+1
Станете как кролик…
avatar

Markony

  • 27 мая 2010, 15:22
+
0
я вынужден возразить
avatar

FREExLOADER

  • 30 мая 2010, 00:27
+
0
ну и флудерство в комментах
по сабжу пасиб)
avatar

ksandras

  • 29 мая 2010, 10:39

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.