Сборка ядра Debian

Цель данной статьи — показать пользователям, что такое страшное словосочетание как «компиляция ядра» вовсе не так уж и страшно, и даже довольно просто, если всё делать вдумчиво.

Когда и зачем это нужно?

  • если ваше оборудование специфично
  • для поддержки нестандартных возможностей, не включенных в стандартное ядро
  • для оптимизации
  • если в силу каких-то причин вам необходима более новая версия ядра

В примере будет разобрана не просто перекомпиляция уже имеющегося ядра, а как раз установка и последующая сборка более нового.

Для подобного дела нужно сначала подготовиться. А именно заняться установкой следующих пакетов:

$ sudo aptitude install build-essential kernel-package fakeroot initrd-tools pkg-config libncurses5-dev
## (и `linux-source` - для тех, кто перекомпилирует имеющееся ядро)

Если вы решили ставить новое ядро, то идём на kernel.org или зеркало yandex — mirror.yandex.ru/kernel.org/linux/kernel/ — и скачиваем необходимую версию ядра. У нас это linux-3.0.4.tar.bz2.

Смотрим есть ли пакет linux-source в каталоге /usr/src. В случае с перекомпиляцией он будет, если вы скачали новое ядро, то переместите его туда.

$ ls /usr/src/
linux-source-3.0.4.tar.bz2

Переходим в каталог и распаковываем архив:

$ cd /usr/src
$ sudo tar xjf linux-source-3.0.4.tar.bz2

Идём в созданную после разархивирования директорию:

$ cd linux-source-3.0.4/

Теперь можно заняться конфигурированием ядра. Автором это было сделано в консоли с остановленным X-Window. В таком случае пишем от рута:

# make menuconfig

Если желаете конфигурировать в графическом терминале, вам послужит команда

# make xconfig

Но понадобится установить дополнительные пакеты/библиотеки, в общем ну её....

С конфигурацией закончили? Тогда собираем наше новенькое ядрышко:

# fakeroot make-kpkg --initrd --revision=debian.3.0.4 kernel_image

В '--revision' можете выставить свои названия/значения вместо приведённых здесь debian и 3.0.4

Осторожно!

Выше был приведён способ сборки ядра в стиле debian way. К сожалению, иногда это может не сработать.

«не сработать» — это когда сборка останавливается с ошибкой компиляции

.....
make: *** Documentation/lguest: Нет такого файла или каталога. Останов.
make: *** [debian/stamp/build/kernel] Ошибка 2-------------------------

Довольно известный баг дебиана. Тогда собираем ядро как все люди:

# make mrproper
# make menuconfig
# make && make modules_install
# cp arch/$ARCH/boot/bzImage /boot/linux-$VERSION

где $VERSION — версия вашего ядра.

После долгого (или не очень) компилирования установим ядро как обычный пакет в debian (для тех, кто собирал по первому способу).

Ядро будет располагаться в директории /usr/src

Мы уже там, так что даём команду:

# dpkg -i ./linux-image-3.0.4_debian.3.0.4_amd64.deb

И перезагружаемся

# reboot

В итоге при следующем старте системы получаем целых два ядра. Пробуем загрузиться с новым, если напортачили, имеем возможность выбрать из списка загрузки предыдущее ядро.