1. Чем ядро из дистрибутива Debian отличается от «ванильного» ядра с kernel.org?
Во-первых, оттуда могут быть удалены части, которые не вписываются в DFSG
— прложения о том, что есть действительно свободное ПО с точки зрения
политики Debian. При этом люди, которые поддерживают пакет ядра Debian
стараются сделать изменения между ванильным и дистрибутивным ядром
минимальными. Кроме того, среди дистрибутивных ядер нередко можно найти
уже готовые ядра со специально наложенными патчами vserver или xen.
Отдельно патчи можно получить, установив пакет linux-patch-debian-версия.
2. Некоторые соглашения относительно названий и назначения пакетов, которые относятся к ядру Linux в составе дистрибутива.
Ядро Linux (не забывайте, что Debian портирован и на некоторые другие
ядра, например Free или NetBSD или даже Hurd) собирается из пакета
исходных текстов linux-версия.
В результате получаются независимые от архитектуры пакеты:
linux-source-версия — содержит исходные тексты ядра с уже наложенными патчами от Debian.
linux-manual-верися — содержит страницы руководства (man) по API ядра.
linux-doc-версия — содержит документацию ядра
linux-patch-debian-версия — содержит патчи, наложенные на ванильные исходные тексты ядра, чтобы получить linux-source-версия.
linux-tree-версия — это просто пакет, зависящий от других пакетов,
необходимых для сборки ядра. Его установка повлечет за собой установку в
систему всех необходимых пакетов (в том числе исходных текстов), нужных
для сборки ядра нужной версии.
linux-support-версия-имяABI — содержит файлы для поддержки сборки сторонних модулей для ядра указанной версии и ABI.
Ну и зависимые от архитектуры пакеты:
linux-headers-версия-имяABI — заголовочные файлы ядра. Также могут быть дополнены разновидностями типа bigmem/smp/что-то еще.
linux-image-разновидность — специальный пакет, притягивающий в виде
зависимостей последнюю версию ядра определенного типа. Например
linux-image-alpha-smp. Возможны и варианты
linux-image-главная_версия-разновидность для установки определенной
линейки ядер (2.4 или 2.6).
linux-image-верися-архитектура-разновидность — образ ядра определенной версии для определенной архитектуры.
3. Сборка ядра
Как уже стало ясно, получить исходные тексты ядра Debian можно путем установки соответвующего пакета, например:
# aptitude install linux-source-2.6.24
После этого нужно перейти в каталог /usr/src/ и распаковать полученный тарболл с исходными текстами:
# cd /usr/src
# tar xf linux-source-2.6.24.tar.bz2
Затем нужно перейти в директорию с исходными текcтами ядра:
# cd linux-source-2.6.24
Теперь ядро необходимо сконфигурировать перед сборкой (иначе зачем мы его вообще собираемя собирать самостоятельно?).
Сделать это можно любым доступным способом:
make config — через простой текстовый интерфейс
make oldconfig — используя старый конфигурационный файл ядра
make menuconfig — используя ncurses интерфейс
make xconfig — используя графический интерфейс.
По окончанию конфигурации мы готовы собирать ядро в пакет.
Для этого прежде всего требуется утилита make-kpkg, предназначенная как раз для этого. Она содержится в пакете kernel-package:
# aptitude install kernel-package
# make-kpkg clean
# make-kpkg --initrd kernel-image
либо, если хочется добавить дополнительную «ревизию» к версии ядра —
# make-kpkg --initrd --revision=10.0 kernel-image
или даже «разновидность»
# make-kpkg --initrd --append-to-version=k7 kernel-image
То же самое с помощью make-kpkg можно проделать и используя оригинальное ядро с kernel.org.
В результате в директории уровнем выше появится пакет
linux-image-версия, который можно без опаски устанавливать с помощью
dpkg -i — ядро будет автоматически установлено и даже прописано в меню
загрузчика.
4. Сборка дополнительных модулей для ядра.
Сюда относятся разнообразные драйверы устройств и файловых систем, не включенные в дерево исходных текстов ядра.
Для их установки желательно пользоваться утилитой module-assistant,
особенно если их исходные тексты уже включены в репозитарий
дистрибутива.
# m-a a-i nvidia-kernel
Как пример, эта команда вызовет установку пакета nvidia-kernel-source
последней доступной версии, сборку пакета с модулем для текущего ядра и
его автоматическую установку. Для этого потребуется только пакет
linux-headers той же версии, что и текущее ядро.