Не смотря на то, что статья довольно объёмная – сам процесс особой сложности не представляет.
Для начала, надо убедиться, что имеются исходные коды системы:
# ls -la /usr/src
total 4
drwxr-xr-x 2 root wheel 512 Feb 18 2011 .
drwxr-xr-x 15 root wheel 512 May 15 22:07 ..
Каталог пустой – значит, надо их получить. Варианта два — либо с помощью sysinstall, если есть диск с такой же версией FreeBSD и вы возле сервера, либо с помощью cvsup с какого-либо сервера FreeBSD. Мы будем качать.
Первым делом — надо найти самый быстрый сервер. Как это сделать – описано тут>>>.
Находим самый удобный сервер cvsup:
# fastest_cvsup -c ua -Q
cvsup5.ua.freebsd.org
Создадим каталог для supfile-ов:
# mkdir /etc/csup
Создадим сам supfile:
# ee /etc/csup/src-sys
Впишем такое содержимое:
*default host=cvsup5.ua.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_8_2
*default delete use-rel-suffix
*default compress
src-sys
В строке default host указываем сервер, который будем использовать.
ВАЖНО: в строке default release требуется указать вашу текущую версию FreeBSD. Например:
# uname -a
FreeBSD ikari 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Fri Feb 18 02:24:46 UTC 2011
[email protected]:/usr/obj/usr/src/sys/GENERIC i386
Теги svn для конкретной версии можно посмотреть тут>>>.
Содержание
Другие варианты supfile
Для обновления портов:
*default host=cvsup5.ua.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
*default compress
ports-all
Для загрузки всех исходных кодов системы (потребуется при обновлении версии FreeBSD из исходного кода):
*default host=cvsup5.ua.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_8_2
*default delete use-rel-suffix
*default compress
src-all
ВАЖНО: если это первый раз, когда вы загружаете исходные коды для ядра (src-sys), то сначала надо загрузить ВСЕ файлы (src-all).
Теперь запустим загрузку файлов:
# csup -g -L 2 /etc/csup/src-sys
Parsing supfile “/etc/csup/src-sys”
Connecting to cvsup5.ua.FreeBSD.org
Connected to 109.106.1.244
…
Ждем сообщения:
Shutting down connection to server
Finished successfully
Проверим наличие файлов:
# cd /usr/src/sys/
# ls
Makefile compat geom libkern netinet6 nfs4client pci tools
amd64 conf gnu modules netipsec nfsclient powerpc ufs
arm contrib i386 net netipx nfsserver rpc vm
boot ddb i4b net80211 netnatm nlm security x86
bsm dev ia64 netatalk netncp opencrypto sparc64 xdr
cam fs isa netgraph netsmb pc98 sun4v
cddl gdb kern netinet nfs pccard sys
Все, исходные коды загружены, можно приступать к конфигурированию собственного ядра.
Переходим в каталог /usr/src/sys/i386/conf/.
ВАЖНО – каталог зависит от архитектуры вашей системы. Для i386 (или x32) это будет каталог /usr/src/sys/i386/conf/. Если х64 – то /usr/src/sys/amd64/conf/.
# cd /usr/src/sys/i386/conf/
Создадим копию конфигурации дефолтного (GENERIC) ядра, и назовем его нашим именем – по этому файлу конфигурации и будет собираться наше ядро:
# cp GENERIC COREIKARI1
Редактируем его под себя. Воспользуйтесь ссылками в конце статьи – там есть примеры.
# ee COREIKARI1
ВАЖНО: установите в строке:
ident GENERIC
имя вашего ядра.
Остальные параметры – по желанию, но будьте осторожны.
Например, надо только добавить поддержку IPFW, для этого будут добавлены строки:
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
options IPFIREWALL_DEFAULT_TO_ACCEPT
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT
options LIBALIAS
options DUMMYNET
Сохраняем файл, переходим в каталог /usr/src и начинаем сборку ядра:
# cd /usr/src
# make buildkernel KERNCONF=COREIKARI1
Возможные ошибки при сборке ядра
Если у вас в начале сборки ошибки такого плана:
/usr/src/sys/i386/conf/yourkern: unknown option “STOP_NMI”
возможно загружены исходные коды не вашей версии ОС, проверьте строку default release=cvs tag=RELENG_8_2 в файле /etc/csup/src-sys (или /etc/csup/src-all если качали все).
Если ошибка такого плана:
# make buildkernel KERNCONF=yourkern
make: don’t know how to make buildkernel.Stop
убедитесь, что команда builtkernel запускается из каталога /usr/src. Если так, проверьте содержимое каталога /usr/src – присутствует ли в нем файл Makefile.
Если нет – возможно не загружены ВСЕ исходные коды – выполните сначала:
# csup -g -L 2 /etc/csup/src-all
либо установите с помощью sysinstall, при наличии диска и доступа к серверу, либо с FTP-сервера FreeBSD:
# sysinstall
Выбираем:
Configure > Distributions > Src >
далее:
Base, Sys > Ok > Ok > Select Internet > FTP Main (или CD/DVD)
и запустите установку.
Ждем окончания сборки нового ядра. Наконец, получаем сообщение:
————————————————————–
>>> Kernel build for COREIKARI1 completed on Wed May 16 22:39:20 UTC 2012
————————————————————–
Теперь пора установить новое ядро:
# make installkernel KERNCONF=COREIKARI1
————————————————————–
>>> Installing kernel
…
kldxref /boot/kernel
Теперь можно перезагружать сервер. Весьма желательно, что бы к нему уже был подключен IPKVM, если вы далеко.
После перезагрузки проверим:
# uname -a
FreeBSD ikari 8.2-RELEASE-p7 FreeBSD 8.2-RELEASE-p7 #0: Wed May 16 21:49:18 UTC 2012 setevoy@ikari:/usr/obj/usr/src/sys/COREIKARI1 i386
Вот оно, новое ядро: COREIKARI1 i386.
Если загрузка нового ядра неудачна – можно загрузить старое (GENERIC) ядро. Для этого, в меню загрузки выбираем Boot to loader promt (6). Попадаем в командную строку, и выгружаем новое ядро:
OK unload
Теперь загрузим наше старое ядро:
OK load /boot/kernel.old/kernel
Ждем, пока ядро загрузится в память, и вводим:
OK boot
Начался процесс загрузки системы со старым ядром.
Проверим:
# uname -a
FreeBSD ikari 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Fri Feb 18 02:24:46 UTC 2011 [email protected]:/usr/obj/usr/src/sys/GENERIC i386
Ядро GENERIC i386 – наше старое ядро.
Теперь, что бы вернуть загрузку с этим ядром постоянно, выполняем:
# cd /boot/
На всякий случай – сохраняем наше “неудачное” ядро:
# mv kernel kernel.bak
Вернем на место копию старого ядра GENERIC:
# mv kernel.old kernel
Все, теперь система будет загружаться только с ним, пока не разберёмся в чем ошибка в новом ядре.
Ссылки по теме:
http://daemony.org
http://www.lissyara.su
http://www.bsdportal.ru
http://www.freebsd.org
http://www.bsdnotes.ru