Сборка ядер и модулей ядра в Debian
By admin ~ Ноябрь 20th, 2008. Filed under: Инсталляция.
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 той же версии, что и текущее ядро.
Источник: stasikos.livejournal.com
Popularity: 22%
Похожие статьи: