В данной статье, я хотел бы описать систему обновлений FreeBSD и привести некоторые моменты, связанные с «подводными камнями» с которыми я столкнулся при обновлении с версии FreeBSD 9.0 RELEASE-p3 до FreeBSD 9.1 RESELASE-p10. Так же хочу немного упомянуть про пакетную систему pkg (так как в новой версии теперь используется pkg, вместо «портов»).
Начнём с того, что нам необходимо скачать SVN (если он у нас ещё не установлен). Для того, чтобы это сделать, надо зайти в порты cd /usr/ports/ и ввести команду make search name=svn2git
Как видно из вывода команды, данная программа находится в директории: /usr/ports/devel/svn2git
Далее переходим в эту директорию и вводим команду: make install clean Отвечаем на вопросы с установкой, можно оставить дефолтные настройки, после установки переходим в каталог /usr/ports/ и удаляем всё его содержимое rm -rf * после переходим в /usr/src/ и удаляем его содержимое rm -rf * .
Теперь нам необходимо перенести содержимое исходников и портов от релиза 9.1 (Либо того релиза, до которого вы хотите обновиться. Список релизов можно увидеть на странице http://www.freebsd.org/releases/ ) Вот тут то нам и понадобится наш svn. Вводим вот такие вот 2 команды: svn co svn:svn.freebsd.org/base/release/9.1.0 /usr/src svn co svn:svn.freebsd.org/ports/head /usr/ports
После переноса содержимого портов и исходных кодов, мы вводим команду: freebsd-update -r 9.1 upgrade Где 9.1 это наш релиз, до которого мы хотим обновиться. И далее /usr/sbin/freebsd-update install
Теперь мы обновили сам релиз, но остались ещё пакеты и конечно же ядро. Так как я использую архитектуру i386 , то путь к конфигурационному файлу моего ядра будет /usr/src/sys/i386/conf (если вы используете архитектуру amd64 , то путь к вашему конфигу будет /usr/src/sys/amd64/conf )
В этом каталоге нам понадобится файл GENERIC, это и есть конфиг ядра, которым нам понадобится, скопируем этот файл cp GENERIC FW00 (FW00 это то, как я решил назвать ядро, которое я собственно и буду собирать)
Теперь открываем наш конфиг vim FW00 и видим поддерживаемые девайсы и опции, которое включает в себя этот конфиг. (Не большое примечание. Как вы могли уже догадаться по названию ядра, то я собираю фаерволл и так как я не использую протокол IPv6, то я его отключу в целях безопасности, для этого необходимо просто удалить строчку options INET6). Теперь мы можем вписать сюда необходимые нам опции и убрать то, что не будет использоваться. Список опций ядра, можно найти в http://www.freebsd.org/doc/ru/books/handbook/kernelconfig-config.html там подробно описаны все необходимые опции. Я включил для себя поддержку:
device pf device pfsync device pflog device carp
options IPSEC options IPSEC_DEBUG device crypto
options ALTQ options ALTQ_CBQ options ALTQ_RED options ALTQ_RIO options ALTQ_HFSC options ALTQ_PRIQ