Конфигурирование ядра FreeBSD

Описание всех устройств и описаний, которые могут быть использованы в FreeBSD, находятся в файле /sys/i386/conf/LINT .

В директории /sys/i386/conf также находится и файл с описанием ядра GENERIC. Ядро GENERIC - это ядро, с помощью которого мы установили FreeBSD на компьютер.
В описании ядра могут находиться:
1) machine
( в нашем случае это "i386", т.е. процессор совместимый с Intel 386 );
2) 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;
3) ident FIRST
идентификатор (название) ядра.
4) options
5) config
6) controller
7) device
8) pseudo-device

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

# dmesg
(Правда, если говорить точнее, то данная команда показывает системные сообщения, см. man dmesg ).

Что же нужно сделать, что собрать новое ядро??
1) иметь при себе список всех устройств, установленных в вашем компьютере;
2) знать (!!!) чего вы хотите от ОС;

Если вы это знаете - продолжим.
Берем самый обычный файл /usr/src/sys/i386/conf/GENERIC и копируем его в файл FIRST.

# cd /sys/i386/conf
# cp GENERIC FIRST
Добавляем в него нужные опции, контроллеры и устройства, ненужные соответственно убираем.

Закончили редактирование - выполняем команды.

# /usr/sbin/config FIRST
# cd ../../compile/FIRST
# make depend
# make
Если все прошло без сучка и задоринки, то инсталлируем новое ядро:
# make install
Если же одна из команд выдала ошибку - то следует еще раз внимательно проверить список устройств и опций в файле /usr/src/sys/i386/conf/FIRST . Если же все ваш взгляд нормально, то попробуйте еще раз "пересобрать" ядро.

В мое ядро включен Sound Blaster 16. Некоторые девайсы не присутствуют в системе, например snd0 (проверить это можно заглянув в каталог /dev), поэтому создадим его:

# cd /dev
# sh MAKEDEV snd0
Возможно, что новое ядро по каким-то причинам не сможет загрузиться... Что делать?
Запишите сообщения, выдаваемые ядром в момент загрузки и отправьте письмо в список рассылки.
Попробуйте загрузить ваше старое ядро:
boot: kernel.old
Загрузка старого ядра должна пройти успешно. Замените старое ядро на новое:
# 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
Обязательно проверьте их наличие!
Некоторые музыкальные карты (a-la Sound Blaster 16C PnP) инициализируются ядром только в том случае, если в установках BIOS ОТКЛЮЧЕНА ПОДДЕРЖКА PnP OS.