Ядро FreeBSD 8 sysctl и компиляция

Ядро – сердце системы, в мире программного обеспечения с открытым исходным кодом вмешательство в работу ядра считается приемлемым способом улучшить производительность системы. Ядро FreeBSD можно настраивать динамически или изменять в процессе работы. Интерфейс ядра sysctl как раз предназначен именно для этого. Но некоторые части ядра не возможно изменить на лету. Ядро FreeBSD модульное, с помощью загрузки и выгрузки модулей можно производить конфигурацию сердца системы. В принципе ядро – это интерфейс между аппаратным и программным обеспечением. Фактически, ядро и его модули – это файлы в каталоге /boot/kernel именно в каталоге /boot/ можно хранить альтернативные ядра.
Через интерфейс взаимодействия sysctl с ядром можно общаться с помощью командой строки. Сохраним данные о переменных ядра в файле sysctl.info, выполним следующую команду
sysctl -a > sysctl.info

Просмотреть файл можно любым удобным редактором или так :
cat sysctl.info
Параметры настройки имеет древовидную схему и называется (Management Information Base, MIB) Основные категории следующие net (network), vm (virtual memory), kern (kernel). Каждая категория разделена на подгруппы.
Параметры управляющие характеристиками соответствуют международным стандартам POSIX.
Каждый параметр sysctl может представлять собой строку (string), целое число (integer), двоичное значение (binary value) либо неясный код (opaque). String – это текст свободного формата с произвольной длинной; integer – обыкновенное целое число; binary value – либо 0 (off) либо 1 (on); значение opaque представлено в машинном коде, который может интерпретировать только специальные программы.
Пример, изменим имя компьютера выполним
sysctl kern.hostname=google.com
Файл /etc/sysctl.conf используется для определения переменных ядра при загрузке системы, если вы хотите чтобы после перезагрузке настройки sysctl не были потеряны сохраните их сюда.
Командой kldstat без аргументов можно посмотреть какие модули ядра загружены сейчас.
Id Refs Address Size Name
1 3 0xc0400000 52bc08 kernel
2 1 0xc1a98000 d000 ipfw.ko
командой kldstat -v можно посмотреть все подмодули загруженные сейчас.
Файлы модулей выглядят так /boot/kernel/ipfw.ko – расширение ko атрибут модуля ядра. Такие файлы можно загружать и выгружать из пространства ядра при помощи команд kldload и kldunload.
Добавить автоматическую загрузку необходимого вам модуля при старте системы можно в файле /etc/loader.conf.
Он может быть пустым, чтобы посмотреть примеры добавления модулей воспользуйтесь /boot/defaults/loader.conf.
Теперь перейдем к компилированию собственного ядра.
По умолчанию система устанавливается с ядром GENERIC о чем будет сказано если выполнить команду
uname -a
Это ядро вполне подойдет для домашнего использования но в случае если необходимо добавить новые устройства, наоборот удалить не используемые драйвера или просто оптимизировать работу, тогда собираем собственное ядро freebsd.
Исходный код ядра находиться в каталоге sys/
Выбираем соответствующую вашему компьютеру архитектуру /sys/i386/conf/GENERIC – это файл конфигурации ядра который вы используете на данный момент. Открываем его, редактируем, сохраняем с !новым именем!. Конкретно останавливаться на каждом значении в файле ядра более чем не подъемная тема. Скажу в двух словах что можно смело комментировать (удалять из установки) все драйвера устройств которых нет на вашем компьютере и которые вы не планируете устанавливать. Когда все сделано исполняем config <имя файла ядра>, переходим в каталог с файлами ядра который будет указан после выполнения предыдущей команды.
make depend – команда проверит и соберет зависимости вашего нового ядра freebsd.
make – сборка freebsd ядра.
make install – установка.
После этого необходима перезагрузка, чтобы система запустила новое ядро freeBSD которое расположено /boot/kernel.
ядро предыдущие в данном случае GENERIC расположено /boot/kernel.old. Его можно загрузить через загрузчик в том случае если с новым ядром возникнут ошибки, хотя это редкость если ядро собралось без ошибок.


Все, удачи Вам и вдохновения.

http://ifreebsd.org/freebsd/ядро-freebsd/

Обновлено: 12.03.2015