Несколько месяцев назад добил RAM на рабочей станции до 8G, но всё руки не доходили мигрировать на 64-битную версию FreeBSD, так и жил на i386 с 3.2GB доступными из восьми. Но тут потребовалось одновременно гонять пару виртуалок в vbox одновременно с запущенными firefox и thunderbird и стало откровенно тесно, так что, наконец, мигрировал. В процессе переустановил весь софт, включая news-ридер slrn. Заодно и обновил патчи для "фидошного квотинга" в нём до актуальной версии: http://www.grosbein.net/freebsd/slrn/slrn-1.0.1/ ( Read more... )
В продолжение темы.
В сети довольно сильно растиражирована фраза о мейнфреймах: "среднее время наработки на отказ оценивается в 12-15 лет". У нас мейнфреймов нет, да и работавшая ещё в 2008-м система c FreeBSD 4.11/hylafax на 12-летнем (на тот момент) Quantum Fireball 640A и Intel Champion Low Profile/486 уже больше двух лет как отключена, но кое-что есть и сейчас.
Одна из работающих систем FreeBSD 4.11-STABLE, установленная в иногороднем филиале конторы в апреле 2004 года. Можно отметить, что уже тогда это был старый компьютер:
- материнская плата ASUS TUSL2 (BIOS Release Date: 10/11/2001)
- процессор Intel Celeron 850Mhz PGA Socket 370, FSB 100Mhz
- один модуль памяти DIMM SDRAM 128MB
- один диск 20GB UDMA100 Barracuda ATA IV, (C)opyright 2001 SEAGATE TECHNOLOGY LLC
- две 3Com 3c905C-TX Fast Etherlink XL неизвестного года выпуска
- тянет:
- роутинг: выпуск в мир локальной сети (natd+squid-2.6.18) плюс пять туннелей IPSEC плюс RIPv2 и OSPF внутри туннелей (quagga)
- isc-dhcp31-server-3.1.ESV_1,1
- публичные первичный DNS для одного домена и вторичный ещё для шести плюс непубличный первичный сервер для ещё одного и непубличный вторичный для ещё одного домена (bind98-9.8.1) плюс кеширующий рекурсивный сервис DNS для локальной сети
- первичный MX и почтовый сервер (SMTP и POP3) для одного домена, почтовый сервис для локальной сети (sendmail+popper, clamav-0.97, milter-regex)
- сервер точного времени NTP (stratum 3) для локальной сети (ntp-4.2.6p1)
- net-snmp-5.5_4
- ipacctd и mysql-клиент для еженощной заливки в базу центрального офиса обработанных перлом логов sendmail/squid/ipacctd на случай разбора полётов.
- openssl-1.0.0_6, openssh-portable-5.2.p1_3,1
- по мелочи: syslogd, cron, inetd, arpwatch, bounce.
- роутинг: выпуск в мир локальной сети (natd+squid-2.6.18) плюс пять туннелей IPSEC плюс RIPv2 и OSPF внутри туннелей (quagga)
last pid: 14380; load averages: 0.08, 0.11, 0.05 up 39+13:07:23 02:53:16 41 processes: 4 running, 37 sleeping CPU states: 2.7% user, 0.0% nice, 0.0% system, 2.7% interrupt, 94.6% idle Mem: 69M Active, 15M Inact, 29M Wired, 5116K Cache, 22M Buf, 3716K Free Swap: 512M Total, 153M Used, 359M Free, 29% Inuse
Система работает абсолютно стабильно, все ребуты связаны с длительными выключениями питания, когда UPS не выдерживает.
Ещё одна система, выполняющая ровно те же функции с тем же софтом в другом городе и другом филиале той же конторы была установлена в ноябре 2005-го:
- материнская плата Abit KT333-8235 (BIOS Release Date: Release Date: 09/23/2002)
- процессор AMD Athlon(tm) XP 1500+ (1333Mhz) Socket A, FSB 333Mhz
- два модуля памяти DIMM DDR: 256MB+128MB (384MB всего)
- один диск 17.2GB UDMA66 U Series 8, (C)opyright 1999 SEAGATE TECHNOLOGY LLC плюс один диск 40GB UDMA100 Barracuda ATA IV, (C)opyright 2001 SEAGATE TECHNOLOGY LLC
- две 3Com 3c905C-TX Fast Etherlink XL неизвестного года выпуска
last pid: 14144; load averages: 0.01, 0.05, 0.06 up 0+12:34:15 03:28:56 59 processes: 5 running, 54 sleeping CPU: 0.0% user, 0.0% nice, 0.6% system, 1.8% interrupt, 97.6% idle Mem: 191M Active, 109M Inact, 53M Wired, 21M Cache, 48M Buf, 824K Free Swap: 256M Total, 36K Used, 256M Free
Нагрузка на системы соответствует мощности железа.
Виртуализация, говорите?
GCC Forever
2011-08-14 17:32# uname -sr
FreeBSD 4.11-STABLE
# gcc -v
Using builtin specs.
gcc version 2.95.4 20020320 [FreeBSD]
# pkg_info -Ix gcc
gcc-3.4.6_20051206 GNU Compiler Collection 3.4
gcc-4.2.5.20090325_5 GNU Compiler Collection 4.2
gcc-4.4.7.20110628 GNU Compiler Collection 4.4
gcc-4.5.4.20110721 GNU Compiler Collection 4.5
Пособирал разные версии GCC на 4.11-STABLE. Как уже ранее писал, часть практически нужного софта типа LLVM в составе clamav уже не собирается gcc-2.95.4.
- Зато gcc-3.4.6 прекрасно собирается им из портов, результирующий пакет не имеет зависимостей, а им уже можно собирать порты через
make USE_GCC=3.4
Пакет можно установить командойpkg_add -r http://www.grosbein.net/freebsd/packages-4.11/gcc-3.4.6_20051206.tgz
- gcc-4.2.5 (он уже новее, чем штатный в FreeBSD 8.2) прекрасно собирается с использованием gcc-3.4.6 и имеет зависимости, которые также собрались без проблем. Результирующий пакет с зависимостями можно установить командами:
export PACKAGESITE=http://www.grosbein.net/freebsd/packages-4.11/ pkg_add -r gmp-5.0.2 pkg_add -r mpfr-3.0.1 pkg_add -r libiconv-1.9.2_1 pkg_add -r gcc-4.2.5.20090325_5
- gcc-4.4.7 при сборке (с использованием 4.2.5) потянул за собой свежие binutils из портов ради as, а binutils захотел zlib посвежее, чем zlib-1.1.4 в базовой системе 4.11. Поэтому сделал порт zlib-1.2.5, который ставит свежий zlib со всеми модификациями от FreeBSD 9.0. После чего binutils прекрасно собрался, а после него и gcc-4.4.7:
export PACKAGESITE=http://www.grosbein.net/freebsd/packages-4.11/ pkg_add -r zlib-1.2.5 pkg_add -r binutils-2.21.1 pkg_add -r gmp-5.0.2 pkg_add -r mpfr-3.0.1 pkg_add -r libiconv-1.9.2_1 pkg_add -r gcc-4.4.7.20110628
- gcc-4.5.4 уже захотел /usr/include/stdint.h (C99), который появился во FreeBSD только с 5.0, но вполне удовольствовался симлинком stdint.h -> inttypes.h и после этого собрался (с USE_GCC=4.4), вместе со своим Java frontend, отчего размер пожатого пакета подскочил в шесть раз и превысил 100MB.
export PACKAGESITE=http://www.grosbein.net/freebsd/packages-4.11/ pkg_add -r zlib-1.2.5 pkg_add -r binutils-2.21.1 pkg_add -r gmp-5.0.2 pkg_add -r mpc-0.9 pkg_add -r mpfr-3.0.1 pkg_add -r libiconv-1.9.2_1 pkg_add -r gcc-4.5.4.20110721
- gcc-4.6.2 уже не удовлетворяется симлинком на inttypes.h в качестве /usr/include/stdint.h, а требует настоящий файл, в котором определяется гораздо больше типов. Поэтому на нём я решил пока остановиться.
openssl-1.0.0_5 из свежих портов на FreeBSD 4.11 собирается без проблем, но при установке вылетает в самом конце:
===> Compressing manual pages for openssl-1.0.0_5 /bin/sh:Argument list too long *** Error code 1
На 4.11 максимальная длина командной строки 64K, на свежих версиях 256K и список манов openssl не влазит в 64K. Пришлось патчить
Если кто ещё не в курсе: начиная с 15 апреля 2010 версии clamav 0.94.x и старее отключаются с очередным обновлением баз:
All ClamAV releases older than 0.95 are affected by a bug in freshclam which prevents incremental updates from working with signatures longer than 980 bytes.
You can find more details on this issue on our bugzilla (see bug #1395)
This bug affects our ability to distribute complex signatures (e.g. logical signatures) with incremental updates.
So far we haven’t released any signatures which exceed this limit.
Before we do we want as many users as possible to upgrade to the latest version of ClamAV.
Starting from 15 April 2010 our CVD will contain a special signature which disables all clamd installations older than 0.95 – that is to say older than 1 year.
Обновить версию до 0.96 можно и на FreeBSD 4.11. После обновления дерева портов:
echo '_GCCVERSION=029504' >> /etc/make.conf
cd /usr/ports/security/clamav
fetch http://www.grosbein.net/freebsd/patches/clamav-0.96.diff.gz
gunzip clamav-0.96.diff.gz
patch -p1 < clamav-0.96.diff
make clean config # отключить LLVM
make all deinstall install
При отключенном LLVM (новая фича в clamav-0.96) вполне возможно собрать эту версию системным gcc-2.95.4 и clamav работает. Для того, чтобы использовать и LLVM, нужно сначала поставить пакетом gcc-3.4 (14Mb) и собирать порт им:
pkg_add -r ftp://ftp-archive.freebsd.org/pub/FreeBSD-Archive/old-releases/i386/4.11-RELEASE/packages/lang/gcc-3.4.4_20041224.tgz
или
pkg_add -r http://www.grosbein.net/freebsd/gcc-3.4.6_20051206.tgz
make USE_GCC=3.4 clean config all deinstall install
Всё замечательно работает. Установка дополнительной версии gcc не влияет на системный компилятор и не сказывается на работе системы. Новым gcc софт собирается, только если это явно затребовать (например, через USE_GCC=3.4, см. выше).
Урок некромантии
2010-04-14 01:18В портах FreeBSD не нашлось места для NTP distribution*, включающего в себя ntpd, ntpdate, sntp
и ещё несколько утилит. Видимо, потому что это всё с незапамятных времен есть в базовой системе и весьма оперативно там обновляется (хотя, например, bind
тоже есть в базовой системе, но есть и в портах). В итоге нет простого способа обновить ntpd в FreeBSD-4.11, когда функциональность тамошней версии 4.1.0 восьмилетней давности становится недостаточной (ну или просто из-за проблем с безопасностью). Пришлось сделать порт самому (меньше килобайта):fetch http://www.grosbein.net/freebsd/ntp/ntp.tar.gz
tar xvzf ntp.tar.gz
cd ntp
make install
echo 'xntpd_program="/usr/local/bin/ntpd"' >> /etc/rc.conf
Порт не заменяет системный ntpd
, а устанавливает новую версию внутрь /usr/local
, как и положено всем портам. Теперь на моих боевых четверках ntpd
версии 4.2.6p1, в то время как в 8.0 лишь 4.2.4p5. Порт хорош тем, что его легко поправить при выпуске разработчиком новой версии ntpd
(а также, его можно собрать под любой версией системы), но если сборка из порта по какой-то причине не подходит, можно поставить собранный из этого порта под FreeBSD 4.11 пакет (576K):pkg_add -r http://www.grosbein.net/freebsd/ntp/ntp-4.2.6p1.tgz
echo 'xntpd_program="/usr/local/bin/ntpd"' >> /etc/rc.conf
Update: конечно, в портах есть NTP distribution: net/ntp (см. комменты к посту), но не заточенный под сборку на FreeBSD 4.11
(честно говоря, четверок у меня осталось только три штуки, но они далеко - одна за 300 километров, две других за 400 и дальше, работают стабильно и заменены будут только вместе с железом)
FreeBSD7+ и Apache 1.3
2010-01-08 21:47Из FreeBSD 7.0 и новее выпилили утиль /usr/bin/objformat
, которую хочет apache-1.3 при сборке. При отсутствии такой утилиты сборка считает, что собирается на aout-based system (какой FreeBSD была 12 лет назад) и собирает нерабочие бинарники. Утиль восемь лет назад была официально объявлена obsolete, но apache-1.3 пользоваться ей при сборке так и не перестал.
При необходимости собрать apache-1.3 с собственным набором патчей на FreeBSD8 есть два пути: заменить aout на elf внутри скрипта src/Configure
или положить в /usr/bin/objformat
исполняемый скрипт:
#!/bin/sh echo elf
Я выбрал второе, чтобы не помнить об этом и не ковырять
src/Configure
если вдруг понадобиться добавить ещё что-то в код апача.