Выбрать главу
На заметку

Номер версии ядра системы состоит из трех чисел, разделенных точками. Если второе число четное (например, 2.4.17), то ядро называется стабильным, или рабочим. Нечетное второе число в номере версии (например, 2.5.2) указывает на то, что ядро находится в процессе разработки. Стабильное ядро обеспечивает более высокую надежность. Используя ядро, находящееся в процессе разработки, вы получаете возможность ознакомиться с новыми техническими решениями. Чаще всего в ядре с нечетным вторым числом номера версии используются новые драйверы, реализованы новые варианты интерфейса или применяются другие подобные новшества. Устанавливая систему для практического использования, желательно использовать ядро с четным вторым числом номера версии. Исключением является ситуация, когда необходимый вам драйвер присутствует только в версии с нечетным вторым числом. В этом случае можно также использовать обратный перенос (back-port) драйвера в одну из предыдущих стабильных версий.

Обычно исходный код ядра содержится в каталоге /usr/src/linux либо в одном из подкаталогов /usr/src (при этом в имени каталога присутствует номер версии ядра, например /usr/src/linux-2.4.17). В последнем случае желательно создать ссылку /usr/src/linux, указывающую на каталог с исходным кодом ядра. Если вы поступите так, то обеспечите нормальную работу программ, которые предполагают, что исходный код ядра содержится в каталоге /usr/src/linux. Таким образом, удобно работать с несколькими версиями исходного кода ядра, а если надо перейти от одной версии к другой, достаточно лишь изменить символьную ссылку.

Разархивировав исходный код ядра в каталог /usr/src/linux, надо сделать это каталог рабочим в используемой вами оболочке. После этого можно задать одну из описанных ниже команд конфигурирования ядра.

• make config. Данное средство конфигурирования является базовым. При этом у вас поочередно будут запрашиваться значения опций ядра. Отвечать на вопросы утомительно и при этом легко допустить ошибку. В случае ошибки придется начать всю процедуру сначала. Данная команда в настоящее время используется крайне редко.

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

• make xconfig. Данный способ установки конфигурации аналогичен make menuconfig, за исключением того, что меню отображается средствами графического интерфейса. В этом случае выбор опций и установку их значений можно выполнять с помощью мыши. Это средство установки конфигурации применяется при работе в среде X Window (X Window иногда называют X).

Все три способа позволяют работать с одними и теми же опциями. Опции объединены в несколько категорий; некоторые из категорий содержат подкатегории. Если вы используете make menuconfig или make xconfig, то для каждой категории отображается отдельное меню (пример работы с окном, отображаемым по команде make xconfig, показан на рис. При настройке сетевых средств в основном используются категории Networking Options и Network Device Support, которые подробно рассматриваются в двух последующих разделах.

Рис. 1.1. Опции ядра Linux объединяются в категории и подкатегории, для каждой из которых предусмотрено отдельное меню

Для большинства опций предусмотрены переключатели. Примерами таких переключателей могут служить Y, M и N, показанные на рис. 1.1. Y и N указывают на присутствие или отсутствие опции в составе ядра, а M (сокращение от modular compilation — модульная компиляция) указывает на то, что соответствующие средства должны быть скомпилированы отдельный модуль, которые можно загружать и выгружать независимо от других компонентов ядра. Более подробно о настройке опций рассказывается ниже.

На заметку

Данная глава посвящена опциям версии 2.4.x ядра Linux, в частности, материал главы ориентирован на ядро 2.4.17. Опции, относящиеся к сетевым средствам, модифицировались раньше и, по-видимому, будут изменяться и в будущем. В версиях 2.2.x ядра опции в основном совпадают; различаются они лишь в деталях. В состав разрабатываемого ядра 2.5.x включено инструментальное средство CML2, предназначенное для настройки. Дополнительную информацию об этом инструменте можно получить по адресу http://tuxedo.org/~esr/cml2/.

Поддержка сетевых протоколов

Меню Networking Options содержит опции, влияющие на работу сетевых протоколов. Вы можете включить или исключить средства поддержки стека протоколов либо отдельных протоколов (в основном данные опции касаются семейства протоколов TCP/IP). Опции из этого меню позволяют также оптимизировать ядро для выполнения конкретных функций, например маршрутизации или фильтрации пакетов.

Опции для работы с пакетами и гнездами

Низкоуровневые сетевые средства Linux позволяют программам передавать и принимать фрагменты данных, называемые пакетами, посредством специальных структур, которые называются гнездами (socket). В большинстве случаев обмен данными через гнездо осуществляется по тому же принципу, что и обмен данными с файлом. Стек сетевых протоколов обеспечивает передачу информации по адресу назначения, где происходит ее интерпретация.

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

• Packet Socket. Эта опция позволяет приложениям непосредственно обращаться к требуемому протоколу, минуя некоторые уровни стека протоколов. Для большинства программ такая возможность не нужна; ее используют лишь инструментальные средства сетевой диагностики и специальные утилиты, действующие на нижнем уровне. В качестве примера подобных программ можно привести утилиту tcpdump, которая выводит информацию о пакетах TCP и IP. Данная опция не обязательна. Она несколько увеличивает размер ядра и дает возможность злоумышленникам воспользоваться утилитами сетевой диагностики. С другой стороны, отключив данную опцию, вы не сможете воспользоваться целым рядом утилит.

• Packet Socket: Mapped IO. Если данная подопция Packet Socket включена, производительность инструментальных средств, использующих низкоуровневые соединения, повышается.

• Unix Domain Sockets. Некоторые важные программы Linux используют сетевые протоколы для обмена данными даже в том случае, если они выполняются на одном и том же компьютере. В качестве примеров можно привести средство протоколирования syslogd и программы, выполняющиеся в среде X-Window (X-программы используют сетевой протокол для взаимодействия с X-сервером, выполняющим отображение данных). Опция Unix Domain Sockets допускает взаимодействие в пределах одной системы даже в тех случаях, когда на компьютере не установлено сетевое оборудование. Даже если средства поддержки сетевого обмена присутствуют, опция Unix Domain Sockets обеспечивает более высокую скорость обмена по сравнению с обычными TCP-гнездами. Обычно данная опция устанавливается; без нее обходятся лишь системы, предназначенные для выполнения на специализированных устройствах.