Posterous theme by Cory Watilo

FreeBSD upgrade

Был когда-то админ, который держал вэб-сервера в компании. А я в ту пору работал там же вэб-программером. Но потом он ушел - и все бразды правления серверами былипереданы мне до нахождения нового админа. Было это месяцев 8 назад. С тех пор я и админю эти сервера и программлю. Так вот еще в те далекие времена на один из продакшен-серверов была поставлена FreeBSD 6.1 RELEASE. И были у нее иногда (раз-два в месяц) странные сбои - она спонтанно несколько раз уходила в ребут. Память там целая, да и рейд-массив не сбоит. Все логи чистые. Как я смог наконец-то выяснить - такое поведение встречалось у некоторых других серверов с этой же версией фри, а также и с какой-то версией 5ки - вроде бы тоже 5.1. Переставить сервер нет никакой возможности. К великому моему сожалению. Посему пришлось делать апгрейд. Да к тому же и ядро там самосборное, так что бинарный апгрейд не выйдет. И вот что я делал:
  • Правим/проверяем /etc/make.conf. У меня он имеет такой вид: [cc lang="bash"] PERL_VER=5.8.8 PERL_VERSION=5.8.8 MASTER_SITE_BACKUP?= \ ftp://ftp5.us.freebsd.org/pub/FreeBSD/portg.freebsd.orgs/current-distfiles/${DIST_SUBDIR}/ MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP} SUP_UPDATE= yes SUP= /usr/local/bin/cvsup SUPFLAGS= -g -L 2 SUPHOST= cvsup5.us.freebsd.org PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile X11BASE=${LOCALBASE} [/cc]
  • Конфигурируем-правим cvs-supfile: [cc lang="bash"] *default host=cvsup3.ua.freebsd.org *default base=/var/db *default prefix=/usr *default release=cvs delete use-rel-suffix compress #ports-all tag=. *default release=cvs tag=RELENG_6_2 src-all [/cc] если раскоментарить ports-all оно обновит еще и дерево портов, а мне долго ждать не хотелось. А в tag нужно вписать релиз, до которого будем апдейтить систему.
  • Обновляем /usr/src: [cc lang="bash"]cvsup -g -L 2 /root/cvs-supfile[/cc]
  • [cc lang="bash"]cd /usr/src[/cc]
  • [cc lang="bash"]make buildworld[/cc]
  • [cc lang="bash"]make buildkernel KERNCONF=MYKERNEL[/cc]
  • [cc lang="bash"]make installworld[/cc]
  • А вот теперь надо ставить ядро... Но вдруг не взлетит? Потому будем ставить в два ребута. [cc lang="bash"] make installkernel KERNCONF=MYKERNEL KODIR=/boot/testkernel nextboot -k textkernel [/cc] Nextboot укажет загрузчику что надо загрузиться с указанным ядром лишь раз - потом грузить дефолтное.
  • [cc lang="bash"]reboot[/cc]
  • [cc lang="bash"]uname -a[/cc] и смотрим, получилось или нет. У меня получилось... И теперь ставим это ядро как основное
  • [cc lang="bash"]make installkernel KERNCONF=MYKERNEL[/cc]
  • Насколько я понял - не помешает сделать [cc lang="bash"]mergemaster[/cc]Это попытается обновить конфиги сервисов, а те что изменены - поможет смерджить
  • [cc lang="bash"]reboot[/cc]
И по идее все должно взлететь с новым ядром. У меня завелось. PS: Я понимаю, что знатоки фри через это давно прошли, но я имел удовольствие делать это впервые на сервере, стоящем далеко от меня в ДЦ. И ехать туда не хотелось. PS2: небольшое ИМХО. Пока ставил и обкатывал тестовый стенд - долго ругался. Если до этого я не сильно-то любил фрю, то после этого шага невзлюбил еще больше. Вот возьмем линух - я поставил его на сервер за 30 минут и настроил за 1,5 часа до готовности к бою. С дефолтным ядром. На 6ГБ памяти. Но фря... для установки пакетов предлагает кучу зеркал. Половина дохлые. Ладно, допустим. При инсталяции каждого выбраного пакета она переспрашивает с какого зеркала его тянуть. При установке 15ти пакетов это бесит невероятно. Потом надо писать страшный make.conf, cvs-supfile. Чтобы обновить порты. Из которых дальше долго и нудно ставить софт. Давно уже было, но повторюсь - в ubuntu/debian можно поставить php4-cgi, php5-cgi - они не перекрывают друг друга и всем хорошо. Во фре перекрывают. надо ставить с префиксом. А потом все экстеншены с префиксом... В общем, впечатление осталось одно - надо долго прыгать с бубном в полночь вокруг горы доки. PS3: у меня в dmesg небыло мессаджей о загрузке. И вот как определить что за железо в компе стоит? В линухе - lspci, lsusb, /proc. А во фре? Тот же проц - /cat/cpuinfo - как? PS4: это не призыв к холивору =)
| Viewed
times
Filed under: