FastNetMon

Saturday 27 February 2010

Сборка в Debian ядра с kernel.org

Идем на: http://kernel.org/, смотрим какое ядро "Latest Stable Kernel" и скачиваем его.

Скачиваем:

cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.9.tar.bz2
tar -xf linux-2.6.32.9.tar.bz2
cd linux-2.6.32.9


Если Вам требуется самое новое актуальное ядро (сейчас это 2.6.33.7), а не то, что идет с долгой поддержкой, вызываем следующие команды (а такде не забудьте поставить kernel-package из testing):

cd /usr/src
export KERNEL_VERSION=2.6.33.7
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-$KERNEL_VERSION.tar.bz2
tar -xf linux-$KERNEL_VERSION.tar.bz2
cd linux-$KERNEL_VERSION


Копируем конфиг от активного ядра:

cp /boot/config-`uname -r` .config


Ставим ncurses, необходимый для работы конфигуратора:

apt-get install -y libncurses5-dev


Запускаем конфигуратор:

make menuconfig


Корректируем, что требуется, выходим из конфигуратора по Exit и подтверждаем сохранение конфига.

Ставим спец-софт для сборки .deb пакетов с ядром:
apt-get install -y kernel-package


Очищаем директорию от временных файлов, оставшихся от прошлой сборки(если она была):
make-kpkg clean


В случае 2.6.33 ядра и Debian Lenny (ну Ubuntu все должно быть ок) следующая операция у Вас завершится гарантированной неудачей, чтобы ее не постигнуть читаем здесь: http://phpsuxx.blogspot.com/2010/02/2633-makekpkg.html

Собираем (2 - означает число ядер в системе, ставьте на основе того, сколько у Вас их):
CONCURRENCY_LEVEL=2 make-kpkg --initrd --revision=1.2 --append-to-version=-mycompany-1-2 kernel-image


Кстати, есть фишка у make-kpkg - он Вам не даст собрать ядро, пока вы не сделали clean, что при частой пересборке ядра (например при тюнинге) очень неудобно, но решение есть:

vi /etc/kernel-pkg.conf



do_clean := NO


Теперь ждем, после окончания сборки в папке /usr/src будет создан пакет .deb c новым ядром, его нужно установить командой:
dpkg -i kernel-some-version.deb

После установки этого .deb пакета возможна проблема - initrd не будет создан автоматически (у меня она имела место лишь на Debian 5 Lenny), более подробно о баге: http://phpsuxx.blogspot.com/2010/09/make-kpkg-deb-initrd.html

3 comments :

  1. Видел замечания относительно файла .config. Предлагают либо пользоваться "make oldconfig" после копирования .config, либо после "make menuconfig" воспользоваться кнопкой "Load" и открывать файл с конфигурацией ядра.

    P.S.
    Если комментарий не содержит информации соответствующей истине, предполагаю что владелец блога, удалит комментарий, либо не допустит к публикации, не хотелось бы вводить в заблуждение читателей.

    ReplyDelete
  2. Честно говоря, я не знаю, что делается при make oldconfig, вполне возможно что как раз то самое копирование конфига ядра из /boot. Если кто владеет полной информацией - милости прошу.

    ReplyDelete
  3. О make oldconfig.
    Берется 1в1 текущая конфигурация ядра, плюс конфигуратор спрашивает о задействовании новых параметров, отсутствующих в старом ядре. Что бы использовать make oldconfig, старый конфиг нужно подсунуть руками.

    ReplyDelete

Note: only a member of this blog may post a comment.