Этапы процесса перегенерации
В общем виде этот процесс выглядит так:
- установить исходные коды ядра (как правило их устанавливают в процессе инсталляции системы);
- составить свою конфигурацию ядра (конфигурационный файл);
- запустить программу config, которая создаст необходимые файлы *.h и *.c в соответствии с вашей конфигурацией;
- скомпилировать новое ядро с помощью программы make;
- установить новое ядро (make install);
- перезагрузиться.
Теперь рассмотрим эти пункты более подробно.
Установка исходных кодов ядра.
Прежде всего, посмотрите в директорию /usr/src/sys если она не пустая, то все что вам нужно уже на месте. И вы можете спокойно перейти к следующему пункту.
В противном случае, вам надо взять из дистрибутива нужные файлы и установить их. Это легко можно проделать с помощью команды /stand/sysinstall. Более подробно, см. раздел "Инсталляция системы".
Составление конфигурационного файла.
Перейдите в директорию /usr/src/sys/i386/conf.
Здесь имеются два конфигурационных файла GENERIC и LINT. Первый представляет собой конфигурацию того ядра, которое установилось у вас при инсталляции системы. Вы можете посмотреть в нем, что именно может ваше текущее ядро.
Второй же файл представляет собой подробное описание всех возможных элементов конфигурационного файла. Если вы попытаетесь построить ядро в конфигурации LINT, оно, скорее всего не будет работать.
Вам необходимо составить свой конфигурационный файл. Его название значения не имеет. Можете назвать его, например, myKERNEL. Обычно ему дают то же название, что и доменное имя машины, либо (удобно, если вы заготавливаете несколько ядер для выполнения разных задач) - FIRST (SECOND, THIRD и т.п.).
В качестве основы для нового файла вы можете использовать один из уже имеющихся файлов - GENERIC или LINT.
Если вы возьмете за основу GENERIC, то вам придется убрать оттуда описания всех лишних устройств и дописать необходимые вам options.
Если же вы возьмете за основу LINT, то все редактирование будет заключаться в удалении всего ненужного.
Это может оказаться весьма и весьма утомительным занятием.
Возьмем за основу файл GENERIC. Скопируйте его:
cp GENERIC myKERNEL
Теперь нужно отредактировать его любым текстовым редактором.
Как было сказано выше, основным руководством по составлению новой конфигурации служит файл LINT. Причем, там должны быть описаны самые последние options, которые появились в той версии FreeBSD.
Ниже приводится список опций конфигурационного файла.
- machine (в нашем случае это "i386", т.е. процессор совместимый с Intel 386 );
- cpu "I586_CPU"
"I386_CPU" - 386-е процессоры;
"I486_CPU" - 486-е процессоры, включая AMD-5x86;
"I586_CPU" - 586-e процессоры: Pentium, Pentium MMX, AMD-K5, AMD-K6;
"I686_CPU" - 686-е процессоры: Pentium Pro, Pentium II; - ident myKERNEL (идентификатор, или название ядра).
- options
- config
- controller
- device
- pseudo-device
Проверить список устройств в вашей системе можно с помощью следующей команды: # dmesg
Данная команда показывает системные сообщения, которые вы наверное видели при начальной загрузке системы.
Что же нужно, чтобы сделать все правильно?
- иметь при себе список всех устройств, установленных в вашем компьютере;
- хорошо знать, чего вы хотите от FreeBSD на данной машине;
Подготовка к компиляции
После того, как вы закончили редактировать свою конфигурацию, наберите команду /usr/sbin/config myKERNEL
Она создаст в директории /usr/src/sys директорию compile/myKERNEL (о чем и сообщит вам в конце своей работы) и поместит туда файлы, необходимые для компиляции ядра. Так же эта команда попросит вас "не забыть" выполнить команду make depend.
Выполните команды
Компиляция нового ядра
Находясь в директории /usr/src/sys/compile/myKERNEL и наберите команду # make
она сделает все что нужно.
Учтите, что ядро системы - достаточно сложная программа, поэтому ее компиляция потребует довольно много времени. От 15-20 минут на процессоре Pentium до часа, на 386 процессоре.
Если в процессе компиляции обнаружатся фатальные ошибки, придется пересмотреть свой конфигурационный файл, исправить его и повторить все заново. (Такие случаи бывают не только у новичков, но и у опытных администраторов, так что преждевременно не огорчайтесь).
Установка нового ядра
После того, как компиляция ядра успешно завершилась, наберите команду # make install
она переименует старое ядро в /kernel.old и поместит в корневую директорию ваш новый /kernel. После этого нужно перегрузить компьютер.
Если загрузка нового ядра не получилась (такое тоже возможно), вы можете загрузиться со старым ядром. Для этого, в начале загрузки на подсказку Boot: надо быстро сказать kernel.old. Естественно, после этого надо снова вернуться к редактированию вашей конфигурации и повторить все последующие пункты.
Только не торопитесь. Если новое ядро опять окажется неработоспособным, вы можете попасть в неприятную ситуацию, так как после очередной инсталляции ядра командой make install получится:
kernel.old - предыдущая неработающая версия ядра
kernel - новая, но столь же бесполезная.
Но даже теперь не отчаивайтесь. У вас должен был остаться в корневой директории файл kernel.GENERIC и вы можете всегда загрузить его (конечно, если вы не удалили его ранее в целях экономии места на диске). Поэтому на подсказку Boot: надо набрать kernel. GENERIC.
Для того, чтобы не попасть в вышеописанную ситуацию, после загрузки старого ядра, замените им ваше новое ядро: # cd / # chflags noschg kernel # cp kernel kernel.new # cp kernel.old kernel # chflags schg kernel # reboot
После этого можете смело продолжать ваши изыскания по конфигурированию ядра.
И напоследок, проверьте наличие файла /boot.config. Если этого файла нет - создайте его: # echo /boot/loader " /boot.config
В каталоге /boot должны содержаться файлы:
boot0 boot1 boot2 loader