Ubuntu Linux сборка собственного ядра
Материал из Shinkei.ru UNIX doc&howto
Очень давно, в пору первых 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 гигабайта.
