Ubuntu Linux сборка собственного ядра

Материал из Shinkei.ru UNIX doc&howto

Версия от 05:24, 13 июля 2009; Shinkei (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Очень давно, в пору первых RedHat и Mandrake Linux было модно собирать собственные ядра, ибо с поддержкой "от производителя" было туго, чего не скажешь о настоящих днях. Сейчас собранные производителем ядра выходят довольно часто, и их можно не собирать руками. Но бывают такие случаи, когда сборка собственного ядра, все же необходима по некоторым причинам. Итак. В Debian/Ubuntu наверное можно собрать ядро стандартными средствами make menuconfig && make depend && make && make modules_install..., но все же это неправильно, это порушит систему пакетов и общую гармонию. Лучше совместить сборку ядра со сборкой пакета. Да и друзьям можно потом скопировать, или там если надо обновить десяток серверов или виртуальных машин :)

Сборку можно производить на любой машине подходящей архитектуры, не обязательно собирать пакет именно там, где он будет использоваться.

Содержание

[править] Установка необходимых пакетов и архива ядра

Для сборки ядра нам понадобится несколько пакетов а так же их зависимости :)

sudo apt-get install kernel-package libncurses5-dev fakeroot wget bzip2

Далее нужно скачать исходник ядра c http://kernel.org (ссылка имеет обозначение F). На момент написания последняя версия ядра была 2.6.30 а RC - 2.6.31-rc1. Качаем (57 мегабайт) и распаковываем 2.6.30:

cd /usr/src/
sudo wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.tar.bz2
sudo tar xvf linux-2.6.30.tar.bz2
cd linux-2.6.30

[править] Сборка нового ядра

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

sudo cp /boot/config-`uname -r` ./.config
sudo make menuconfig

После выполнения последней команды, добавим поддержку экпериментальных драйверов: заходим (и при необходмости ставим галку) в "Device Drivers"/"Staging drivers" и ОТКЛЮЧАЕМ ГАЛКУ "Exclude Staging drivers from being built". После этого выходим из конфигурации ядра и сохраняемся :)

Будет не лишним сказать, что можно зайти в "Processor type and features"/"Processor family" и выбрать тип используемого процессора. При этом код ядра при компиляции оптимизируется под конкретное семейство процессора и это может очень неплохо сказаться на multimedia приложениях. Так же в этом разделе "Processor type and features" есть параметр "High Memory Support" - тут можно выбрать максимальное поддерживаемое количество памяти. Будет полезно для машин с количеством, превышающим 4ГБ оперативной памяти.

А теперь самое главное - собираем ядро.

sudo make-kpkg clean
sudo CONCURRENCY_LEVEL=3 INSTALL_MOD_STRIP=1 fakeroot make-kpkg --initrd --append-to-version=-shinkei kernel_image kernel_headers

Параметр CONCURRENCY_LEVEL указывает количество ядер + 1, т.е. если у Вас 2 ядра, пишем 3, если 4, пишем 5. Я использую параметр 5. На качество сборки никак не влияет, но заметно её ускоряет. --append-to-version=-shinkei - в этом параметре shinkei - это просто хвостик, который будет приписываться к ядру. Например на работе мне нужно собрать новые ядра для web и mysql серверов. В этом случае при сборке я дописываю нужный хвостик, и уже никогда не запутаюсь при выборе ядра для установки.

Сборка на AMD Phenom(tm) 9650 Quad-Core заняла не более 30 минут. Для сборки понадобилось 4ГБ дискового пространства в /usr разделе, или куда там /usr смонтирован.

[править] Установка свежесобранного ядра

В итоге после сборки получаем два файла в /usr/src:

linux-headers-2.6.30-shinkei_2.6.30-shinkei-10.00.Custom_i386.deb
linux-image-2.6.30-shinkei_2.6.30-shinkei-10.00.Custom_i386.deb

Их и будем устанавливать. Выполняем для установки:

cd /usr/src
sudo dpkg -i linux-headers-2.6.30-shinkei_*.deb linux-image-2.6.30-shinkei_*.deb

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

sudo reboot

[править] Сборка ядра на Intel Atom

Для всех Intel Atom N270 процессоров имеет смысл выставить в "Processor type and features"/"Processor family" значение Core2. Судя по форумам, это одно и то же семейство процессоров. Сборка на MSI Wind U90 занимает не более 3х часов, дискового пространства кушается 3.3 гигабайта.