Чтение онлайн

ЖАНРЫ

Linux: Полное руководство

Аллен Питер В.

Шрифт:

♦ debug: сообщения ядра (важные и не очень) передаются через функцию printk. Если сообщение очень важно, то его копия будет передана на консоль, а также функции klogd для его регистрации на жестком диске. Сообщения передаются на консоль, потому что иногда невозможно запротоколировать сообщение на жестком диске (например, отказ самого диска). Предел того, что будет отображаться на консоли, задается переменной console_loglevel. По умолчанию на консоли отображается все, что выше уровня DEBUG (7). Список уровней можно найти в файле kernel.h.

♦ init=/путь: по умолчанию ядро пытается запустить демон init, который продолжит

загрузку согласно стартовым сценариям. Если программа init повреждена, то для аварийно-восстановительных работ вы можете запустить вместо нее командный интерпретатор (init=/bin/sh), в котором и будете ремонтировать систему.

♦ no-hlt: процессоры 386 (и выше) имеют инструкцию hlt, которая переводит процессор в режим пониженного потребления энергии, где он ожидает прерывания от устройства. Параметр no-hlt отключает использование инструкции hlt. Существование этого параметра обусловлено тем, что некоторые чипы 486DX-100 имеют проблемы с этой инструкцией. Кроме того, параметр no-hlt позволяет использовать Linux на бракованных процессорах.

♦ no387: отключает использование математического сопроцессора.

♦ no-scroll: отключает функцию прокрутки экрана во время загрузки.

♦ reboot=<режим>: параметр, задающий режим перезагрузки. Возможные значения: cold и warm, то есть «холодная» или «горячая» перезагрузка. Поддерживается ядрами версии 2.0 и выше.

♦ single: загружает систему в однопользовательском режиме — например, для ремонта.

20.5. Компиляция ядра

20.5.1. Зачем обновлять ядро?

Linux развивается быстрее любой другой операционной системы. Регулярно появляются новые версии ядра, реализующие новые функции. Например, едва успел выйти дистрибутив Fedora Core 4 на ядре 2.6.11, а на

www.kernel.org
уже лежит стабильная версия 2.6.12.2. Еще чаще появляются драйверы к новым устройствам и заплатки с исправлением обнаруженных ошибок (например, прорех в системе защиты).

Допустим, новое ядро целиком еще можно установить из бинарного RPM-пакета (см. п.7.4.2). Но для подключения нового драйвера недостаточно просто скопировать его в каталог ядра: нужно интегрировать его код в структуры данных и таблицы ядра, для чего ядро придется строить заново из исходного кода. Исходные коды тем более необходимы для прикладывания заплатки (см. п. 7.4.3).

Пакет исходных текстов ядра может быть включен в ваш дистрибутив. Если это не так, скачайте архив с

ftp://ftp.kernel.org/pub/linux/kernel
(его размер 30-40 Мб в зависимости от версии) и распакуйте его в тот каталог, в котором будете производить сборку (обычно
/usr/src/linux-<версия>
).

20.5.2. Конфигурирование ядра

Когда вы строите из исходников прикладную программу, первым шагом сборки обычно бывает выполнение сценария configure. Ядро тоже нужно конфигурировать. Его настройки находятся в текстовом файле

.config
в каталоге исходных кодов. Этот файл можно редактировать вручную, но это крайне неудобно, поэтому предусмотрены диалоговые конфигураторы (п. 7.2.3, рис. 7.2).

Если вы работаете в среде GNOME, выполните команду

make gconfig
, и вы увидите диалоговое окно, в котором можно выбрать нужные функции и драйверы устройств (Y) и отключить ненужные (N), а также указать,
как следует включать в ядро выбранные устройства: статически или в виде модулей (M).

Осталось перечислить модули, доступные для конфигурирования, и дать рекомендации по их включению и отключению. Я расскажу об этом на примере современного ядра 2.6. О настройке ядра версии 2.4 рассказано в третьем издании моей книги «Самоучитель Linux», вышедшем в 2004 г. в издательстве «Наука и Техника», а если вы все еще используете ядро версии 2.2, то вам нужно первое издание этой книги.

20.5.2.1. Code maturity level options

Этот раздел позволяет включить в ядро экспериментальные модули, находящиеся еще в стадии разработки и предназначенные не для широкой публики, а для тестеров.

20.5.2.2. General setup

Support for paging of anonymous memory

Грозно звучит, не так ли? Я сначала даже не понял, что это. Оказывается, это просто поддержка свопа — своп-устройств и своп-файлов. Настоятельно рекомендуется не отключать эту опцию — сколько бы ни было оперативной памяти, а своп все равно пригодится.

System V IPC

Поддержка средств межпроцессного взаимодействия (Interprocess Communication) System V: очередей сообщений, семафоров, разделяемой памяти и т.д. Отключать не нужно, иначе процессы не смогут «общаться» друг с другом.

BSD Process Accounting

Учет процессов. С помощью специального системного вызова пользовательская программа может попросить ядро записать в специальный файл системную информацию: время создания процесса, идентификатор владельца, командную строку, использование ресурсов, например, памяти и терминалов и т.д. Чтобы все работало как нужно, не отключайте эту опцию.

Sysctl support

Включает поддержку программы Sysctl, позволяющей изменять параметры ядра без перекомпилирования во время загрузки. Поддержка Sysctl увеличивает размер ядра на 8 Кб. Если ядро, которое вы компилируете, не предназначено для дисков загрузки/восстановления, включите эту опцию.

Задает размер буфера протокола ядра в зависимости от значения, указанного в программе конфигурирования ядра:

♦ 17 — 128 Кб (по умолчанию)

♦ 16 — 64 Кб

♦ 15 — 32 Кб (рекомендуется для SMP)

♦ 14 — 16 Кб

♦ 13 — 8 Кб

♦ 12 — 4 Кб.

Kernel .config support

Поддержка файлов

.config
, содержащих конфигурацию ядра.

20.5.2.3. Loadable module support

Если вы планируете использовать загружаемые модули, включите все функции. Можно создать компактную версию ядра, которая вообще не использует модули, при этом поддержка всех необходимых устройств будет включена непосредственно в ядро. В этом случае можно отключить все функции в этом разделе.

Enable loadable module support

Включить поддержку загружаемых модулей. Рекомендуется не отключать эту опцию, если вы собираете обычное ядро для настольной системы или сервера. Если же вы собираете компактное ядро, можно эту опцию выключить, а все необходимые модули включить в состав ядра.

Поделиться с друзьями: