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