Шрифт:
Инсталляция исходного кода ядра
Архив исходного кода ядра в формате tar распространяется в сжатых форматах GNU zip (gzip) и bzip2. Формат bzip2 наиболее предпочтителен, так как обеспечивает больший коэффициент сжатия по сравнению с форматом gzip. Архив ядра в формате bzip2 имеет имя
Если сжатие выполнено с помощью bzip2, то команда должна иметь следующий вид.
Обе эти команды позволяют декомпрессировать и развернуть дерево исходных кодов ядра в каталог с именем
Исходный код ядра обычно инсталлируется в каталог
Использование заплат
В сообществе разработчиков ядра Linux заплаты (patch) — это основной язык общения. Вы будете распространять ваши изменения исходного кода ядра в виде заплат и получать изменения кода от других разработчиков тоже в виде заплат. При данном рассмотрении наиболее важными являются инкрементные заплаты (incremental patch), которые позволяют перейти от одной версии ядра к другой. Вместо того чтобы загружать большой архив ядра, можно просто применить инкрементную заплату и перейти от имеющейся версии к следующей. Это позволяет сэкономить время и пропускную способность каналов связи. Для того чтобы применить инкрементную заплату, находясь в каталоге дерева исходных кодов ядра, нужно просто выполнить следующую команду.
Обычно заплата для перехода на некоторую версию ядра должна применяться к предыдущей версии ядра.
В следующих главах использование заплат рассматривается более подробно.
Дерево исходных кодов ядра
Дерево исходных кодов ядра содержит ряд каталогов, большинство из которых также содержит подкаталоги. Каталоги, которые находятся в корне дерева исходных кодов, и их описание приведены в табл. 2.1.
Таблица 2.1. Каталоги в корне дерева исходных кодов ядра
Каталог | Описание |
---|---|
arch | Специфичный для аппаратной платформы исходный код |
crypto | Криптографический API |
Documentation | Документация исходного кода ядра |
drivers | Драйверы устройств |
fs | Подсистема VFS и отдельные файловые системы |
include | Заголовочные файлы ядра |
init | Загрузка и инициализация ядра |
ipc | Код межпроцессного взаимодействия |
kernel | Основные подсистемы, такие как планировщик |
lib | Вспомогательные подпрограммы |
mm | Подсистема управления памятью и поддержка виртуальной памяти |
net | Сетевая подсистема |
scripts | Сценарии компиляции ядра |
security | Модуль безопасности Linux |
sound | Звуковая подсистема |
usr | Начальный код пространства пользователя (initramfs) |
Некоторые файлы, которые находятся в корне дерева исходных кодов, также заслуживают внимания. Файл
Сборка ядра
Сборка ядра достаточно проста. Это может показаться удивительным, но она даже более проста, чем компиляция и инсталляция других системных компонентов, как, например библиотеки
Так как доступен исходный код ядра Linux, то, это означает, что есть возможность сконфигурировать ядро перед компиляцией. Есть возможность скомпилировать поддержку только необходимых драйверов и функций. Конфигурация ядра— необходимый этап перед тем, как его компилировать. Поскольку в ядре бесчисленное количество функций и вариантов поддерживаемого аппаратного обеспечения, возможностей по конфигурации, мягко говоря, много. Конфигурация управляется с помощью опций конфигурации в виде
Конфигурационные переменные бывают двух видов: логические (boolean) и переменные с тремя состояниями (tristate). Логические переменные могут принимать значения