Aliexpress INT
PostHeaderIcon

Обновление FreeBSD c 7.4 до 9.2

Имеем рабочий сервер под управлением 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:

<fstype>:<device> [options]

Mount <device> using filesystem <fstype>

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)

<empty line> 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