Материал просмотрен 1,152 раз(а)

Для чего нужно конфигурировать свое ядро?

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

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

Опрашивание различных устройств во время загрузки.

Во время загрузки компьютера ядро опрашивает каждый известный ему тип устройства. Именно на этом этапе мы можем видеть огромное количество различной служебной информации на экране монитора. Даже если у нас нет Wi-Fi карточки или USB-тюнера, потребуется время, чтобы ядро в этом убедилось. Поэтому, для ускорения загрузки системы следует удалить ненужные устройства из ядра. Попутно сократится размер ядра.

В современных серверах с гигабайтами памяти на борту такое “урезание” не сыграет значимой роли, а вот если вы делаете шлюз из какой-нибудь старенькой машинки, аппаратные характеристики которой едва ли удовлетворяют системным требованиям FreeBSD такое решение может спасти ситуацию.

Так же и наоборот, по мере “обрастания” сервера новым железом мы не сможем им воспользоваться без включения в ядро новых функций. Например, в случае установки NAT-сервиса нам потребуется включать в ядро новые опции, о чём будет рассказано в соответствующей статье.

Получение информации о запуске ядра.

Если мы уж взяли в руки скальпель и решили оттяпать от нашего ядра ненужные функции, то как же определить, какие устройства считать нужными, а какие – балластом? Как уже упоминалось раньше, во время загрузки системы ядро зондирует все известные ему устройства и выводит информацию о состоянии каждого зондирования, сообщая, какие опции мы мы должны оставить в новом ядре. Эта информация выводится во внутренний буфер сообщений, и получить её можно с помощью утилиты dmesg. Вывод утилиты может оказаться очень большим, поэтому воспользуемся опцией less.

Сообщения последней загрузки можно посмотреть в файле /var/run/dmesg.boot

# cat /var/run/dmesg.boot | less

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

Конфигурационные файлы ядра

Если предположить, что в нашей системе установлены исходные коды FreeBSD, то конфигурационные файлы ядра будут распологаться в каталоге /usr/src/sys/i386/conf. Мы можем увидеть там файл GENERIC.

Сделаем копию под эксперименты.

# cd /usr/src/sys/i386/conf

# cp GENERIC GATEWAY

# ee GATEWAY

найдём там фрагмент


machine i386
cpu I486_CPU
cpu I586_CPU
cpu I686_CPU
ident GENERIC

Для того, чтобы ядро могло работать, в файле обязательно должны присутствовать строка machine, строка ident и одна из строк cpu. В общем-то можем удалить морально устаревшие I586 и I486, оставив только I686.

Вслед за этим блоком находятся строки options – необязательные возможности, встраиваемые в ядро GENERIC по умолчанию. Ну и наконец блок device. Эти строки определяют все драйверы устройств, встроенные в ядро GENERIC. Именно эти строки можно удалять для оптимизации ядра. Например, если вы найдёте, что ваша Ethernet-карта изготовлена в серии Intel EtherExpress (под управлением драйвера fxp), то можно смело удалять любой другой драйвер PCI Express в этом блоке. Но опять же, тут можно очень легко навредить, если невнимательно прочитать и удалить не тот драйвер.

Ну, довольно введения, пора конфигурить ядро!