Перегенерация ядра.
При инсталяции FreeBSD у вас появится в системе ядро, которое
вполне работоспособно. Зачем его переделывать?
Дело в том, что это ядро (так называемая GENERIC конфигурация)
как раз предназначена для того, чтобы система успешно развернулась
на "железе" любой конфигурации (из поддерживаемых, конечно).
В эту конфигурацию встроена поддержка ВСЕХ типов накопителей
(HDD и CD) и ВСЕХ сетевых карт, которые на данный момент поддерживаются
FreeBSD. Это вполне логично - вы должны иметь возможность поставить свой
Unix и дополнительные программы на тот HDD, который имеется у вас
в машине и суметь войти в сеть, какой бы сетевой карточкой вы
ни пользовались.
В то же время, в ядро не включены некоторые полезные модули,
которые могут вам понадобится в дальнейшем, особенно, если вы
хотите использовать вашу машину в качестве сервера. (Например -
поддержка firewall, PPP-сервера, bpf и т.п.).
Итак. Перегенерировать ядро стоит для того чтобы -
- убрать все лишнее (драйверы устройств, которых у вас нет);
- добавить то, чего не хватает.
Первое позволит вам ускорить загрузку (так как система не будет
тратить время на поиск и тестирование несуществующих в вашей машине
устройств) и сэкономить место в ОЗУ, занимаемое ядром.
Ну, а без второго, скорее всего, вы не сможете решить свои задачи :).
В общем виде этот процесс выглядит так:
- развернуть исходники ядра (я обычно заказываю их в процессе инсталяции,
но если вы этого не сделали, то можно добавить их "вручную");
- составить свою конфигурацию (конфигурационный файл);
- запустить программу config, которая создаст необходимые файлы
*.h и *.c в соответствии с вашей конфигурацией;
- скомпилировать новое ядро с помощью программы make;
- установить новое ядро на место;
- перезагрузиться.
Теперь более подробно.
Прежде всего посмотрите в директорию
/usr/src/sys
если она не пустая, то все что вам нужно уже на месте. И вы можете
спокойно перейти к следующему пункту.
В противном случае, вам надо взять из дистрибутива нужные файлы и
установить их. Как это сделать описано в
"Добавление компонент из дистрибутива".
Не забудьте, что вам в данном случае необходима только та их часть,
которая называется sys.
Перейдите в директорию /usr/src/sys/i386/conf.
Здесь имеются два конфигурационных файла GENERIC и LINT.
Первый представляет собой конфигурацию того ядра, которое установилось
у вас при инсталяции системы. Вы можете посмотреть там - что в данный
момент может ваше ядро.
Второй же файл представляет собой скорее описание всех возможных
элементов конфигурационного файла, чем реальную конфигурацию. Если
вы попытаетесь построить ядро в такой конфигурации, оно, скорее всего
даже не будет работать. Во всяком случае, памяти "отожрет" по максимуму :).
Вам необходимо составить свой файл. Его название значения не имеет.
Можете назвать его MyConfig или MyComputer. Я обычно даю ему то же
название, что и доменное имя машины.
В качестве основы для нового файла вы можете использовать один из
уже имеющихся файлов - GENERIC или LINT.
Если вы возьмете за основу GENERIC, то вам придется убрать оттуда описания
всех лишних устройств и дописать необходимые вам options.
Если же вы возьмете за основу LINT, то все редактирование будет заключаться
в удалении всего ненужного. Однако, это может оказаться весьма утомительным
занятием.
Итак. Скопируйте один из имеющихся конфигов
cp GENERIC MyConfig
или
cp LINT MyConfig
И подправьте его любым текстовым редактором.
Hint: Если вы не успели еще поставить никакого текстового редактора
"с человеческим лицом", можно использовать редактор ee, который у вас
наверняка уже стоит. Он довольно простой, но вполне полноценный экранный
редактор.
Как я уже сказал, основным "мануалом" по составлению новой конфигурации
служит файл LINT. Причем, там должны быть описаны самые "свежие" options,
которые появились в той версии, которую вы ставите, и еще не описаны в других
"мануалах". (К сожалению, "должны быть" и "есть" - не одно и то же.)
На всякий случай я попытался написать свои "Комментарии к config файлу".
После того, как вы закончили редактировать свою конфигурацию (пусть она
называется MyConfig, например), наберите команду
config MyConfig
Она создаст в директории /usr/src/sys директорию compile/MyConfig
(о чем и сообщит вам в конце своей работы) и поместит туда файлы, необходимые
для компиляции ядра.
Перейдите в директорию /usr/src/sys/compile/MyConfig и наберите команду
make
она сделает все что нужно.
Учтите, что kernel - достаточно сложная программа, поэтому ее компиляция
потребует довольно много времени. От 15-20 минут на Pentium'е до часа,
на 386 процессоре.
Если в процессе компиляции обнаружатся фатальные ошибки, придется
пересмотреть свой конфиг, исправить его и повторить пункты 2.3 - 2.4.
(У меня такие случаи были, когда я попросил некоторые опции, возможные
только для Pentium, забыв указать в начале файла, что хочу поддержку
процессора i586)
После того, как компиляция ядра успешно завершилась наберите комманду
make install
она переименует старое ядро в kernel.old и поместит в корневую директорию
ваш новый kernel.
После этого можно (и нужно) перегрузить компьютер.
Если загрузка нового ядра не получилась (такое тоже возможно), вы
можете загрузится со старым ядром. Для этого, в начале загрузки
на подсказку Boot: надо быстро сказать kernel.old.
Естественно, после этого надо снова вернуться к редактированию вашей
конфигурации и повторить все последующие пункты.
Только не торопитесь. Если новое ядро опять окажется неработоспособным,
вы можете попасть в неприятную ситуацию, так как после очередного
"make install" -
kernel.old - предыдущая неработающая версия kernel
kernel - новая, столь же бесполезная.
Конечно, если вы не пожалели места на диске, у вас должен был остаться
в корневой директории файл kernel.GENERIC и вы можете всегда загрузить
его. Однако, в остальных случаях он не нужен, поэтому я, например, его
обычно удаляю.
А чтобы при этом не попасть в вышеописаную ситуацию, можно переименовать
пока еще работающий kernel.old в kernel.work или kernel.original и
продолжать свои эксперименты. Во всяком случае, у вас всегда останется
по крайней мере один "загружабельный" вариант ядра.
Если вы добавили в конфигурации ядра устройства (реальные или pseudo-device),
возможно потребуется создать для них файлы-устройства в директории /dev.
Какие-то общие рекомендации по этому поводу дать трудно, поскольку это
зависит от того - какие устройства вы добавляли в конфиг-файл, а их много
разных.
Во всяком случае, если вы знаете какого файла (в /dev) не хватает, его
можно создать с помощью программки MAKEDEV, которая лежит в той же /dev.
Это даже не программа, а командный файл, в начале которого есть коментарии,
в которых более-менее подробно описаны возможные аргументы (имена устройств)
для MAKEDEV.
И еще, поскольку, /dev наверняка не прописана в вашем PATH, запускать ее
нужно /dev/MAKEDEV ... , или, если вы находитесь в самой директории /dev, то
./MAKEDEV ...
Иван Паскаль pascal@tsu.ru