Обновление FreeBSD c 7.4 до 9.2 (обновление через 8.4)

Имеем рабочий сервер под управлением FreeBSD 7.4

Необходимо обновить его до последней стабильной версии – 9.2

Основная причина – окончание поддержки FreeBSD 7.x и множество нерабочих портов.

Сразу обновить с 7.4 до 9.2 не получится, для начала надо сделать промежуточное обновление до 8.4.

Поехали…

1. Обновление 7.4 -> 8.4

удаляем старые исходники:

# rm -r /usr/obj

# rm -r /usr/src

закачиваем новые:

# svn co svn://svn.freebsd.org/base/stable/8 /usr/src

# cd /usr/src

# mergemaster -p

# make -j4 buildworld

# make -j4 buildkernel

# make installkernel

# make installworld

# mergemaster -iU

и получаем ошибку:

—-

*** Creating the temporary root environment in /var/tmp/temproot

*** /var/tmp/temproot ready for use

*** Creating and populating directory structure in /var/tmp/temproot

*** FATAL ERROR: Cannot ‘cd’ to /usr/src and install files to

the temproot environment

—-

поможет перезагрузка

# reboot

повторяем еще раз

# mergemaster -iU

ошибка не повторилась,

подтверждал все вопросы системы про удаление или выполнение(y)

# reboot

проверяем версию обновленной системы:

# uname -r

8.4-STABLE

2. теперь обновляю 8.4 -> 9.2

все аналогично предыдущему обновлению:

# rm -r /usr/obj

# rm -r /usr/src

# svn co svn://svn.freebsd.org/base/stable/9 /usr/src

# cd /usr/src

# mergemaster -p

# make -j4 buildworld

# make -j4 buildkernel

# make installkernel

# make installworld

# mergemaster -iU

# reboot

ОС не поднялась, ошибка загрузки системы “gm0s1a failed with error 19″:

Mounting from ufs:/dev/mirror/gm0s1a failed with error 19.

Loader variables:

vfs.root.mountfrom=ufs:/dev/mirror/gm0s1a

vfs.root.mountfrom.options=rw

Manual root filesystem specification:

: [options]

Mount using filesystem

and with the specified (optional) option list.

eg. ufs:/dev/da0s1a

zfs:tank

cd9660:/dev/acd0 ro

(which is equivalent to: mount -t cd9660 -o ro /dev/acd0 /)

? List valid disk boot devices

. Yield 1 second (for background tasks)

Abort manual input

mountroot>

т.к. сервер HP ProLiant DL120 G5, то зашел в iLo и перегрузил сервер,

после чего в loader prompt и выполнены команды:

OK set kern.geom.part.check_integrity=0

OK boot

при этом с ходу зайти в iLo не удалось, вылезла ошибка:

iLO remote console crashes with error “com.serverengines.rdr.EndOfStream: EndOfStream”

проблема с iLo решена по этому мануалу.

поехали дальше…

проблема с загрузкой ОС возникает при наличии программного RAID – gmirror

проверить можно так:

# gpart status

Name Status Components

mirror/gm0s1 CORRUPT mirror/gm0

# gpart show

=> 63 488397104 mirror/gm0 MBR (232G) [CORRUPT]

63 488397105 1 freebsd [active] (232G)

=> 0 488397105 mirror/gm0s1 BSD (232G)

0 20971520 1 freebsd-ufs (10G)

20971520 8288698 2 freebsd-swap (4G)

29260218 20971520 4 freebsd-ufs (10G)

50231738 204800000 5 freebsd-ufs (97G)

255031738 233365367 6 freebsd-ufs (111G)

======================

есть три решения:

1) отключить механизм целостности разделов:

# echo “kern.geom.part.check_integrity=0″ >> /boot/loader.conf

2) временно отключить проверку и последовательно пересоздать каждую из нод зеркала

3) временно отключить проверку и загрузится в single mode и прогнать fsck

до окончания обновления выбран 1-й вариант, продолжение следует

проверяем версию обновленной системы:

# uname -r

9.2-STABLE

3. обновление портов

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

# rm -r /usr/ports

получаем новые:

# portsnap fetch

# portsnap extract

# portsnap fetch update

указываем нужную версию питона

# echo “DEFAULT_VERSIONS=python=2.7 python2=2.7 python3=3.3″ >> /etc/make.conf

сперва обновляем утилиту обновления портов:

# portupgrade -frR portupgrade

а потом и все остальные порты:

# portupgrade -farR

Взято от сюда http://www.net-adm.ru/articles/57-upgrade-freebsd-7-to-9.html

Leave a Reply