Установка ядра под Debian, Основные моменты

Вообше есть два способа устанвки ядра под Debian: стандартный и deb-специфичный.
Debian-метод предусматривает для пересборки ядра специальный пакет - kernel-package, каковой и надлежит установить с помощью зазубренных ранее волшебных заклинаний:


S apt-get install kernel-package


Заодно следует обзавестись и сопутствующими пакетами - debhelper, modutils и libncurses5-dev (последний нужен для генерации меню по команде make menuconfig). И еще - пакетом fakeroot, который отвечает за запуск команд в имитируемом root-окружении.Далее, естественно, требуются исходники ядра. В качестве таковых можно взять последнюю версию ядра канонического, с http://www.kernel.org, можно - дополнить их патчами других разработчиков. А можно - просто пересобрать штатное ядро дистрибутива. В последнем случае нужно установить соответствующий пакет с исходниками, например:

 
S apt-get install kernel-source-2.6.12
 
 
 
Обращаю внимание, что имя пакета, содержащее исходники ядра, указывается с номером версии последнего. Кроме исходников, этот пакет содержит Debian-специфичные патчи, правда, нужные, насколько я понял, только для создания initrd.

Результатом выполнения последней команды будет появление в каталоге /usr/src тарбалла исходников. Переходим туда и распаковываем тарбалл обычным образом:

 
S tar xjvf kernel-source-2.6.12.tar.bz2


Да, в промежутке можно отредактировать файл /etc/kernel-pkg.conf - правда, кроме собственного имени и электронного адреса, вписывать в него вроде нечего.

Следующий этап Debian-метода построения ядра выполняется, "как всегда". То есть -
переходом в соответствующий каталог

 
S cd /usr/src/linux-source-2.6.12/


копированием в него нашего рабочего конфига ядра:

 
S cp /boot/config.config


(дабы не начинать конфигурирование с нуля) и запуском команды

 
S make menuconfig


Процедуру конфигурирования описывать не буду - это а) делалось многократно, и б) вполне может составить отдельную тему. В контексте же нынешней скажу только, что, в целях избавления от initrd, необходимо жестко встроить в ядро поддержку всего, имеющего отношение к старту системы. То есть - контроллера "несущего" диска и типа файловой системы, содержащей корень файлового древа . Неплохо также избавиться от поддержки "лишних" чипсетов и прочего не имеющего быть оборудования.

Далее руководство в приказном порядке рекомендует выполнить очистку дерева исходников:

 
$ make-kpkg clean


Насколько я понял, это требуется для уничтожения следов от номеров предыдущих ревизий ядра - следующей командой мы определим свою их нумерацию. А командой этой будет

 
$ fakeroot make-kpkg --append_to_version \
-intel --revision=rev.01 kernel_image


Здесь fakeroot создает "правильное" root-окружение (то есть команда может быть запущена от имени пользователя), make-kpkg - собственно программа для построения бинарного "ядерного" пакета, ее опции предписывают добавлять к имени пакета номер версии ядра, архитектуру, под которую оно собиралось, и номер ревизии, то есть нашей собственной сборки, а kernel_image - имя целевого пакета.

В результате указанной директивы сначала происходит компиляция ядра, а потом из него собирается самый обычный deb-пакет вида kernel-image-2.6.12-intel_rev.01.deb, помещаемый в каталог /usr/src. Так что дело остается за малым - установить его обычным же образом:

 
$ cd ..

 
$ dpkg -i kernel-image-2.6.12-intel_rev.01.deb


При этом файл образа ядра и соответствующий ему System.map будут не только скопированы куда следует (то есть в каталог /boot - если он составляет отдельную ветвь файлового древа, не забыть его примонтировать!), но и внесены изменения в файл конфигурации загрузчика (в моем случае - в /boot/grub/menu.lst): новое ядро займет умолчальную позицию в его меню, старое же сохранится в качестве резервного.

Вроде все. У меня все работает а ядро пересобиралось уже 4 раза. Только один совет надо иметь всега свой рабочий конфиг сохраненный в бекапе.

Новое на галерее