Сборка ядер и модулей ядра в 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%

Похожие статьи:

Оставьте комментарий: