8.6. Сборка нового ядра

Зачем пересобирать ядро? Обычно этого делать не нужно, так как ядро, устанавливаемое по умолчанию в Debian, подходит для многих конфигураций. Кроме этого, в дистрибутиве Debian есть ещё несколько сборок ядра. Поэтому, сначала проверьте, может другой пакет с ядром лучше подходит для вашего компьютера. Однако, полезно пересобрать ядро в следующих случаях:

8.6.1. Управление образами ядра

Не бойтесь пересобирать ядро. Это забавно и полезно.

Чтобы собрать ядро по технологии Debian, вам потребуются некоторые пакеты: fakeroot, kernel-package, linux-source-2.6 и некоторые другие, которые, вероятно, уже установлены (в /usr/share/doc/kernel-package/README.gz есть полный список).

С помощью этого метода создаётся .deb файл из исходных текстов ядра, а также, если у вас имеются нестандартные модули, делается .deb файл с синхронизированными зависимостями. Это наилучший способ управления образами ядра; в /boot лежит ядро, System.map и журнальный конфигурационный файл от сборки.

Заметим, что вам не обязательно собирать ядро по технологии Debian; но мы пришли к выводу, что управлять ядрами с помощью системы управления пакетами на самом деле безопаснее и легче. Фактически, вы можете получить исходные тексты ядра прямо у Линуса, а не в виде linux-source-2.6, и собрать ядро с помощью kernel-package.

Заметим, что полную документацию по использованию kernel-package можно найти в /usr/share/doc/kernel-package. Этот раздел содержит лишь краткое руководство.

Далее мы предполагаем, что вы можете делать на своей машине что угодно и распаковываете исходные тексты ядра в домашний каталог[21]. Также мы предполагаем, что у вас ядро версии 2.6.18. Проверьте, что вы находитесь в каталоге куда хотите распаковать исходные тексты ядра, распакуйте их с помощью команды tar xjf /usr/src/linux-source-2.6.18.tar.bz2 и перейдите в только что появившийся каталогlinux-source-2.6.18.

Теперь вы можете выполнить конфигурацию ядра. Если установлены, настроены и запущены X11, то запустите make xconfig, иначе make menuconfig (вам потребуется установить пакет libncurses5-dev). Внимательно прочитайте интерактивную документацию и внимательно выберите нужные параметры. Если что-то вам непонятно, обычно лучше включить драйвер устройства (программное обеспечение, которое управляет установленным оборудованием, например, картами Ethernet, SCSI-контроллерами и так далее). Будьте осторожны: для других параметров, не относящихся к определённому аппаратному обеспечению, нужно оставить значения по умолчанию, если вы не понимаете, что они делают. Не забудьте выбрать Kernel module loader в Loadable module support (не включён по умолчанию). Если его не включить, возникнут проблемы с установкой Debian.

Очистите дерево исходных текстов и сбросьте параметры kernel-package. Для этого выполните make-kpkg clean.

Теперь соберите ядро: fakeroot make-kpkg --initrd --revision=custom.1.0 kernel_image. Номер версии 1.0 можно изменить; этот номер версии нужен только для отслеживания ваших сборок. Более того, вы можете добавить любое слово вместо custom (например, имя машины). Сборка ядра может занять некоторое время в зависимости от мощности машины.

После завершения сборки вы можете установить собранное ядро как обычный пакет. От суперпользователя выполните dpkg -i ../linux-image-2.6.18-субархитектура_custom.1.0_i386.deb. Часть субархитектура это необязательная субархитектура, например, 686, зависящая от установленных параметров ядра. dpkg -i установит ядро вместе с некоторыми полезными файлами поддержки. Например, будет правильно установлен System.map (полезен при отладке проблем с ядром), а также /boot/config-2.6.18, содержащий параметры сборки ядра. Также, пакет способен автоматически использовать системный загрузчик платформы для обновления загрузки. Если вы создали пакет с модулями, то вам нужно установить и его.

Настало время перезагрузить систему: внимательно прочитайте все предупреждения, которые могут появиться, затем наберите shutdown -r now.

Подробней о ядрах Debian и сборке ядра смотрите в Debian Linux Kernel Handbook. Полная информация о kernel-package лежит в каталоге /usr/share/doc/kernel-package.



[21] Есть несколько мест куда можно распаковывать исходные тексты и собрать своё ядро, но это самый лёгкий способ без необходимости раздачи специальных прав.