*
Помнится лет 15 назад коммерческие Unix можно было сравнить с тракторами Caterpillar - вылизанный, сияющий, новенький трактор: мощи - немеряно, рык грозен и авторитет подавляющ. Linux - ну что там Линукс, студентиком Танненбаума написан? Кто про него знал - заикались, что мол это тоже трактор, ржавенький, но трактор (типа бесплатно и для народа). Счастливчики, дорвавшиеся до "фирмового" оборудования с коммерческими Unix при этих словах падали под стул от хохота, те, кто разбирался с HP-UX, не тратили сил даже на то, чтобы покрутить пальцем у виска. Благодаря блестящему маркетингу и абсолютно наплевательской позиции к вопросам копирайтов MS уверенно "хавала" десктопы россиян и умы разработчиков, выжигая напалмом островки NetWare, OS/2 и прочих более интересных "обитателей" компьютерных "винтов". Народ уже матерился при взгляде на требования MS к железу, но... "Делать нечего... Бояре, потужив о Государе и царевне молодой, в спальню к ней вошли толпой..." (и даже не заикайтесь о нонешнем "падении нравов").
К чему это я тут так разоряюсь? А вы представьте себе чуток проржавевшую помесь танка с трактором (женского полу), у которого вместо седушки водителя торчит огрызок трубы. Вертикально. Чтобы сразу и по самые гланды всем, кто захочет притопить "газулю" в пол сразу после установки generic системы. Представили? Вот это и есть OpenBSD. Ежели неумелой детской рукой на "морде" этого чудовища намалевать глазки и ухмылку "рыбки" с картинки "No Blow - No Go!" - то именно так и будет выглядеть истинный символ этой ОСи.
FAQ: "Выбор любой операционной системы зависит от ответа на вопрос: "Можно ли сделать некую работу именно так, как Вам хочется?" И ответить на сей вопрос Вы должны самостоятельно."
Как это ни парадоксально - чем-то эта система притягивает. Может тем, что требует сначала "любви, ласки и внимания", а вот потом "на всё готовая я...". По большому счёту единственное, что реально бесит - это отсутствие нормальных драйверов на видео, из-за чего работа в иксах превращается в кошмар (угу, ваша Галя - балованная!). Не гонял пока тестов для сравнения с Linux-2.6.23 (SLUB), но что-то подсказывает, что наше "чудовище" даже с включенным softupdate окажется аутсайдером. Бо цели у проекта несколько иные. Во главу угла поставлена безопасность системы, что накладывает порой довольно ощутимые ограничения на процесс оптимизации софта под эту платформу. В частности я ставил как i386 на Athlon64 и для успешной компиляции 'ecore' пришлось вырезать использование mmx инструкций. Теперь по порядку (всё, что описано ниже - сугубо моё IMHO и ни в коем случае не претендует на "истину в последней инстанции"):
1) Товарищ, помни, OpenBSD - не Unix и
POSIX несовместима! Таки позабыл? Не беда! Отсутствие функции strfmon() и хэдера monetary.h быстро восстановят сей пробел.
2) "Зеркала" официального репозитория чудовищны. Сперва грешил на свои настройки. Потом поставил
Master Fanout Site (Canada) - заработало. Такое ощущение, что многие файлы на зеркалах "обрезаны", недокачаны. Радовался рано. Где "затычка" - пока не разобрался, но "рецепт" следующий: тянем wget-ом и потом ставим с "винта". Иначе устанете вырезать partial установки (довольно занятная кстати фишка, потом подумаю, как её использовать).
3) Не ищите iocharset в опциях mount-а. Его там нет. Запись в
openbsd-misc mailinglist (от января 2006-го года):"At the moment, there is no way to specify a particular charset when
mounting filesystems. This is being worked on, however (at least for
cd9660, udf and ntfs filesystems).
Miod"
Сильно. Внушает. Интересно, сколько обезьян необходимо, чтобы вкрутить в патрон лампочку? Нет. Не так. Сколько времени необходимо одной обезьяне, чтобы проделать сие упражнение, не расхерачив при сём упомянутую лампочку к свиньям собачьим? "Дак ведь Пост, Матушка, ждём-с, до первой звезды..."
4)
Нет поддержки ни одной журналируемой файловой системы.5) А теперь позвольте выкатить списочек. Это - полный top. В фоксе открыто 15 вкладок, на одной из которых пишется сия нота. В Enlightenment-е загружено 55 модулей. mpd + emphasis. Почему emphasis жрёт 68.07% от остатков проца - разговор отдельный и будет он понятен и интересен пожалуй только разработчикам. dbus запущен сугубо ради спортивного интереса. wget тащит пакет openoffice с офсайта. Лепота...
load averages: 1.45, 1.46, 1.56 18:37:50
43 processes: 3 running, 38 idle, 1 zombie, 1 on processor
CPU states: 38.4% user, 0.0% nice, 60.8% system, 0.2% interrupt, 0.6% idle
Memory: Real: 216M/360M act/tot Free: 641M Swap: 0K/1537M used/tot
PID USERNAME PRI NICE SIZE RES STATE WAIT TIME CPU COMMAND
27809 sda 63 0 10M 17M run - 162:13 68.07% emphasis
13285 sda 2 0 34M 44M sleep poll 24:01 13.13% enlightenment
22761 sda 45 0 18M 76M run - 13:51 7.23% Xorg
11287 sda 32 0 77M 110M run - 11:03 3.32% firefox-bin
10391 sda 2 0 1216K 4176K sleep poll 2:54 0.93% mpd
13510 root 2 0 492K 768K sleep select 5:24 0.00% pptp
26634 sda 2 0 936K 3784K sleep poll 1:07 0.00% mpd
24992 sda 2 0 7204K 27M sleep poll 0:34 0.00% SciTE
15922 root 2 0 1024K 1552K sleep select 0:23 0.00% ppp
6781 root 2 0 368K 932K sleep select 0:16 0.00% pptp
24611 root 2 0 892K 1868K sleep select 0:08 0.00% ppp
23415 sda 2 0 2684K 2784K sleep poll 0:06 0.00% mpd
26339 sda 2 0 2096K 5096K sleep poll 0:03 0.00% enlightenment_fm
28451 sda 2 0 480K 1556K sleep select 0:03 0.00% wget
10225 sda 2 0 1568K 4176K sleep select 0:02 0.00% xterm
9292 sda 2 0 1628K 4156K sleep select 0:01 0.00% xterm
15626 _syslogd 2 0 404K 872K sleep poll 0:00 0.00% syslogd
30207 sda 2 0 1164K 3040K sleep poll 0:00 0.00% gconfd-2
20833 sda 10 0 996K 1952K idle wait 0:00 0.00% bash
25807 root 2 0 332K 740K idle netio 0:00 0.00% syslogd
14280 sda 10 0 1060K 1892K idle wait 0:00 0.00% bash
17142 sda 28 0 752K 1628K onproc - 0:00 0.00% top
6089 root 2 0 516K 732K sleep select 0:00 0.00% pptp
13630 sda 10 0 908K 1804K idle wait 0:00 0.00% bash
1266 root 2 0 480K 828K idle select 0:00 0.00% cron
23036 _dbus 2 0 612K 1228K idle poll 0:00 0.00% dbus-daemon
23716 sda 10 0 688K 1340K idle wait 0:00 0.00% bash
24928 sda 18 0 540K 504K idle pause 0:00 0.00% sh
3816 sda 18 0 480K 476K idle pause 0:00 0.00% sh
13991 sda 18 0 504K 592K idle pause 0:00 0.00% sh
18563 sda 2 0 636K 1332K idle poll 0:00 0.00% dbus-daemon
15497 sda 2 0 556K 1136K idle poll 0:00 0.00% dbus-launch
1 root 10 0 388K 340K idle wait 0:00 0.00% init
9994 sda 10 0 456K 1124K idle wait 0:00 0.00% xinit
26534 root 2 0 360K 692K idle select 0:00 0.00% inetd
3810 root 3 0 336K 768K idle ttyin 0:00 0.00% getty
24959 root 3 0 420K 768K idle ttyin 0:00 0.00% getty
18100 root 3 0 296K 760K idle ttyin 0:00 0.00% getty
15889 root 3 0 224K 756K idle ttyin 0:00 0.00% getty
19607 sda 18 0 408K 440K idle pause 0:00 0.00% sh
26715 sda 2 0 1708K 1008K idle netio 0:00 0.00% Xorg
13956 root 2 0 568K 1156K idle select 0:00 0.00% sshd6) Базовую систему ставил всю, кроме SMP ядра (не пользую SMP на десктопе из принципа). Долго рубился в Tetris (на 9-ом уровне меня подкосили - непорядок). Ностальгировал. Узрел в пакетах quake и quake2. Смахнул скупую слезу и долго думал про всех, кто не желает появления nVidia драйверов для OpenBSD. В результате список установленных пакетов выглядит на сегодня вот так:
~ > pkg_info | awk -F\ '{print $1}'
ORBit2-2.14.7
aalib-1.2p2
apr-1.2.9
apr-util-1.2.8
aspell-0.50.5p4
atk-1.18.0p0
autoconf-2.59p1
autoconf-2.61p1
automake-1.9.6p2
bash-3.2.17
bison-2.1p0
boehm-gc-7.0
bzip2-1.0.4
cairo-1.4.10
cdparanoia-3.a9.8p0
cdrtools-2.01p0
chmlib-0.39
curl-7.16.2
db-4.2.52p11
dbus-1.0.2p1
dbus-glib-0.73p0
dbus-python-0.80.1
desktop-file-utils-0.12p0
docbook-4.4
docbook-dsssl-1.72
dvd+rw-tools-5.21.4.10.8p0
e16keyedit-0.2
enlightenment-0.16.7.2p2
esound-0.2.34p0v0
evince-0.8.1
faac-1.24
faad-2.0p6
fam-2.7.0p2
fetchmail-6.3.8
ffmpeg-20070501p0
findutils-4.1p0
flac-1.1.2p1
gconf2-2.18.0.1
gettext-0.14.6p0
ghostscript-8.54p1
ghostscript-fonts-8.11p0
giblib-1.2.4p3
gimp-2.2.17
glib-1.2.10p1
glib2-2.12.12p1
glitz-0.5.6
gmake-3.80p1
gmpc-0.15.1
gmpc-lyrics-0.15.0
gnome-icon-theme-2.18.0p0
gnome-keyring-0.8.1
gnome-mime-data-2.18.0
gnome-vfs2-2.18.1p0
gtk+-1.2.10p6
gtk+2-2.10.13
gtkspell-2.0.5p4
hicolor-icon-theme-0.10p0
imlib-1.9.14p5
imlib2-1.3.0p0
iodbc-3.52.4p0
iso8879-1986
jasper-1.900.1
javaPathHelper-0.3
jbigkit-1.6p1
jpeg-6bp3
ladspa-1.12p0
lame-3.96.1p2
lcms-1.15
libIDL-0.8.8
liba52-0.7.4p2
libao-0.8.8
libart-2.3.19p1
libaudiofile-0.2.6p0
libbonobo-2.18.0
libbonoboui-2.18.0
libcroco-0.6.1
libdnet-1.10p2
libdv-0.104p1
libdvdnav-20051102p2
libexif-0.6.16
libgadu-20060411
libgcrypt-1.2.0p1
libglade2-2.6.1
libgnome-2.18.0
libgnomecanvas-2.14.0p0
libgnomeprint-2.18.0
libgnomeprintui-2.18.0
libgnomeui-2.18.1p0
libgpg-error-1.1p0
libgsf-1.14.3p2
libiconv-1.9.2p3
libid3tag-0.15.1bp0
libidn-0.6.1
libltdl-1.5.22p2
libmad-0.15.1bp1
libmikmod-3.1.10p4
libmng-1.0.9p1
libmpcdec-1.2.4
libmpd-0.14.0
libmspack-20040308a
libogg-1.1.3
librsvg-2.16.1p0
libsamplerate-0.1.2p0
libshout-2.2.2p0
libslang-1.4.9p3
libsndfile-1.0.11p0
libtheora-1.0alpha7
libtool-1.5.22p13
libungif-4.1.4p1
libunicode-0.4p1
libutf-2.0
libutf8-0.8p0
libvorbis-1.2.0
libwmf-0.2.8.3p3
libwpd-0.8.9p0
libxml-2.6.29
libxslt-1.1.21
lzo-1.08p1
mc-4.6.1p1
meanwhile-1.0.2p0
metaauto-0.7
mozilla-firefox-2.0.0.6
mpc-0.12.1
mpd-0.13.0p1
mplayer-1.0pre8p14-sdl
msmtp-1.4.12p0
mutt-1.5.16p0
nasm-0.98.38p0
neon-0.26.2
nmap-4.20
nspr-4.6.7
nss-3.11.7
openoffice-2.2.1p0
p5-Text-Iconv-1.4
p7zip-4.47
p7zip-rar-4.47
pango-1.16.4
pcre-7.1
pidgin-2.0.1p0-gtkspell
png-1.2.18
poppler-0.5.4p1
popt-1.7p0
pptp-1.7.1
procmail-3.22p2
pstree-2.27
py-Numeric-23.1p1
py-cairo-1.4.0
py-gobject-2.13.1
py-gtk2-2.10.4
py-iconvcodec-1.1.2p0
python-2.4.4p4
python-expat-2.4.4p4
qdbm-1.8.75
quake-20000101p3-sdl
quake2-0.3p3
rxvt-2.7.10p2
scintilla-1.74
scite-1.74
screen-4.0.3p0
scrollkeeper-0.3.14p3
sdl-1.2.9p7-sun
shared-mime-info-0.21p0
silc-toolkit-1.0.2p1
speex-1.2beta2
sqlite3-3.4.1
startup-notification-0.9
subversion-1.4.4
t1lib-5.1.0p0
taglib-1.4p1
teTeX_base-3.0p9
teTeX_base-fmt-3.0p0
teTeX_texmf-3.0p1
texi2html-1.64
tiff-3.8.2p0
toolame-0.2lp1
unzip-5.52
vim-7.1.33-no_x11
w3m-0.5.2-image
wget-1.10.2p0
wxWidgets-gtk2-2.6.3p0
x264-20070325p1
xchm-1.13
xcompmgr-1.1.1p2
xcyrillic-2.0p0
xine-lib-1.1.7p0
xine-ui-0.99.5
xvidcore-1.0.3p0
yasm-0.6.1
zip-2.32
Жить можно. Из исходников был поставлен лишь последний gettext (0.17). Плюс добил библиотеки amr* и скоро возьмусь за пересборку xine-lib, ffmpeg и mplayer, бо что мы имеем в пакетах - в кошерных домах даже свиньям не подают. Причём ffmpeg и mplayer ещё можно как-то пользовать, а вот xine... Xine пришлось поставить для сборки Enlightenment-а на скорую руку. Итоги:
~ > df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/wd2a 9.8G 2.1G 7.3G 22% /
/dev/wd2d 19.2G 10.2G 8.0G 56% /home
/dev/wd2j 31.0G 28.1G 2.8G 91% /mnt/sdb3
/dev/wd2j - есть не что иное, как Fat-опомойка cо скромной аудиоколлекцией. Посмотрим на порно, что заняло 56% от /home?
~ > find /home/sda/source -maxdepth 1 -type d -exec du -sh {} \; | sort -rn
367M /home/sda/source/e17themes
9.0G /home/sda/source
6.5G /home/sda/source/books
2.2G /home/sda/source/compile
и заодно на наши скромные результаты:
~ > du -sh /opt/e17
67.9M /opt/e17
7) Большим сюрпризом оказалось отсутствие mime.types файла в /etc. Оно есть в /var/www/conf/mime.types, есть в /etc/mutt/mime.types (если вы любите mutt также, как люблю его я). Из обеих файлов можно скомпоновать достойный внимания результат после обработки напильником. Поскольку скрипт ставит все компоненты в /opt/e17 (да и удалять потом проще. грохнул каталог и спи спокойно), то бросил симлинк на mime.types и в /opt/e17/etc.
8) Скрипт ноне гарантированно способен на i386/x86-64 архитектуре собрать вам следующие "вкусности" (и уверен, что это не предел, поскольку не тестировал для всего, что лежит в E-cvs):
EFL (Enlightenment Foundation Libraries):eet edb evas ecore embryo imlib2 efreet edje epeg epsilon esmart emotion engrave ewl etk exml enhance imlib2_loaders etk_extra e_dbus
EFL 'applications':e edje_viewer entrance exhibit estickies examine e_utils express elicit iconbar imlib2_tools emphasis expedite extrackt scrot rage
EFL 'e_modules' (помимо стандартных):alarm bling cpu calendar deskshow efm_nav efm_path emu flame forecasts mail net news photo rain screenshot slideshow snow taskbar tclock uptime weather winselector wlan
всвязи с некоей спецификой OpenBSD архитектуры следующие модули требуют лёгкой рихтовки:
cpu, mem, battery, net, wlan, temperature (грубо говоря - все, что имеют дело непосредственно с железом)
9) После доводки секций скрипта по сборке до ума удалось свести количество патчей исходников к минимуму (для устанавливаемых компонентов естественно). Поскольку в html переводить лениво - смотрите лучше в
скрипте:# OpenBSD patchset
case $(uname) in
OpenBSD)
echo "Starting OpenBSD patchset..."
cd $e17_cvs_local_location
if [ "`grep \#include\ \<png\.h\> ./e17/libs/imlib2/src/modules/loaders/loader_png.c`" != "" ] ; then
cat ./e17/libs/imlib2/src/modules/loaders/loader_png.c | sed 's/\#include\ \<png\.h\>/\#include\ \<\/usr\/local\/include\/libpng\/png\.h\>/' > ./loader_png.c.patched
cp ./loader_png.c.patched ./e17/libs/imlib2/src/modules/loaders/loader_png.c
fi
if [ "`grep _POSIX_HOST_NAME_MAX ./e17/apps/e/src/bin/e.h`" = "" ] ; then
echo '#ifndef _POSIX_HOST_NAME_MAX' > ./e.h.patched
echo '#define _POSIX_HOST_NAME_MAX 255' >> ./e.h.patched
echo '#endif' >> ./e.h.patched
cat ./e17/apps/e/src/bin/e.h >> ./e.h.patched
cp ./e.h.patched ./e17/apps/e/src/bin/e.h
fi
if [ "`grep inttypes.h ./e17/libs/evas/src/lib/engines/common/evas_convert_main.c`" = "" ] ; then
echo '#include </png\.h\>' > ./evas_convert_main.c.patched
cat ./e17/libs/evas/src/lib/engines/common/evas_convert_main.c >> ./evas_convert_main.c.patched
cp ./evas_convert_main.c.patched ./e17/libs/evas/src/lib/engines/common/evas_convert_main.c
fi
echo "OpenBSD patchset is DONE. Press Enter."
read a1
;;
esac
как видим из приведённого выше - сие есть не что иное как издержки autotools в чистом виде. В общем всё оказалось не так уж и страшно. Как только rootshell.be будет доступен (сайтик кстати с недавних пор переехал на OpenBSD платформу) - выложу скрипт version="0.7.0.1". Кому "в Париж по делу срочно" - мыльте, закину.
Hint: ежели опыта маловато, а попробовать таки хоцца - качайте заодно и диск Frenzy - он спасёт отцов демократии в критические дни. Обычно хватает boot -s на промпте :).
10)
Let It Be! Just Let It Be!
и махонький совет на прощание, коли позволите: отключите Java и Java-Script в настройках браузера...