FreeBSD Kernel package
Некоторое время назад, при подготовке системы массовой инсталляции FreeBSD, столкнулся с неожиданной трудностью при инсталляции кастомного ядра. Например, sysinstall хочет получить ядро в виде gzip-ованого архива, причем еще и разбитого по томам. ИМХО, это не совсем удобно, тем более, если нужно создать некоторый набор ядер для разных вариантов установки.
Для упрощения был написан порт для сборки ядра в пакет FreeBSD, который можно легко установить, как с помощью sysinstall, так и простым pkg_add.
Установить ядро можно, например, так:
# pkg_add http://tmp.barev.net/files/kernel-GENERIC-i386-7.1_701000.tbz
После установки пакета, содержимое каталога /boot выглядит следующим образом:
# ls -l | grep kernel
lrwxr-xr-x 1 root wheel 21 Feb 14 16:50 kernel -> kernel.GENERIC-701000
drwxr-xr-x 2 root wheel 11776 Feb 14 16:50 kernel.GENERIC-701000
drwxr-xr-x 2 root wheel 512 Jan 27 11:02 kernel.old
Для некоторого удобства ядро ставится в отдельную директорию. После чего создается символическая ссылка с именем kernel, ссылающаяся на директорию с ядром. Символическая ссылка никак не влияет на процесс загрузки, но дает некоторую свободу действий. Естественно ядро должно находиться на том же дисковом разделе, что и файл ссылки, т.к. на момент загрузки доступен для чтения только корневой раздел.
Шелл-архив порта можно получить по следующей ссылке
ports-kernel.shar.
Для сборки пакета нужно произвести следующие действия:
# fetch http://tmp.barev.net/files/ports-kernel.shar
# sh ./ports-kernel.shar
# cd kernel
# make package KERNCONF=GENERIC
