Ручная сборка ядра linux

Итак, вы решили собрать своё ядро. Это позволит вам уменьшить время загрузки системы, включить необходимую функциональность или удалить неиспользуемую.

Переходим в режим администратора

$ su - или $ sudo -i

Первым делом устанавливаем исходные коды ядра
на моей машине с gentoo это делается так:

# emerge -vp gentoo-sources These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild NS ] sys-kernel/gentoo-sources-2.6.30-r1 [2.6.29-r3] USE="-build -symlink" 58,068 kB Total: 1 package (1 in new slot), Size of downloads: 58,068 kB # emerge -q gentoo-sources >>> Verifying ebuild manifests >>> Emerging (1 of 1) sys-kernel/gentoo-sources-2.6.30-r1 >>> Installing (1 of 1) sys-kernel/gentoo-sources-2.6.30-r1 * Messages for package sys-kernel/gentoo-sources-2.6.30-r1: * If you are upgrading from a previous kernel, you may be interested * in the following document: * - General upgrade guide: http://www.gentoo.org/doc/en/kernel-upgrade.xml * GNU info directory index is up-to-date.

Это новое ядро имеет впечатляющий changelog
Теперь обновляем ссылку /usr/src/linux

# eselect kernel --list Available kernel symlink targets: [1] linux-2.6.18-xen-r12 [2] linux-2.6.29-gentoo-r1 [3] linux-2.6.29-gentoo-r3 * [4] linux-2.6.30-gentoo-r1 # eselect kernel --set 4

и идём в /usr/src/linux

# cd /usr/src/linux

Конфигурирование нового ядра

Запускаем menuconfig

# mkdir /root/2.6.30 # make O=/root/2.6.30 menuconfig

Но перед тем как начать ручную конфигурацию, я рекомендую создать конфигурационный файл с опциями по умолчанию.

make O=/root/2.6.30 defconfig

И уже потом менять только те настройки, в значении которых уверенны. Это поможет избежать лишних ошибок.

Несколько слов о том как пользоваться интерфейсом:
навигация осуществляется с помощью стрелок. <enter> переводит во вложенное меню, <y> включает опцию, <n> — выключает, <m> — включает как модуль. <?> — вызывает справку, </> — поиск <пробел> — активирует выбранный элемент.

Меню

General setup — основные настройки
Enable loadable module support — настройка загрузки модулей
Enable the block layer — блочные устройства
Processor type and features — настройки связанные с процессором
Power management and ACPI options — управление питанием и ACPI
Bus options (PCI etc.) — опции шин(PCI)
Executable file formats / Emulations — форматы исполняемых файлов
Networking support — опции поддержки сети
Device Drivers — драйвера устройств
Firmware Drivers — Firmware драйвера
File systems — настройка файловых систем
Kernel hacking — дополнительные настройки ядра
Security options — безопасность
Cryptographic API — шифрование
Virtualization — виртуализация
Library routines — дополнительные библиотеки.

Расставляем в нужных местах галочки(в первый раз этот процесс займёт довольно много времени) и сохраняем конфиг

Собираем:

# make O=/root/2.6.30

Устанавливаем:

# make O=/root/2.6.30 install # make O=/root/2.6.30 modules_install

если /boot находится на отдельном разделе, то перед установкой нужно примонтировать его.

# mount /boot

Перезагружаем машину:

# init 6

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

Проверить версию загруженного ядра можно командой

# uname -a