Зачем нужно перегенерировать ядро (kernel)?
При инсталяции FreeBSD у вас появится в системе ядро, которое вполне работоспособно. Зачем его переделывать?
Дело в том, что это ядро (так называемая GENERIC конфигурация) как раз предназначена для того, чтобы система успешно развернулась на "железе" любой конфигурации (из поддерживаемых, конечно).
В эту конфигурацию встроена поддержка ВСЕХ типов накопителей (HDD и CD) и ВСЕХ сетевых карт, которые на данный момент поддерживаются FreeBSD. Это вполне логично - вы должны иметь возможность поставить свой Unix и дополнительные программы на тот HDD, который имеется у вас в машине и суметь войти в сеть, какой бы сетевой карточкой вы ни пользовались.
В то же время, в ядро не включены некоторые полезные модули, которые могут вам понадобится в дальнейшем, особенно, если вы хотите использовать вашу машину в качестве сервера. (Например - поддержка firewall, PPP-сервера, bpf и т.п.).
Итак. Перегенерировать ядро стоит для того чтобы -
- убрать все лишнее (драйверы устройств, которых у вас нет);
- добавить то, чего не хватает.
Первое позволит вам ускорить загрузку (так как система не будет тратить время на поиск и тестирование несуществующих в вашей машине устройств) и сэкономить место в ОЗУ, занимаемое ядром.
Ну, а без второго, скорее всего, вы не сможете решить свои задачи :).
Разворачивание исходников.
Прежде всего посмотрите в директорию
/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 и продолжать свои эксперименты. Во всяком случае, у вас всегда останется по крайней мере один "загружабельный" вариант ядра.
Как перегенерировать ядро системы?
В общем виде этот процесс выглядит так:
- развернуть исходники ядра (я обычно заказываю их в процессе инсталяции, но если вы этого не сделали, то можно добавить их "вручную");
- составить свою конфигурацию (конфигурационный файл);
- запустить программу config, которая создаст необходимые файлы *.h и *.c в соответствии с вашей конфигурацией;
- скомпилировать новое ядро с помощью программы make;
- установить новое ядро на место;
- перезагрузиться. Теперь более подробно.
Перегенерация ядра.
1. Зачем нужно перегенерировать ядро (kernel)?
2. Как перегенерировать ядро системы?
2.1 Разворачивание исходников.
2.2 Составление конфигурационного файла.
2.3 Подготовка к генерированию
2.4 Трансляция (собственно само генерирование) ядра
2.5-2.6 Установка нового ядра и Перезагрузка
Замечание по поводу драйверов устройств.
Важное замечание по поводу драйверов устройств.
Если вы добавили в конфигурации ядра устройства (реальные или pseudo-device), возможно потребуется создать для них файлы-устройства в директории /dev.
Какие-то общие рекомендации по этому поводу дать трудно, поскольку это зависит от того - какие устройства вы добавляли в конфиг-файл, а их много разных.
Во всяком случае, если вы знаете какого файла (в /dev) не хватает, его можно создать с помощью программки MAKEDEV, которая лежит в той же /dev. Это даже не программа, а командный файл, в начале которого есть коментарии, в которых более-менее подробно описаны возможные аргументы (имена устройств) для MAKEDEV.
И еще, поскольку, /dev наверняка не прописана в вашем PATH, запускать ее нужно /dev/MAKEDEV ... , или, если вы находитесь в самой директории /dev, то ./MAKEDEV ...
Иван Паскаль pascal@tsu.ru
Comments: info@citmgu.ru
Copyright © CIT