Глава 10 Заплатки, настройка и обновление ядра 10.1. Введение

Установка заплаток, настройка и обновления ядра Linux — весьма полезные опе рации, и ничего страшного в них нет. Они принадлежат к числу немногочисленных
операций администрирования, требующих перезагрузки, и это обстоятельство
может огорчить администраторов, гордящихся длительным временем непрерыв ной работы. В остальном эта процедура ничем не хуже, чем установка заплаток
или обновление любых других программ.
Вам потребуются исходные тексты ядра и дсс, компилятор GNU С. Исходные
тексты ядра можно получить из двух источников: на сайте вашего дистрибутива
Linux или по адресу http://kernel.org. Разные дистрибутивы Linux в разной степе ни модифицируют ядро. Red Hat, SuSE и Mandrake вносят значительные измене ния, Debian и Slackware ограничиваются минимальными модификациями. Уста новка «эталонного» ядра с сайта http://kernel.org может привести к нарушению
работы дистрибутивов, использующих модифицированное ядро, поэтому лучше
использовать исходные тексты ядра для вашего дистрибутива (в главах 2 и 3 рас сказано, где достать и как установить программное обеспечение Linux, а в разде ле 4.2 описан процесс сборки).
Как и в большинстве программ Linux, при установке заплатки вы не модифи цируете существующее ядро. Заплатка применяется к исходным текстам, по ко торым затем строится новый двоичный файл, поэтому в итоге вы получаете два
ядра. Это хорошо, потому что у вас остается исходное ядро на тот случай, если
новое ядро не загрузится. Вы можете установить несколько различных ядер и про тестировать последние версии в разных конфигурациях.
Основные причины для модификации ядра:
О оптимизация ядра для конкретного оборудования;
о использование новых возможностей;
О исключение ненужных функций;
О тестирование новых функций;
О обновление системы.


Настройка нового ядра

Настройка конфигурации является не только самым длительным, но и самым важ ным этапом сборки нового ядра. На этом этапе вы решаете, какое оборудование,
файловые системы, функции энергосбережения и т. д. будут поддерживаться яд ром. В вашем распоряжении более сотни разных параметров и для каждого нуж но принять три потенциальных решения: нужно ли включать данную возможность,
и если нужно — оформить ли ее в виде загружаемого модуля или статически от компилировать в ядро? Как правило, если возможно построить модуль, следует
выбрать именно этот вариант. Модули экономят память, поскольку память для
них выделяется лишь в случае их фактического использования. Кроме того, об новить или установить отдельный модуль проще, чем перестраивать все ядро.
Программа конфигурации ядра содержит справку почти но каждому параметру.
В справке говорится, можно ли оформить некоторую функцию в виде модуля или
ее необходимо встроить в базовое ядро. Здесь вы найдете информацию о том, для
чего нужна каждая функция, и рекомендации на случай, если вы не уверены, сле дует ли включать соответствующий режим. Если справки нет и вы не знаете, что
делать — включайте. В худшем случае вы получите более громоздкое ядро с неис пользуемыми возможностями.
Программа конфигурации ядра не позволит реализовать в виде модуля те функ ции, которые должны быть частью базового ядра. У этого правила есть лишь одно
важное исключение: драйвер дискового устройства, содержащего корневую фай ловую систему. Вообще говоря, этот драйвер должен быть встроен в базовое ядро,
чтобы система могла загрузиться, иначе возникает «порочный круг»: драйверы
необходимы для загрузки корневой файловой системы, но файловая система не
может загрузиться, потому что драйверы находятся в ней. Если драйверы не
встраиваются в ядро, вам придется создать образ initrd. Im'trd создает исходный
виртуальный диск, который загружает драйверы дисковых устройств, что позво ляет загрузить систему.
Бытует распространенное заблуждение, будто система с загружаемыми моду лями работает медленнее, чем монолитное ядро. На самом деле обращение к функ циям сводится к простой передаче управления по адресу памяти, так что никаких
различий в скорости не существует.
Для настройки ядра 2.4 используется программа menuconfig, а для настройки
ядра 2.6 — либо menuconfig, либо xconfig. Программа menuconfig создана на базе
ncurses, так что вам не понадобится X. Если поддержка ncurses не установлена,
либо установите ее, либо используйте исходную программу настройки ядра config,
но это просто ужасно. Процесс затягивается на целую вечность, и если вы допус тите хотя бы одну ошибку, все придется начинать заново.
Программа xconfig была полностью переработана для ядра 2.6. Она чрезвычай но эффективна и удобна, а по каждому параметру пользователь может получить
содержательную справку. Для ее запуска вам понадобится Qt, qt-devel, gtt и X. На
рис. 10.1 показан пользовательский интерфейс xconfig во всей красе.
Дерево сборки ядра содержит объемистую документацию; загляните в каталог
linux-$VERSIOn/Documentation. В каталоге Linux-$VERSION/README содержатся важ ные указания по поводу установки, а в каталоге linux-$VERSION/Documentation/
Changes — важная информация о версиях дсс и других используемых программах.