Конфигурирование ядра Linux
Категория: Драйверы и ядро | Автор: admin | 10-01-2010, 23:21 | Просмотров: 5072

Процедура конфигурирования ядра Linux совершенствуется уже довольно долгое время, однако она все еще достаточно примитивна в сравнении с другими операционными системами. Весь процесс сосредоточен вокруг файла /usr/src/linux/.config. В этом файле приведена вся информация, касающаяся конфигурирования ядра, но его формат очень труден для понимания. Для упрощения работы в Linux предусмотрено несколько make-сценариев, реализующих различные интерфейсы конфигурирования ядра.

Если в системе установлена оболочка X Windows, то удобнее всего воспользоваться командой make xconfig. Она отображает окно конфигурации, в котором можно выбрать драйверы устройств, добавляемые к ядру (или компилируемые в качестве загружаемых модулей).

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

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

В любом случае генерируется файл .config, имеющий примерно такой вид:

#Automatically generated make config: don't edit

#

#Code maturity level options

#

CONFIG_EXPERIMENTAL=y

#

#Processor type and features

#

#CONFIG_M386 is not set

#CONFIG_M486 is not set

#CONFIG_M586 is not set

#CONFIG_M58 6TSC is not set

CONFIG_M686=y

CONFIG_X86_WP_WORKS_OK=y

CONFIG_X86_INVLPG=y

CONFIG_X86_BSWAP=y

CONFIG_X86_POPAD_OK=y

CONFIG_X86_TSC=y

CONFIG_X86_GOOD_APIC=y

...

 

Как видите, содержимое файла не слишком понятно; не дается никаких пояснений относительно того, что означают теги CONFIG. По сути, каждая строка CONFIG указывает на активизацию того или иного параметра ядра. Значение у говорит о том, что соответствующий компонент компилируется вместе с ядром; значение m означает, что компонент будет загружаемым модулем.

Не все компоненты можно сконфигурировать как модули. В файле .config сведений об этом нет, поэтому нужно самостоятельно "покопаться" в документации. Не так-то легко узнать и назначение тегов CONFIG. Обычно данную информацию можно извлечь из файла Config.in, имеющегося в каталоге каждого драйвера. Но собирать все эти файлы нелегко, так что лучше просто воспользоваться командой make xconfig или make menuconfis.

После того как создано рабочее ядро, ему нужно на этапе начальной загрузки передать специальные конфигурационные параметры, например имя, корневого устройства или инструкцию, указывающую на необходимость проверки нескольких Ethernet-плат. За передачу этих параметров отвечает LILO — загрузчик Linux. Статические параметры конфигурации можно задать в файле /etc/lilo.conf, указав ключевое слово append; дополнительная информация была приведена в параграфе 2.2.

Если отредактировать файл lilo.conf не представляется возможным (что-то было сделано не так и машина не загружается), требуемые параметры можно задать при запуске LILO. Например, в строке приглашения LILO введите следующее:

LILO:  linux root=/dev/hdal ether=0,0,eth0 ether=0,0,ethl

 

Эта строка заставляет LILO загрузить ядро, обозначаемое меткой "linux" использовать в качестве корневого устройство /dev/hdal и проверить наличие двух Ethernet-плат.

 

Построение двоичного ядра Linux

Модификация файла .config — это самый важный этап в процессе конфигурирования ядра Linux, но нужно выполнить еще целый ряд действий, прежде чем получить готовое ядро. Схема всего процесса такова:

  • перейти с помощью команды cd в каталог /usr/src/linux;
  • выполнить команду make xconfig или make menuconfig;
  • выполнить команду make dep;
  • выполнить команду make clean;
  • выполнить команду make bzImage;
  • выполнить команду make modules;
  • выполнить команду make modules_install;
  • скопировать   файл /usr/src/linux/arch/ 386/boot/bzImage   под   именем /boot/vmlinuz;
  • отредактировать файл /etc/lilo.conf и добавить в него конфигурационные параметры для нового ядра;
  • запустить программу /sbin/lilo, чтобы инсталлировать переконфигуриро­ванный начальный загрузчик.

Выполнять команду make clean не всегда нужно, но, как правило, лучше очищать переменные среды, чтобы избежать многих труднообнаруживаемых проблем.

 

Настройка конфигурации

 

К сожалению, посредством файла .config невозможно осуществлять настройку параметров ядра. Но это можно делать с помощью файлов в каталоге /proc, являющемся отдельной файловой системой. Они напоминают стандартные файлы UNIX, но на самом деле являются "шлюзами" к ядру, позволяющими просматривать и менять его параметры прямо в процессе работы. Если в одном из этих файлов есть значение, которое требуется изменить, можно попытаться осуществить запись в этот файл. Правда, не все файлы доступны для записи (отображаемые права доступа не дают полной картины), и нигде в документации не говорится о том, в какие файлы можно осуществлять запись, а в какие — нет.

Например, чтобы изменить максимальное число файлов, которые можно открыть в одном процессе, введите такую команду:

# echo 32768 » /proc/sys/fs/file-max

 

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

 

Таблица 12.5. Файлы в каталоге /proc, содержащие часто настраиваемые параметры ядра

Каталог1

Файл

По

умолчанию

Назначение

F

ffle-max

4096

Задает максимальное число открытых файлов в одном процессе

F

inode-max

16384

Задает максимальное число открытых индексных дескрипторов в одном процессе

N

ip_forward

0

Разрешает прохождение IP-пакетов, если значение равно 1

N

icmp_echo_ignore_all

0

Задает игнорирование ICMP-запросов команды ping, если значение равно 1

N

icmp_echo_ignore_broadcasts

0

Задает игнорирование широковещательных запросов команды ping, если значение равно 1

1 F - /proc/sys/fs   N - /proc/sys/net/ipv4



 (голосов: 0)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page