Исходный текст ядра Linux обычно поставляется в составе дистрибутива системы. Если в системе отсутствует исходный текст либо вы желаете воспользоваться более поздней версией ядра Linux, его можно загрузить с сайта http://www.kernel.org в виде сжатого tar-файла. Если каталог /usr/src/linux уже существует, переименуйте его, прежде чем распаковывать архив:

  • cd /usr/src
  • tar -zxvf linux-2.1.14.tar.gz

Ядро Linux - это программа на языке С, которая компилируется и устанавливается при помощи инструмента make. Команда make позволяет изменять настройки ядра, а также генерирует файлы (включая файл сборки, Makefile), необходимые для компиляции и связывания кода ядра. Существует три варианта команды:

  • make config - Данный вариант команды - полностью текстовый. Он связан с прохождением через невероятно долгую серию вопросов по каждому из аспектов настройки ядра. Поскольку вопросы задаются строго последовательно, данный способ - самый неудобный для перенастройки ядра, особенно если требуется изменить лишь несколько значений.
  • make menuconfig - Данный вариант использует библиотеку с и rses и предоставляет иерархию меню, посредством которой осуществляется настройка. Здесь присутствуют все возможности команды make config, и гораздо более удобный пользовательский интерфейс, позволяющий переходить прямо к интересующим аспектам настройки. Команда make menuconfig работает на любом терминале и в любой системе, даже в отсутствие поддержки X Windows.
  • make xconfig - Данный вариант основан на X Windows и предоставляет графический интерфейс для настройки ядра. Функциональность та же, что и у предыдущих вариантов, а использовать make xconfig очень легко. Выбирайте вариант, пришедшийся вам по душе. Для нашего примера мы воспользуемся командой make xconfig. В системе Linux исходный текст ядра хранится в иерархии /usr/src/linux. Чтобы начать процесс настройки, следует перейти в каталог с исходным текстом и выполнить команду make xconfig:
  • cd /usr/src/linux
  • make xconfig

По команде make xconfig отображается приложение, показанное на рисунке.

111

Рис. 5.1. Главное меню xconfig в Linux


Меню содержит более 30 кнопок, представляющих различные категории настройки. Нажмите на кнопку, чтобы просмотреть или изменить параметры настройки в определенной категории. Для нас интерес представляют те параметры настройки ядра, которые влияют на работу TCP/IP, то есть категории Networking options и Network device support. На рисунке показано окно, отображаемое по нажатию на кнопк у Network device support.

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

  • y - Выбор значения у приводит к встраиванию драйвера в ядро.
  • m - Выбор значения т приводит к компиляции драйвера в модуль, динамически загружаемый ядром. Не всегда драйвер доступен в виде загружаемого модуля. Если параметр настройки требует ответа «да» или «нет», вариант с модулем недоступен. Обратите внимание на параметр FDDI driver support. Выбор значения у для этого параметра включает поддержку драйвера FDDI и делает доступным список интерфейсных карт FDDI, которые на рисунке отображены серым цветом. Часто, чтобы выбрать поддержку определенного адаптера, следует прежде включить поддержку интерфейса в целом.
  • n - Выбор значения п предписывает ядру не использовать параметр настройки.

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

Два пункт а на рисунке, Ethernet (10 or 100 Mbit) и Ethernet (1000 Mbit), приводят к открытию самостоятельных окон с объемными меню - Linux поддерживает очень широкий спектр устройств Ethernet . Для карт Ethernet , доступных в дополнительных окнах, действуют уже описанные значения па- раметров y,mvin.


Окно Network device support и окна для карт Ethernet показывают, что поддержка конкретных адаптеров может встраиваться в ядро, но это не обязательный вариант. Как мы видели в предшествующем разделе, посвященном динамически загружаемым модулям, сетевые интерфейсы обычно управляются загружаемыми модулями. Всем системам Linux нужны сетевые интерфейсы для работы с TCP/IP, но поддержку интерфейсов не обязательно встраивать в ядро.

Выбор пункта Networking options из главного меню (см. рис. 5.1) приводит к открытию окна Network options, которое содержит более 60 пунктов меню - Linux поддерживает широкий спектр сетевых служб. Некоторые из служб являются экспериментальными, а некоторые относятся к протоколам, отличным от IPv4. Здесь мы ограничимся рассмотрением параметров, которые непосредственно относятся к IPv4. Тем не менее параметров все равно довольно много. Вот они:

Packet socket - Данная служба позволяет приложениям общаться с сетевыми устройствами напрямую. Это необходимо таким приложениям, как tcpdump, выполняющим перехват и фильтрацию пакетов. При включенном параметре Packet socket можн о дополнительн о выбрат ь Packet socket: mmapped Ю, что позволит использовать ввод-вывод, отображаемый в память, для службы пакетных сокетов. Служба пакетных сокетов, как правило, включается, а поддержка отображаемого в память ввода-вывода остается отключенной.

Kernel/User netlink socket - Данная служба обеспечивает взаимодействие ядра и пользовательских приложений. Выбор данного параметра позволяет включить также параметры Routing messages и Netlink device emulation. Сокеты Netlink позволяют пользовательским приложениям взаимодействовать с маршрутизацией IPv4, таблицами ARP и кодом брандмауэра ядра.

Network packet filtering - Данная служба реализует фильтрацию IP-пакетов, необходимую для построения брандмауэра или сервера преобразования адресов. Включение параметра Network packet filtering позволяет включить также параметр Network packet filtering debugging. Фильтрация сетевых пакетов обычно включается для маршрутизаторов и отключается для обычных узлов, хотя она может использоваться для повышения защищенности сервера, как описано в главе 12 (iptables).


TCP/IP networking - Выбор данного параметра приводит к встраиванию в ядро поддержки для TCP/IP, то есть всех базовых транспортных протоколов TCP/IP и функциональности для работы с дейтаграммами. Включение параметра TCP/IP networking открывает доступ ко многим дополнительным службам TCP/IP:

IP: multicasting - Поддержка многоадресной передачи. Многоадресная передача описана в главе 2.

IP: advanced router - Выбор этого пункта меню открывает доступ к ряду параметров, позволяющих настроить ядро на работу со сложными протоколами маршрутизации. Поддержка сложной маршрутизации не требуется для маршрутизации в простейших случаях, в особенности для узлов и внутренних маршрутизаторов небольших сетей. Сложная маршрутизация применяется только в случаях, когда система Linux используется в качестве основного маршрутизатора либо внешнего маршрутизатора, связующего автономные системы. В главе 7 описано применение gated для работы со сложными протоколами маршрутизации в системах Unix. Дополнительные параметры, доступные в этом разделе:

  • IP: policy routing включает поддержку правил маршрутизации на уровне ядра, механизм, упоминаемый в главе 7 в связи с протоколом маршрутизации BGP, а также в главе 2 в связи с базой данных правил маршрутизации PRDB (Policy Routing Database). Присутствие этого параметра не требуется для работы gated, поскольку gated реализует поддержку правил маршрутизации на пользовательском уровне.
  • IP: equal cost multipath включает поддержку использования нескольких маршрутов к одному пункту назначения. Многолучевая маршрутизация упоминается в главе 7 в связи с протоколом маршрутизации OSPF.
  • IP use TOS value as routing key включает переключение тегов с применением поля IP-заголовка Type of Service (TOS) для хранения тега. Поле тега может использоваться как в OSPF, так и в RIP версии 2. В приложении В затронут синтаксис gated, используемый для полей тегов.
  • IP: verbose route monitoring увеличивает число и длину сообщений, сопровождающих обновления таблицы маршрутизации.
  • IP: large routing tables увеличивает объем памяти, отводимой под хранение таблицы маршрутизации.

IP: kernel level autoconfiguration - Эта служба используется бездисковыми клиентами. Выбор этого параметра открывает доступ к опциям IP: ВООТР support и IP: RAMP support, которые определяют источник информации настройки - ВООТР или RARP. Описание протоколов ВООТР и RARP приводится в главе 3.

IP: tunneling - Данная служба инкапсулирует дейтаграммы IPv4 в туннели IP, что позволяет узлу создавать видимость принадлежности к сети, в которую он на самом деле физически не входит. Эта служба иногда используется на портативных компьютерах в целях обеспечения мобильности.


IP: GRE tunnels over IP - Включает поддержку протокола GRE (Generic Routing Encapsulation), позволяющего передавать дейтаграммы IPv4 и IPv6 по туннелям IPv4. Выбор этого параметра открывает доступ к параметру IP: broadcast GRE over IP, обеспечивающему многоадресную передачу по туннелям. GRE является предпочтительным протоколом инкапсуляции при ра- боте с маршрутизаторами Cisco.

IP: multicast routing - Включает поддержку многоадресной маршрутизации. Параметр необ- ходим только в случае, когда система выступает в роли многоадресно- го маршрутизатора, то есть использует в работе mrouted. Выбор пара- метра открывает доступ к параметрам IP: PIM-SM version 1 support и IP: PIM-SM version 2 support, определяющим уровень применяемого в системе протокола PIM-SM.

IP: TCP Explicit Congestion Notification support - Включает поддержку явных уведомлений о перегрузке (Explicit Con- gestion Notification, ECN). Сообщения ECN передаются маршрутизатором клиенту, чтобы уведомить о перегруженности. Параметр включается только для Linux-систем, выступающих в качестве маршрутизаторов. Поскольку многие брандмауэры несовместимы с ECN, не рекомендуется включать этот параметр в настройку.

IP: TCP syncookie support - Включает поддержку SYN-квитанций (cookies), которые применяются для противодействия атаке SYN flooding (ее еще называют синхронизирующей «Denial-Of-Service»-атакой или «лавинной» SYN-атакой).

IP: Net filter Configuration - Выбор этого пункта меню приводит к открытию окна, позволяющего выбрать ряд служб для брандмауэра ядра Netfilter. В главе 12 описано применение службы Netfilter посредством iptables.

QoS and I or fair queueing - Здесь представлены параметры, изменяющие способ обработки сетевых пакетов сервером. Механизм является экспериментальным, так что для рабочего сервера параметр должен иметь значение п. Администрирова- ние дополнительных обработчиков пакетов требует присутствия специального программного обеспечения.

Завершив настройку сетевых параметров, наберите make dep; make clean, чтобы создать зависимости и подготовить код к компиляции. Когда выполне- ние команд завершится, скомпилируйте ядро. Команда make bzlmage создает сжатое ядро и сохраняет его в каталоге /usr/src/linux/i386/boot. Убедившись, что новое ядро готово к работе, просто скопируйте файл ядра, bzlmage, в файл vmlinuz, с которого начинается загрузка системы.

Перечень сетевых настроек Linux весьма объемен. Linux - это инь для ян Solaris: Linux позволяет системному администратору настраивать все, тогда как Solaris настраивает все за администратора. Настройка ядра BSD находится где-то между этими двумя крайностями.