Был когда-то админ, который держал вэб-сервера в компании. А я в ту пору работал там же вэб-программером. Но потом он ушел – и все бразды правления серверами былипереданы мне до нахождения нового админа. Было это месяцев 8 назад. С тех пор я и админю эти сервера и программлю.
Так вот еще в те далекие времена на один из продакшен-серверов была поставлена FreeBSD 6.1 RELEASE. И были у нее иногда (раз-два в месяц) странные сбои – она спонтанно несколько раз уходила в ребут. Память там целая, да и рейд-массив не сбоит. Все логи чистые.
Как я смог наконец-то выяснить – такое поведение встречалось у некоторых других серверов с этой же версией фри, а также и с какой-то версией 5ки – вроде бы тоже 5.1.
Переставить сервер нет никакой возможности. К великому моему сожалению. Посему пришлось делать апгрейд. Да к тому же и ядро там самосборное, так что бинарный апгрейд не выйдет. И вот что я делал:
- Правим/проверяем /etc/make.conf. У меня он имеет такой вид:
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} - Конфигурируем-правим cvs-supfile:
*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если раскоментарить ports-all оно обновит еще и дерево портов, а мне долго ждать не хотелось. А в tag нужно вписать релиз, до которого будем апдейтить систему.
- Обновляем /usr/src:
cvsup -g -L 2 /root/cvs-supfile
-
cd /usr/src
-
make buildworld
-
make buildkernel KERNCONF=MYKERNEL
-
make installworld
- А вот теперь надо ставить ядро… Но вдруг не взлетит? Потому будем ставить в два ребута.
make installkernel KERNCONF=MYKERNEL KODIR=/boot/testkernel
nextboot -k textkernelNextboot укажет загрузчику что надо загрузиться с указанным ядром лишь раз – потом грузить дефолтное.
-
reboot
-
uname -a
и смотрим, получилось или нет. У меня получилось… И теперь ставим это ядро как основное
-
make installkernel KERNCONF=MYKERNEL
- Насколько я понял – не помешает сделать
mergemaster
Это попытается обновить конфиги сервисов, а те что изменены – поможет смерджить
-
reboot
И по идее все должно взлететь с новым ядром. У меня завелось.
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: это не призыв к холивору =)
Любая система кажется hostile если не прыгать вокруг доки
На сервер я бы ставил WITHOUT_X11=yes в make.conf, если нету каких-то хитрых phpшных расширений требующих Xlib.
MASTER_SITE_OVERRIDE/MASTER_SITE_BACKUP тоже лучше ставить местные, чтобы не тащить distfiles со всего мира.
У меня никогда зеркал не спрашивает, наверное потому что ставлю все из портов и прописываю MASTER_SITE_OVERRIDE в make.conf
PS3: pciconf -lv, usbdevs -v, CPU: /var/run/dmesg.boot, /var/log/messages, sysctl hw.model
gonzo
November 22nd, 2007
gonzo
/var/run/dmesg.boot содержал в себе 0 байт =)
dm
November 22nd, 2007
ты не прав, фря очень ровная система
во всяком случае под ней кастом ядро собирается на раз. И еще и работает, как ни странно
Eugene Pyvovarov
November 22nd, 2007
Ядро-то собирается. Кслову, у меня и в пингвине все ядра собирались сразу. И работало
А вот с нестабильной работой именно этого ядра я столкнулся не первым.
Фря – система типа вломил и забыл, потому как обновление софта вести регулярно – ИМХО слишком извратно в ней: при пересборке может куча депенденсов зацепится и что-то отлететь. Если, конечно, не пользоваться бинарными пакетами. В линухе, в принципе, тоже такой шанс был бы – если бы эти апдейты не тестили перед выпуском.
dm
November 23rd, 2007
Все порты легко обновляются со всеми зависимостями через portupgrade (он есть в портах):
portupgrade -aRri
При чём – всё происходит автоматически. Многие из них, при первой установке, выводят интерактивное окно, в котором можно поставить опции сборки.
Первый раз полностью апгрейдил FreeBSD лет 7 назад. Всё собралось и стало без проблем. С тех пор не променяю её ни на какой линукс, разве что – на OpenBSD для роутерных машин
. Именно из-за строгой упорядоченности структуры и простоты.
adsh
December 27th, 2007
Всё хорошо описано, но вот как всегда банальная ошибка, на которую натыкаются новички:
_НИКОГДА_(!!!!!) не делать installworld _до_ installkernel
ибо те кто натыкался на грабли когда банальный cp перестаёт работать говорят что ето ну просто оооооооооооочень не приятно. Приходилось компилить GENERIC на другом сервере, перекидывать на сервер перезагружаться и там уж делать заного installworld
ах,да, иногда ещё полезно перед mergemaster сделать mergemaster -p
Bull-DoG
July 17th, 2008
Я надеюсь, что мне никогда больше с этим не придется столкнуться – для себя я выбрал Linux Ubuntu.
dm
July 17th, 2008
Не знаю, не знаю… я для себя давно выбрал, что на роутерах у меня будут фри, а форкстепйшины – ХР и линухи пускай. Дома на нотике и ХР, и Убунта
none
October 8th, 2008