Ручная сборка ядра 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: //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