Много погуглив и немного пояндексировав, нашлось не мало статей по этому поводу, и как правило — много из них это обычный клон другой. Но по факту, почти ни одна статья не рассказывает полностью о том как делается пошаговое обновление. Поэтому я постараюсь это описать.

Итак, приступим:

Что мы имеем?

# uname -a 
FreeBSD xxx.xxxxx.xx 5.5-RELEASE FreeBSD 5.5-RELEASE ....

Довольно таки старая версия :(, но ничего, сейчас мы это подправим 😉

Как написано в handBooke можно воспользоваться утилитой freebsd-update, а что делать если её нет? Ведь она появилась после версии 6.2, а у нас пока что 5.5. Нашёл вот такой ответ:

# fetch http://people.freebsd.org/~cperciva/freebsd-update-upgrade.tgz
# tar -xf freebsd-update-upgrade.tgz

Проверим файл конфигурации /etc/freebsd-update.conf, в нём можно изменить сервер для загрузки обновлений

# freebsd-update upgrade -r 6.4-RELEASE

В процессе выполнения этой команды загружаются обновления для версии 6.4-RELEASE, которые будут сохранены в /var/db/freebsd-update (каталог /var должен иметь минимум 400Мб свободного места, если это не так — сделайте символическую ссылку с раздела где есть место на /var/db/freebsd-update). Если вы ходите обновить на другую версию, например на 7.2, соответственно делаем:

# freebsd-update upgrade -r  7.2-RELEASE

После того как всё затянется, делаем:

# freebsd-update install

В процессе установки будут появлятся вопроссы, сравнивая версии файлов. Поэтому вам необходимо внимательно читать и отвечать на вопросы.

Далее перезагружаем систему:

#  shutdown -r now

После перезагрузки, снова запускаем установку обновлений (при первом запуске было обновлено только ядро, при повторном запуске выполняется обновление базового окружения):

# freebsd-update -f /etc/freebsd-update.conf install

После того как отработает данная команда, ещё раз перезагружаем систему и проверяем:

# uname -a
FreeBSD xxx.xxxxx.xx 6.4-RELEASE-p4 FreeBSD 6.4-RELEASE-p4 ....

На двух серверах у меня всё без проблем взлетело, а вот на одном посыпались ошибки.. И тогда я вспомнил, старый дедовский метод 🙂

Обновление исходников ядра и мира:

Если ещё не установлена, то устанавливаем утилиту cvsup

# cd /usr/ports/net/cvsup
# make install && make clean

далее, копируем один из нескольких конфигурационных файлов, напрамер в дирректорию /usr/local/etc с любым именем (как вам нравится), я сделал так:

# cp /usr/share/examples/cvsup/stable-supfile  /usr/local/etc/supfile

после чего немного подправим этот файл и доведём примерно до такого вида:

# cat /usr/local/etc/supfile
 
*default host=cvsup7.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_7_2
*default delete use-rel-suffix
 
*default compress
 
src-all
doc-all
ports-all

Далее выполняем команду:

#  cvsup -g -L 2  /usr/local/etc/supfile

и ждём её завершения, ориентировочное время её завершения при моём канале в 4-5Мб ушло около 2х споловиной часов. Возможно это было из-за загрузки в данный момент сервера с которого я тянул, обычно намного быстрее до 40мин. Самый лучший способ запуска данной утилиты, либо по крону, что бы не висеть в консоли, либо использовать утилиту screen. Ясделал по хитрому, используя утилиту screen — запустил в ней такую последовательность команд: (cvsup -g -L 2 /usr/local/etc/supfile && echo ‘cvsup done’ | mail -s ‘cvsup update’ moy_mail@my_domain.com ) И после выполнения затягивания исходников, я получил на мыло напоминалку 🙂

После завершения данной операции, перейдём к следующему пункту.

# cd /usr/obj
# ls -l
если папка не пуста
# rm -rf *, а лучше по одной папке.. а вдруг рука дрогнет и получится "rm -rf /" :)
потом делаем так:
# cd /usr/src
# make cleandir

Далее нам нужно подготовить и собрать ядро, у меня был бок со старым ядром поэтому пришлось сначала собрать с GENERIC, а потом пересобрал со своим.

Итак:

# cd /usr/src
# make buildworld

Это сборка мира, далее ядро, то о чём я писал выше. Моё ядро zergkernell

# make buildkernel KERNCONF=zergkernell

Вот на этом этапе корилась сборка ядра, поэтому я сделал так:

# make buildkernel

после успешной сборки ядра GENERIC, делаем

# make installkernel

PS. Заметьте, опция KERNCONF указывает на имя файла вашего ядра. сборка ядра без этого параметра обозначает установку ядра по умолчанию. Кроме того, в разных версиях системы разные опции в ядре, и некоторых опций уже нет в более поздних версиях систем, чем в ранних. Именно поэтому может и корилась у меня сборка, хотя я предварительно делал выборку того что мне нужно их старого ядра и добавлял их в копию нового GENERICa. Но впрочем это не суть важно, бывают же глюки в системе. Может ей хотелось именно GENERIC 🙂
Ещё одно обязательное но: Если у вас в /etc/rc.conf прописан запуск фаервола и он не open или не сконфигурен правильно, то желательно на время обновления закоментить его, ибо чревато тем что после перезагрузки системы с ядром GENERIC, загрузится фаер с правилами ipfw deny all from any to any. А если вы делаете удалённое обновление, сами понимаете что за этим стоит 🙂

Обязательно уточняем не перезатёрся ли файл /boot/loader.conf, если у вас там были какие-то записи, например как у меня:

# cat /boot/loader.conf
geom_mirror_load=YES

если перезатёрся, записываем заново эти данные и перезагружаем систему.

после загрузки сравниваем версии конфигурационных файлов и устнавливаем мир:

# cd /usr/src
# mergemaster -p
# make installworld
# mergemaster
# reboot

PS. mergemaster нужно делать очень,очень аккуратно, так как, например обновился BIND и все его конфиги. И это не единный пример. Хорошим тоном и практикой, было бы, зайти ещё в одну консоль и бекапить те файлы, которые затрагиваются, а потом их можно будет ещё один раз сравнить в случае чего ;).

после загрузки системы немного подчистим старые библиотеки:

# cd /usr/src
# make delete-old && make delete-old-libs

PS. Если вы ставили как я сначала GENERIC ядро, то теперь в самый раз сконфигурять и поставить свое ядро.

Ну и напоследок для уверенности:

# reboot

после запуска:

# uname -a
FreeBSD xxx.xxxxx.xx 7.2-RELEASE-p4 FreeBSD 7.2-RELEASE-p4

Ура!!! шеф, всё получилось…

Напоминаю всем копирующим мой контент о существовании закона "Об авторском праве".
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:

http://noted.org.ua/?p=17


Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)

Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455

На данной странице нет комментариев, возможно они закрыты. Если Вы хотите оставить свой комментарий, перейдите на специально созданный раздел

Add your comment now

You must be logged in to post a comment.