Если нет необходимости по той или другой причине работать со старыми версиями ядра, то всегда нужно использовать самую последнюю версию. Архив kernel.org
— это то место, где можно найти как само ядро, так и заплаты к нему от ведущих разработчиков.
Инсталляция исходного кода ядра
Архив исходного кода ядра в формате tar распространяется в сжатых форматах GNU zip (gzip) и bzip2. Формат bzip2 наиболее предпочтителен, так как обеспечивает больший коэффициент сжатия по сравнению с форматом gzip. Архив ядра в формате bzip2 имеет имя linux-x.y.z.tar.bz2
, где x
, y
, z
— это номер соответствующей версии исходного кода ядра. После загрузки исходного кода его можно декомпрессировать очень просто. Если tar-архив сжат с помощью GNU zip, то необходимо выполнить следующую команду.
$ tar xvzf linux-x.y.z.tar.gz
Если сжатие выполнено с помощью bzip2, то команда должна иметь следующий вид.
$ tar xvjf linux-x.y.z.tar.bz2
Обе эти команды позволяют декомпрессировать и развернуть дерево исходных кодов ядра в каталог с именем linux-x.y.z
.
Исходный код ядра обычно инсталлируется в каталог /usr/src/linux
. Заметим, что это дерево исходного кода нельзя использовать для разработок. Версия ядра, с которой была скомпилирована ваша /usr/src/linux
лучше оставлять без изменений.
Использование заплат
В сообществе разработчиков ядра Linux заплаты (patch) — это основной
$ patch -p1 < ../patch-x.y.z
Обычно заплата для перехода на некоторую версию ядра должна применяться к предыдущей версии ядра.
В следующих главах использование заплат рассматривается более подробно.
Дерево исходных кодов ядра
Дерево исходных кодов ядра содержит ряд каталогов, большинство из которых также содержит подкаталоги. Каталоги, которые находятся в корне дерева исходных кодов, и их описание приведены в табл. 2.1.
Таблица 2.1. Каталоги в корне дерева исходных кодов ядра
Каталог | Описание |
---|---|
arch | Специфичный для аппаратной платформы исходный код |
crypto | Криптографический API |
Documentation | Документация исходного кода ядра |
drivers | Драйверы устройств |
fs | Подсистема VFS и отдельные файловые системы |
include | Заголовочные файлы ядра |
init | Загрузка и инициализация ядра |
ipc | Код межпроцессного взаимодействия |
kernel | Основные подсистемы, такие как планировщик |
lib | Вспомогательные подпрограммы |
mm | Подсистема управления памятью и поддержка виртуальной памяти |
net | Сетевая подсистема |
scripts | Сценарии компиляции ядра |
security | Модуль безопасности Linux |
sound | Звуковая подсистема |
usr | Начальный код пространства пользователя (initramfs) |