Обновление FreeBSD-7.2 до FreeBSD-8.0

Уже довольно давно вышел релиз FreeBSD-8.0. Но обновиться на боевом сервере руки дошли не сразу.
По опыту прошлых обновлений словил немало глюков, и не дабы не забыть, решил при обновлении до FreeBSD-8.0 все подробно описать, чтобы не свалить систему и не тащить в туалет монитор :)

Поехали. Делаем все удаленно, по ssh. Первые несколько пунктов до перезагрузки можно делать очень далеко от сервера, на остальные лучше приехать поближе :)

# freebsd-update upgrade -r 8.0-RELEASE
Этой командой мы скачаем бинарные файлы нового релиза, исходники и ядро, если это указано в /etc/freebsd-update.conf (секция Components). У меня ядра там нет и об этом ниже. Так же система предложит поправить некоторые конфигурационные файлы, указав в них различия между установленной системой и дистрибутивом.

# freebsd-update install
Установит новое ядро системы и наверное исходники, я честно не смотрел, что изменилось.

Перед тем, как перезагрузиться, нужно проверить, поставлено ли новое ядро. У меня его небыло (из-за /etc/freebsd-update.conf, я просто не указал в Components параметр kernel).
Качаем ядро руками:

# mkdir -p /root/8kern
# cd /root/8kern
# wget -r -nd ftp://ftp4.ru.freebsd.org/pub/FreeBSD/releases/i386/8.0-RELEASE/kernels/
# sh
# export DESTDIR=/
# sh install.sh generic
# exit
# mv /boot/kernel /boot/kernel.7.2
# mv /boot/GENERIC /boot/kernel

Еще неплохо бы поставить compat7x (без него может не запуститься openssh-server, named) и отключить firewall (ipfw в моем случае, ибо нифига не будет работать и может быть сеть заблокируется нафик)

# cd /usr/ports/misc/compat7x
# make install clean

и отключаем ipfw в /etc/rc.conf (firewall_enable="YES" в firewall_enable="NO" например)

# shutdown -r now
Первая перезагрузка. Уже с новым ядром, но старым софтом.

# freebsd-update install
Установит новые бинарники в систему, библиотеки, разные файлы.

Вот тут уже можно пересобирать софт, ядро со своим конфигом при необходимости.

# freebsd-update install
Завершит установку, удалит старые системные библиотеки из системы, которые могли требоваться софту.
Не забываем включить ipfw, если отключали.

Завершаем обновление финальной перезагрузкой.
# shutdown -r now