Переход к предыдущей публикации Обновление системы FreeBSD 6.2 до версии 6.3 MySQL backup с доставкой по e-mail Переход к следущей публикации
 
Я хочу добавить Daemony`s Live RSS ленту в Google Reader Я хочу добавить Daemony`s Live RSS ленту в Яндекс.Лента Я хочу получать RSS ленту Daemony`s Live Blog по электронной почте Я хочу добавить Daemony`s Live RSS ленту в My Yahoo Я хочу добавить Daemony`s Live RSS ленту в My MSN

 

Добавить комментарий

Пересборка ядра FreeBSD

Обсудить тему на форуме

UNIX Kernel Пересборка ядра FreeBSD - на мой взгляд, обязательная процедура для каждой *nix машины. Дело в том, что по-умолчанию ядро GENERIC (основное) поддерживает массу различных устройств, для того, чтобы система могла загрузиться на практически любой конфигурации “железа”. Такое ядро занимает в памяти нерациональный объем оперативной памяти, потому при “заточке” системы под конкретно Вашу машину из ядра рекомендуется выбросить поддержку тех устройств, которых у Вас нет (и возможно не будет), для того чтобы элементарно сэкономить системные ресурсы. Зачем мне поддержка, например, SCSI или RAID’ов, если их нет на материнской плате?

После облегчения ядра существенно увеличивается быстродействие системы. Особенно, это хорошо заметно при загрузке. Ядро в процессе работы занимает меньше ресурсов, что отображается на всех процессах. Пересборка ядра (на Athlon 1900+) занимает максимум 10 минут. Потратив эти десять минут, а также несколько минут на чтение документации (например, этой статьи :) ), впоследствии в процессе работы с системой Вы поймете, что потратили время незря. Ядро пересобирать нужно. И сейчас мы этим займемся.

Для начала следует убедиться, что у Вас в системе присутствуют исходные коды, из которых мы сможем собрать наше ядро. Посмотрите в папку /usr/src

# ls -la /usr/src
total 4
  drwxr-x–x 2 root wheel 512 1 фев 08:50 .
  drwxr-x–x 22 root wheel 512 28 янв 19:52 ..

Хм… Пусто. ;) Значит исходные коды нужно получить. Для этого можно воспользоваться либо установочным компакт-диском и из меню sysinstall установить исходные коды системы. А можно воспользоваться CVSup и получить исходники с ближайшего cvsup-сервера. Второй способ больше по душе, тем более на тестовой машине нет CD привода. :)

Итак, создаем sup-file для получения исходных кодов. Поскольку мы будем всего лишь пересобирать ядро, то весь код FreeBSD нам не нужен. Нужна только та часть, из которой будет собрано ядро. Sup-file у меня получился такой:

testserver# cat /root/cvsup/src-sys
#
# Kernel source supfile
#
  *default host=cvsup7.ua.FreeBSD.org
  *default base=/var/db
  *default prefix=/usr
  *default release=cvs tag=RELENG_6_3_0_RELEASE
  *default delete use-rel-suffix
  *default compress
  src-sys

В итоге, по завершению работы данной команды в каталоге /usr/src появится каталог sys. Он то нам нужен. Перейдем в каталог /usr/src/sys/i386/conf. Именно в этот каталог, если у Вас как и у меня архитектура компьютера i386. Если нет, то Ваши действия могут несколько отличаться от приведенных ниже. В каталоге /usr/src/sys/i386/conf нам нужно отредактировать файл GENERIC. Это файл конфигурации дефолтного ядра. Копируем его (оригинал, желательно, оставить), с тем именем, которым будет называться наше ядро. Например: DAEMONY. И после этого редактируем. Вот пример моего конфига:


Эта часть публикации доступна только зарегистрированным посетителям!
Пожалуйста, войдите [Login] или зарегистрируйтесь [Register].

После редактирования файла оставляем его в папке /usr/src/sys/i386/conf/ и можно приступить к компиляции:

# cd /usr/src
# make buildkernel KERNCONF=DAEMONY
# make installkernel KERNCONF=DAEMONY
# shutdown -r now

По окончании процесса компиляции и установки ядра, перезагружаем машину и проверяем что все работает. Какие могут проблемы возникнуть после пересборки? Ну, обычно самая распространенная ошибка, на которую я сам когда-то тоже напоролся - отключение в ядре поддержки жизненноважного для Вашего сервера устройства. Когда-то, к примеру, я отключил нечаянно поддержку своей сетевой карты, из-за чего машина осталась без сети и пришлось заново пересобирать ядро.

Если после пересборки и установки ядра машина не грузится вообще, то есть после загрузчика выпадают какие-либо ошибки, или вообще ничего не происходит, повода для паники нет. Достаточно просто загрузить систему со старым работоспособным ядром, потому что оно после установки нового не удаляется, а перемещается в папку /boot/kernel.old. Чтобы загрузиться с этим ядром, на стадии появления меню загрузчика нажимаем Esc. Перед нами предстанет командная строка загрузчика. Наберем в ней:

boot kernel.old

или

boot GENERIC

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

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

 # kldload ipfw.ko

(Примечание: выполнять этот пример на машине, которой Вы управляете удаленно не рекомендуется!)

Для того, чтобы выгрузить из ядра какой-либо модуль нужно выполнить:

# kldunload ipfw.ko

Просмотреть список загруженных модулей в ядре можно следующей командой:

# kldstat
   Id Refs Address    Size     Name
   1    9 0xc0400000 4fc984   kernel
   2    1 0xc08fd000 5c304    acpi.ko
   3    1 0xc244d000 19000    linux.ko
   4    1 0xc25e9000 4000     logo_saver.ko

Автозагрузку необходимых модулей при старте можно прописать в файле /boot/loader.conf. Кроме этого файла существует еще один - дефолтовый /boot/defaults/loader.conf. Настройки в /boot/loader.conf перекрывают аналогичные в дефолтном файле. Редактировать дефолтный файл настоятельно нерекомендуется! Лучше его просто почитать, и выбрав для себя нужные опции, прописать их в /boot/loader.conf.

Подробнее о файле /boot/defaults/loader.conf можно будет почитать в одной из следущих статей.

 

Ключевые слова


| | | | | | | | | | | | |
 

Публикации по теме

Четверг, 31 января, 2008 13:32:26 EET

Подпишись на RSS ленту и будь в курсе обновлений

Я хочу добавить Daemony`s Live RSS ленту в Google Reader Я хочу добавить Daemony`s Live RSS ленту в Яндекс.Лента Я хочу получать RSS ленту Daemony`s Live Blog по электронной почте Я хочу добавить Daemony`s Live RSS ленту в My Yahoo Я хочу добавить Daemony`s Live RSS ленту в My MSN

Я хочу подписаться на Daemony`s Live RSS ленту комментариев к записям

Добавить комментарий

Быстрая вставка HTML тегов

Подсказки:
  • Для вставки фрагментов кода используйте "быстрый" тег <PRE></PRE>.
  • Для цитирования фрагментов текста используйте "Цитата".
  • Поддерживаются также другие HTML теги.

Поля, помеченные красной "звездочкой" обязательны к заполнению.