Цель данной статьи — показать пользователям, что такое страшное словосочетание как «компиляция ядра» вовсе не так уж и страшно, и даже довольно просто, если всё делать вдумчиво.
Когда и зачем это нужно?
- если ваше оборудование специфично
- для поддержки нестандартных возможностей, не включенных в стандартное ядро
- для оптимизации
- если в силу каких-то причин вам необходима более новая версия ядра
В примере будет разобрана не просто перекомпиляция уже имеющегося ядра, а как раз установка и последующая сборка более нового.
Для подобного дела нужно сначала подготовиться. А именно заняться установкой следующих пакетов:
$ 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
В итоге при следующем старте системы получаем целых два ядра. Пробуем загрузиться с новым, если напортачили, имеем возможность выбрать из списка загрузки предыдущее ядро.