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

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

Что мы имеем?

# 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/17


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

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

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

Add your comment now

Please note: JavaScript is required to post comments.