11:03 

Все через задницу...

... кроме клизмы. Для того, чтобы переименовать контроллер домена в MS AD надо:
netdomcomputername текущее_имя_компьютера /add:новое_имя_компьютера
netdomcomputername текущее_имя_компьютера /makeprimary:новое_имя_компьютера
netdomcomputername новое_имя_компьютера /remove:старое_имя_компьютера

Но если контроллер домена у вас единственный, то... вам нужно установить второй контроллер домена "После чего задача сводится к предыдущему варианту"(Ц) анекдот после чего задача нихрена не сводится к предыдущему варианту, не-ееет. Technet предлагает передать роли FSMO новому серверу, закинуть туда GC, понизить старый DC до состояния обычного сервера, переименовать его, и проделать всю процедуру в обратном порядке.
ОК. Что при этом делать с DNS, зоны которого интегрированы в AD? Поднимать DNS на "новом DC"? Таки не вариант, ибо он просит поставить диск, а физически сервак в тех еще долбенях... ОК, выносим зоны из AD, поднимаем, передаем, реплицируем, начинаем понижать... ужас-караул! Зоны только на нашем серваке, они нифига не реплицировались, мы все умрем! Формать-вашу-С:-комплит! Реплицирую ручками через ntdsutil. Понижаю сервак до простого сервера, ребут... а он, с-сссобака серая, не "ложиться" - все службы помЭрли, nmap пишет большую дулю, а пинги идут. А сервак, повторяю, в долбенях. Перемать-мать-мать.
Утром физический ребут - все ок. Переименуем, повышаем, передаем, реплицируем - все ОК. Начинаем понижать временного бедолагу. dcpromo - фига-с-два! Опять ругаемся на зоны в AD, которые нифига не реплицированы. Replmon - все ОК. С-сссзззаррраза! dcpromo /forceremoval + dcdiag /fix + ntdsutil = день-ночь-сутки-прочь.
Вгоняем зоны по новой в AD (Безопасных обновлений для), ставим Identity Management for Unix, IAS и начинаем, наконец-то, работать...

@настроение: Повбывал бы!

@темы: Работа

12:48 

Следующий well-known...

... способ интеграции с AD состоит в расширении схемы домена при помощи SFU (Для windows 2000(3)S, для 2003R2 - SUA, в 2008 вообще ничего ставить не нужно, нужно включить роль "Identity manager for unix") - "спасибо М-цопту за стандартизацию процесса", установке и настроке pam-и-nss_ldap.
Ну, надо, так надо - ставим SF(X) в виндах, edit'им юзверей, раздаем им необходимые параметры (Если юзверей много - проще скриптом, был у меня где-то выше пример работы С), создаем нового пользователя для bind'а к LDAP'у (Имя пользователя - на ангельской мове, чтобы с unicode'ом в cn'е не сталкиваться), задаем пассворду посекьюрней (Один черт, в плэйнтексте в файлике лежать будет ))) закидываем бедолагу в группу domain guests, вышвыриваем из 'domain users' (Той самой секурности для) - и с виндами покончено.
На никсах - ставим pam_ldap, nss_ldap, nscd (Не обязательно, но сильно-сильно желательно). Создаем в нужном месте (Поскольку PADL'овский ldap.conf с openldap'овским совпаают не во всем, нехудо бы при компиляции задать какой-нибудь левый путь для конфига - от греха подальше) ldap.conf плюс-минус следующего содержания:
uri ldap://наш_сервер/
base dc=наш,dc=домен
ldap_version 3
binddn наш_юзер@наш_домен
bindpw пассворда, соответственно
scope sub
pam_login_attribute msSFU30Name
pam_password ad
nss_base_passwd cn=куда_сложили,dc=наш,dc=домен?sub?(&(!(useraccountcontrol=514)(mail=*) #Отключаем вывод disabled-пользователей, выводим только пользователей с указанной электронной почтой.
nss_base_group cn=куда_сложили,dc=наш,dc=домен?sub
nss_map_objectclass posixAccount User
nss_map_attribute uid msSFU30Name
nss_map_attribute uidNumber msSFU30UidNumber
nss_map_attribute gidNumber msSFU30GidNumber
nss_override_attribute_value loginShell '/bin/nologin' #Писать nologin в качестве соответствующего атрибута в AD может быть не совсем удобно - хрен знает, может в этой системе он 'nologin', а в соседней как раз нормальный юзверь? Ну или просто nologin не в /bin'е лежит ;). Так что - аккуратненько override'им под наши нужды.
nss_ьфз_attribute homeDirectory unixHomeDirectory #А вот тут override'ить уже не выйдет - а жаль. Придется, например, ln'ить /home на /var/mail - КОСТЫЛЬ! 0:)
nss_map_attribute gecos name
nss_map_attribute userPassword msSFU30Password
Правим /etc/nsswitch.conf:
passwd files cache ldap
group files cache ldap
Правим /etc/nscd.conf:
enable-cache passwd yes
enable-cache group yes
Правим pam-файл, вместо pam_ldap'а в auth вполне можно использовать тот же pam_krb5, ибо нефиг %).
Стартуем nscd, делаем getent passwd, работаем :).
Потенциальные грабли решения:
1) ldap.conf'овский override не поддерживает шаблоны, а использовать одни и те же значения на всех машинах сети может быть не слишком удобно. Предполагаемый костыль - расширять схему доп. аттрибутами и map'пить в разных серверах разные.
2) Не понятно, как быть с почтовыми псевдонимами - вести стандартный aliases.db ручками - таки костыль ).

Способ, в общем-то (Ну, хорошо - более, чем!) годный и в случае больших инсталляций (Несколько серверов + ...надцать рабочих станций под разл. рода *nix'ами) нечего лучше и искать не надо (Один раз расширил схему, один раз смастерил конфиги а потом знай-раскидывай их по нужным местам) но для "адын, савсэм адын" сервер хотелось бы что-нибудь попроще.

@темы: Работа

10:50 

Как известно, каждая проблема имеет решение -

- простое, понятное - и неправильное ;). Вот понадобился вам почтовый (SMTP, для ясности ;)) сервер с интеграцией в AD - родной виндовый, ессно, ффтопку, Sendmail туда же (Программа, конфиги которой нуждаются в компиляции существовать, имхо, не должна!) Courier MTA, кнечно, просто великолепно, но Maildir у них какой-то... подозрительный, Exim вы (Ну хорошо, я!) не знаете - "на трубе" остался Postfix.

Итак, что же первым приходит в голову при словах "интеграция в AD"? Правильно, samba winbind. Ставим postfix с sasl2, sasl2 с saslauthd, samba с AD и winbind, конфигуряем smb.conf:
[global]
security = ADS
workgroup =
realm =
password server = *
encrypt passwords = yes
winbind use default domain = yes
idmap uid = 10000-20000 (Кому надо, можно и больше)
idmap gid = 10000-20000
template shell = /bin/false
template homedir = /var/mail/%U
правим krb5.conf:
[realms]
(НАШЕ НЕЧТО) = {
kdc =
}
[domain_realm]
.(наше нечто) = (НАШЕ НЕЧТО)
Стартуем winbind, net ads join -U (admin user) -S (DC), проверяем wbinfo -u, если работает - правим nsswitch.conf - passwd = files, winbind, group = files, winbind. Проверяем id (доменный пользователь) - вот, собссна, и все.
Настраиваем saslauthd: создаем в нужном месте (Platform-specific) файлик smtp следующего содержания:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
и запускаем saslauthd с флагом '-a pam'.
Создаем pam-файл для winbind'а (Место расположения опять таки, depend on) с именем smtp, закидываем туда 'auth required pam_winbind.so', проверяем: testsaslauthd -u (доменный пользователь) -p (пароль, ага, прям тут) -s smtp, если ОК, то можно переходить к собственно, postfix'у.
Тут, кстати, тоже ничего сложного:
Вместо permit mynetworks пишем permit_sasl_authentificated, в local_recipient/relay_map 'unix:' меняем (Кому нужно, ага - у остальных и так стоит) на 'proxy: unix' (Ибо нефиг всяким там постфиксям к особо важным файлам напрямую лезть, пусть как все соответствующие системные вызовы используют - заодним и, хе-хе! winbind работать начнет). Стартуем postfix, проверяем.

Просто, не правда ли? Может, не "с закрытыми глазами", но "через полчаса" заработает - почему же так не стоит делать? Допустим, созданный таким образом сотрудник уходит в длительный неоплачиваемый отпуск - что делает администратор домена в этом случае? Правильно, блокирует учетную запись, а что делает winbind со значением UserAccountControl? Правильно, забивает :). Т.е. войти в систему пользователь не сможет, оправлять почту - тоже, а вот приходить она очень даже будет. А если таких пользователей сотни две? Непорядок. А что делать с т.н. "системными" пользователями (Built-in, или самолично созданными для, например, имперсонации служб), которые вроде как почту получать не должны? Winbind, тут, увы, не помошник. Конечно, "не так трудно" завести отдельную карту со списком "запрещенных" пользователей - но нафига нам плодить очередные костыли, там, где можно обойтись без них?
Вот и я думаю, что незачем. Вооружившись этим знанием переходим...
Впрочем, "продолжение в следующей серии" :)

@темы: Работа

10:58 

Сильнее всего меня в моей работе раздражают...

... ситуации, в которых ты "все сделал правильно" но это не хрена не помогает, т.к. "кто-то до тебя где-то что-то не подумал".
Ставлю amavisd-new из портов. УБИРАЮ галку SpamAsassin (Терпеть ненавижу эвристику в таких делах - куча геморроя с настройками и на выходе один черт, потерянные письма), запускаю - хренась! Не могу запуститься, ибо в модуле SA нет пути к SpamAssassin.pm. Ну нако-оооой он тебе, а? Ты ж "типа-без-него" скомпилен? А вот! И приходится лезть в этот трижды долбанный перловый скрипт и выпиливать там "единственный подключенный спам-фильтр". "Не подумали чутка", ога.
Ставлю Openfire + Mysql (Про Mysql я уже говорил многое и разное :), добавить тут нечего, но с SQLITE'ом оно "не взлетело" (Достаточно, кстати, интересным образом, но об этом позже)), в URI для jdbc завожу хост-имя-базу, завожу в базу пользователя, даю ему права цепляться с локалхоста, запускаю... авотхрен! В логах видно, что что ты ей в качестве хоста не пиши, а цепляется оно по fqdn хоста. Ну вот нафига-аааа вообще спрашивать лишние данные, если юзать их не собираешься? Ок, пофиксил пользователя.
В третьей конторе стоит пейратский на всю бОшку Kerio Mail Server с интегреным LDAP'ом для "адресной книги" (Что я думаю о типа-админах, которым одного LDAP'a (Того, что в AD, ага) "не хватает" - здесь приводить не стану). ОК. Переименовываем пользователя во внутренней DB... а во встроенном же LDAP'е юзверь не меняется!!! Чиооооордт! Что я делаю не так, а?

И вот такая дребедень - целый день и каждый день. "Все сделано правильно, но ничего не работает", пилите дальше.

@темы: Работа, Жизнь

14:08 

Не так давно...

...возмущался я головожопостью отдельных представителей роду-племени одминского. Так вот, судя по всему - зря. Это не "он дурак", это мода такая. Гнездо, ага. Оказывается, есть на бескрайних просторах нашей родины ПРОВАЙДЕР, который поступает ровно таким образом: выдает каждому клиенту БЕЛЫЙ IP-адрес из пренадлежащего ему пула, прописывает (Ручками, ОГА - какой-такой Dynamic Hosts Configuration Protocol, о чем это вы? Мы тут программку на Delphi'ях нарисовали, она все-все сама сделает! Ах, да! Для Кор-по-ра-тив-ных клиентов мы можем предоставить 130 D-Link!) DNS + пяток маршрутов (До DNS'а, PPTP-Access Concentrator'ов и пр) - а потом поднимает PPTP-туннель, выдает новый IPшник и NAT'ит весь трафик через новый же шлюз. Profit!
А то, что до этих самых "белых" IP-шников нельзя достучаться извне, то, что долбанный NAT знать не знает и знать не хочет о всяких-разных PPTP/L2TP/IPSec pass-through, то, что дебужить эту ситуацию со стороны чистейшей воды сю-ууур! - это такие, право, мелочи... "Работает же все!"(Ц) Воистину, более мммм... своеобразных решений я еще не видел.

Ну и как обычно, о вечном. Очередные грабли - nmap не больно-то дружит с ngX интерфейсами. Из-под юзера nmap - ок. Делаем nmap -sS - даешь повышение привелегий. Запускаем nmap от root'а... упс!
WARNING: Unable to find appropriate route to ...
ifconfig + netstat -nr - все ОК, роуты есть, интерфейс жив. ping - есть. А вот работать отказывается.
Попытка скормить nmap'у нужный интерфейс при помощи -e ngX успехом так же не увенчалась. Гугль, тоже не обрадовал - мол, да, глюк есть, вроде как есть даже патч - но... с 2006 так и не принят. Абыдна, вай!

@настроение: Повбывал бы!

@темы: FreeBSD, Жизнь, Работа

13:52 

На...

... невесть каком дне дошли руки прикрутить к фрюхе flash - традицьённым способом, через эмуляцию linux + nspluginwrapper. В процессе "внезапно"(ТМ) выяснилось, что для LINUXULATOR'а кроме options COMPAT_FREEBSD32 и options COMPAT_LINUX32 (Что, в общем-то логично) нужен еще options COMPAT_FREEBSD7 о чем ни одна зар-раза во всем гугле ни словом не обмолвилась, а если учесть, что при сборке ядра я предпочитаю выпиливать все "ненужное"... в общем, собиралось оно весь вечер да еще полночи методом "околонаучного тыка" (С четвертой попытки угадал, однако!). На этом фоне "стаслые и ужаслые" предупреждения о том, что в linux-f10-pango "есть известные уязвимости" можно и вовсе не упоминать ).
Заодним, "чтоб два раза не ходить", выпилил из ядра поддержку АТА-устройств, заменив все на device ahci + options ATA_CAM. Погорячился, разумеется - SATA'шный винт работает краше прежнего (NCQ включено, ага. На паре find'ов + make index даже заметно... вроде как), а вот IDE'шный ноутбучный CDROM того... потерялся. Пришлось пересобирать ядро еще раз, добавив туда device atacore, device atapci и device atapicam (Унфикации для ;)).
Еще из маленких, но ОЧЕНЬ приятных бонусов - options VESA + options SC_PIXEL_MODE для amd64 архитектуры. В 8.0, насколько я помню, не было, а в 8.1 - от оно, "1280хсколько-то в консоли - это реально!" или "Зачем нам X'ы? Наc и так неплохо кормят! mplayer в VESA вполне даже смотрится, дас-ссс...
Из НЕприятного - в очередной раз (ТМ) попробовал собрать X'ы с HAL'ом и DBUS'ом. Не-а. Один черт, "налысо не нравится - стриги "под канадку". Система "потеряла" USB'шную беспроводную мышь - lshal показывает ресивер, а остальное - хрен вам. Вроде в прошлый раз такой траблы не было... ну или мне было сильно не до нее )))

@настроение: А в остальном, прекрасная маркиза...

@темы: FreeBSD, Жизнь

14:20 

Все-таки, программисты 1С...

... очень, очень, очень странные люди. То ли сам инструмент тому виной (См. выше и не только), то ли область деятельности (Страшней нашей бухгалтерии - только Интернет после ядерной войны - и то не факт!) постаралась, то ли "общение-с-бухгалтерами-пенсионного возраста" повлияло, но факт налицо.
Задача - на регулярной основе выгружать данные из клиент-серверной программы (Сервер на СУБД Firebird) в 1с. 1с - 8.1. Реляционная БД. 1С-ка. Все просто, да? Ну там (ODBC-ADO-OLE)+SQL=1C, драйверов для FB в сети в количестве, примеров кода (Именно для 1ески) - хоть мм-ммм... ешь, чего еще-то?
Но нет, мы легких путей не ищем! А дайте нам локальную копию БД и мы в монопольном режиме, как учили в далеком 9х-м году на Delphi ее распотрошим. Ручками, ога. Как файл. В обход SQL-сервера. "Зачем нам кузнец? Нам кузнец не нужен!"(С)
Клиент-серверное приложение. Сильно больше одного пользователя, причем в нескольких городах. Копия базы. Нет, Firebird умеет делать консистентные бэкапы "на ходу", умеет он и создавать новые БД из этих дампов, но блин-блин-блин! FB стоит на виндах (В общем-то, дальше можно и не продолжать). В режиме SS, т.е. больше одного проца он не получит никак, хоть на 8-ми вёдерную машину его водрузи, а бэкап хотя бы пары гигов со всеми чексуммингами и прочей мутотенью - дело мягко говоря, не слишком быстрое. "Есть мнение"(ТМ), что в скором времени конторе потребуется "новый, мощный сервер"(ТМ) :shuffle:

@темы: Работа

09:47 

Сделал очередную...

... (Вторую, если быть точным ;)) попытку познакомиться с четвертыми кедами. Не помню уже, что мне не понравилось в первый раз, но сейчас первым (А так же вторым, третьим, четвертым и пятым!) впечатлением было "Вааааау! Оооо! Аааа! Ну вы, блин! Это ж надо ж!" - усе сияет, переливается, движется и пэ рэ, все красивенько, анимированньенько и местами даже вполне удобно. Desktop с rooms'ами, виджетики, панель - 7-ка однозначно отдыхает следующие года три, "родные" приложения может и не "лучшие в своем классе", но вполне работают - казалось бы, ляпота... если на нее любоваться, а вот если начать работать...
Konqueror - хороший браузер. Действительно, хороший - мне оч-чень понравился (Не Crome(ium) - нет, но явно резвей-удобней FF) - вот только - сюрпри-иииз! Работать с HTTPS-proxy с авторизацией отказался кат-тегорически, от слова "совсем". В TCPDump'е видно, что на "proxy authentification required' "завоеватель" отвечает ACK'ом... и инициирует новую сессию с. HTTP-прокси с авторизацией работает нормально.
Через полтора часа работы dolphin начал жрать 20% проца. Почему-зачем? Б-г знает. Впрочем, больше оно не повторялось...
Kopete - хороший ПЛОХОЙ im-клиент, но в общем-то, настраивается и работает. Вот только в процессе настроек - умудряется зависать и подтормаживать (Аж два разА, ага) - в работе ничего подобного не было, но "осадок остался".
Потом навернулся d-bus (И почему я ну ни капельки не удивлен, а?) - а вместе с ним и все остальное. Опять таки, в следующие три дня ничего подобного не было - хотя отдельные приложения падали, да.
Kmail по ощущениям с третьей версии изменился не сильно и ничем не удивил - есть. Работает.
Amarok - аналогично. Малость лучше "Windows Media Player'а" по usability, но все равно - "не нескафе".
Koffice'у все еще не хватает поддержки MS'овских форматов (Эт-та понятно, но хотя бы rtf к Kwrite'у могли бы и прикрутить!).
Konsole - традиционно великолепна, xterm (Бууаа-га-га!) рядом не валялся.
Ну и тадэ и та пэ.
В общем, "Роисся, вперде!" - в смысле, "впереди планеты всей, но глю-ууучное, шотрындец". Работать можно, но, но, но...
P.S. - Версия KDE - 4.4.3, дистрибутив - Mandriva 2010.1 (Spring) на virtualbox'е.

@темы: Жизнь, Работа

09:45 

О граблях, вестимо.

"Третьего дня"(ТМ) решил я обновить систему на недавно вышедшую 8.1 - на виртуальной машинке все вроде как ОК, можно и на личном букваре поэксперементировать, ага. Правим sup-файл для дерева сырцов, обновляем дерево, make buildworld-kernel-installworld-kernel, НЕ ЗАБЫВАЕМ (Оттож!) обновить gptzfsboot в первой партиции, ребутимся... авотхрен!
error 1 lba 48
error 1 lba 1
No ZFS pools located, can't boot
Хм. Странно. Впрочем... в 8.1 ZFS 14 версии, а в 8-ке - 13, может по тому и не находит? Надо бы версию пула обновить, ага. А пока - установим старый gptzfsboot + копирнем скомпиленый с ZFS'ом loader от 8-ки. Работает. За десять минут до конца рабочего дня - zpool upgrade -a, gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ad4, ребут.
error 1 lba 48
error 1 lba 1
No ZFS pools located, can't boot
Хм. По проторенной дорожке - старый лоадер... авотхрен! Версия should be 13, ага. Приплыли. Смотрим, куда именно. Google ничего сильно вразумительного не говорит (Большая часть камрадов тупо забыла проинсталлить gptzfsboot "куда надо", меньшая - ловит кайф с current-веткой и сообщает, что уж в RELEASE'е-то все ОК) - тындекс и спрашивать бесполезно, придется ручками.
ls /usr/src/sys/boot/i386/gptzfsboot - никаких сырцов, один Makefile, в котором прописана статическая линковка gptboot + zfsboot + btx + еще какая-то хрень. Ага. fgrep'ом смотрим, где именно сидят сообщения об ошибках - сидят они в zfsboot.c, вот только к этому самому .c прилагается еще и .S, написанный на ассемблере. Мать-мать-мать. Начинаем смотреть - main вызывает probe_drive(), probe_drive() вызывает drvread(), там инициализируются несколько регистров, вызывается "ассемблерная вставка" - и выдается сообщение об ошибке. Два разА, ага. Дело ясное, что дело темное.
Лезем на svn, начинаем читать комментарии - что и зачем джамшутили в этом самом zfsboot.c - создается впечатление, что проблема вызвана включением 64х битной LBA вместо старой 48-ми битной, но как с этим бороться... версия ДО этого самого включения без сильномогучего бубна не собирается, что и как "править ручками" - хрен знает... трабла, в общем.
Неразрешимая? А вот и нет ). "Совершенно случайно" у меня в букваре обнаружилась SD-карта на 1 гиг, с которой комп вроде как даже соглашается грузиться - форматим ее под UFS2, копируем туда /boot, gpart'ом же ставим MBR, меняем /etc/fstab, ребутимся, меняем boot sequence, ребутимся... и работаем.
А вот что делать с "боевыми" серверами в которых карт-ридеров с "совершенно ненужными" SD'шками нет - Б-г весть. Экспериментировать как-то того... желания нет.

@темы: Работа, FreeBSD

16:02 

Ненависти псто

Что делает хороший программист, которому нужно написать переносимое (Кроссплатформенное!) клиент-серверное приложение? Пишет с использованием стандарта SQL XXX, всю "лишнюю" функциональность переносит на клиент, использует подключаемые модули и пэ рэ. Оно работает.
Что делает для решения этой задачи "средний" программист? Рисует на каждую версию БД отдельную версию своей супер-софтины. Кривенько, да - но тоже работает.
А еще есть Программисты 1С - эти "легким движением руки" ("Оторву у кошка хвостик - будет это бегемот"(С), ага) - патчат СУБД!!! Превратим Postgres в MS SQL, ога. Сделаем из классического версионника блокировочник. А потом - накатим еще один патч, ибо сюрпра-ааайз! эти самые "блокировки", оказывается, конфликтуют с родным автовакумом. Повбывал бы, ей-ктулху.

@темы: Жизнь

11:17 

Для себя...

... чтобы не забыть:

Чтобы смонтировать ISO-image во фрюхе надо не '-o loop' в mount воткнуть, как в этих ваших linux'ах, а:
Создать виртуальную девайсину с приаттаченным файлом:
mdconfig -a -t vnode -f /
А потом уже смонтировать получившийся девайс штатными средствами:
mount_cd9660 /dev/mdX /mnt
И, да - после не забыть задропать лишнее:
mdconfig -d -u <номер девайса>.

Для рулежки удаленным сервером с, например, koi8-r из X'ового терминала с той же UTF8 вовсе не обязательно перенастраивать кодировку - проще и удобней воспользоваться командой luit - например, так:
luit -encoding 'koi8-r' ssh -i / user@server.

Забавные грабли - два DC, один на 2003R2, другой на 2008 сервере, меняем в krb5.conf'е kdc с 2003 на 2008 сервак и по kinit'у получаем "kinit: krb5_get_init_creds: Response too big for UDP, retry with TCP" - сюрпрайз, сюрпрайз! Ну, TCP так TCP - пишем в krb5.conf'e kdc = tcp/DC и едем дальше, но все же странно усе это...

@темы: FreeBSD, Жизнь

20:02 

Кто бы мог подумать...

... Что кофейная гуща и картофельные очистки "отмывают жир даже в холодной воде"? Положительно, надо брать патент!

@темы: Жизнь

16:15 

Пулеметное...

... продолжение. Сошелся с самим собой на варианте "хост-система + все нужное для работы (Разновсяческие nmap'ы, rsync'и, openvpn'ы, безгуевый virtualbox и прочая-разная шелупонь), голые X-ы - и, в общем-то, все. А всякие фурифоксы с опенопицами (Свят-свят-свят! Как подумаю - в дрожь бросает!) выкинуты в отдельные JAIL'ы в отдельной подсети, ко всему этому прикручены ipfw+nat - и, в общем-то, все. В хост-системе нет лишних пакетов, зависимостей, монструЁзных framework'ов, а на JAIL'ы мне по большому счету плевать - ZFS'ные snapshut'ы сняты, весь софт собирается в package'ы в отедльном JAIL'е - переставить все это "туда-обратно", случись желание дело ну... не пяти минут, но пары часов уж точно.
В процессе пришлось лечить кучу мелкого геморроя (Ну там в первый раз в жизни с xauth'ом столкнулся, для "консолидации" шрифтов пришлось xfontserver, по всем jail'ам ssh-ключи раскидывать ну и так далее) - но когда без того обходилось? Кооллеги, она, втроем qip 2010 побороть не могут ))
В общем и целом, система в рабочем состоянии и "концептуально" состояние это меня более чем вполне устраивает - осталось только утрясти некоторые "частности" - ну там какой WM прописать на ПМЖ, каким IM-клиентом пользоваться (Чегой-то Pidgin меня ну капитально "не вставляет" - без gstreamer'а он под фрюхой таперя не собирается - патч вроде бы есть, но в дерево портов еще не попал + под мою конфигу его ручками рихтовать пришлось; за ним тянется glib-20, который, опять же, не собирается как следует - в последней примерно, тысяче, строк кто-то пропустил "fi" ))) ну и прочая-разная), что со "смотрелками" делать (Монструозные Okular\Evince опять же...) - в общем, на пару недель возни еще хватит - а там еще чего-нибудь придумаю... :shuffle:

@темы: Жизнь, Вендекапец!, FreeBSD

16:33 

Как ни собирай систему...

... один хрен, пулемет получится. Т.е. или половина гнома, или половина KDE встанет обязательно. Вот скажите мне на милость, какого мужского полового органа в чистых иксах делает dbus, hal и прочая разная? Вот и я не знаю. Живет и все тут. xorg.conf править, видимо, не комильфо, даешь "все сразу и автоматом", ога. С конфигом в виде xml-файла. Повбывал бы только за это. Нет, оно, в принципе, выпиливается, но... сцуко, куда они freetype дели? Ах, в сами иксы вкомпилили? Ога, ога ма-лад-цы! Вот только с чего оно после этого работать перестало, а? Ах, fontconfig смотреть? С fonts.conf xml'ным же? Ну спа-аасиба, ребят. Обрадовали. Один хрен, не работает. А товаристча, который дефолтовое поведение Xorg'а на "черный экран" изменил я бы лично м-мммм... приголубил. Старая сетка с курсором, тапереча, с помощью -retro показывается, о чем, кстати, в манах ни полслова нет. Молодые якодзуны, видимо, по "черному экрану" понимают, что иксы настроены. А, да! Они же их не нестраивают, у них dbus есть!
То, что firefox на gtk+ написано - и хрен бы с ним, но скажите мне, каког (см. выше) для долбанного djvu-плагина нужен полный QT, а? Два, блин, гига! 150+ метров сырцов! Нет, оно кнечно крася-ааава нарисовано, собственный просмотрщик, все дела, но для _браузерного плагина_-то нахрена??? Не-по-ни-ма-ю. А в FBReader'е оно ЗАЧЕМ? Эт же ж блин, xml зипованный! Его смотреть - Python + TK - ну заглаза! Нееет, даешь свистоперделки тоннами!
Кондовый afterstep и тот, ёлкала-палкала для сборки полгнома вытянул. Ей-ктулху, проще этот самый гном поставить, чем без него обойтись. Один хрен, так или иначе а в системе это унылое гумно всплывет.

@темы: FreeBSD, Вендекапец!

16:21 

Итак, ZFS-root + GPT...

.... на FreeBSD 8.0 таки заработал, хоть и сильно не "from the box" :). В общем-то, все просто - сносим разметку с помощью gpart delete -i [geom] && gpart destroy [geom], создаем GPT-разметку gpart create -s GPT [geom]. Записываем PMBR в целях обратной совместимости (И не только - у меня, например, не EFI, а обычный BIOS) - gpart bootcode -b /путь-к-pmbr (/boot/pmbr в установленной системе, а так - куда положишь, там и будет). Создаем раздельчик для gptzfsboot - gpart add -s 64 -t freebsd-boot [geom] && gpart bootcode -p /путь-к-gptzfsboot (Там же). Создаем раздел для ZFS - gpart add -t freebsd-zfs -l [метка] [geom] (Создавать отдельный 4х гиговый swap для kernel dump'ов, имхо, жирно будет). На этом с GPT закончено.
Дальше - ZFS: Грузим модули ядра kldload /mnt2/boot/kernel/opensolaris.ko && kldload /mnt2/boot/kernel/zfs.ko (/mnt2 -это по тому, что я с fixit'а все это делаю, а так - куда захочешь, туда и клади, а вот порядок загрузки - важен. zfs.ko без opensolaris'a не грузится с ну оооочень "понятным" объяснением "Exec fromat error"). mkdir /boot/zfs (Чтобы потом export-import'ом кэш не создавать) && zpool create [как вы яхту назовете] /dev/gpt/метка (Использование label'ов, имхо, очень, очень и очень хорошая привычка - а то создал бы я zpool на ad4, а ядро у меня - сюрприз, сюрприз! БЕЗ ATA_STATIC_NUMBERING'а - и что?) && zpool set bootfs=[имя] [имя]. zfs create /(usr|home|var|что-душа-просит) - и можно ставить систему (Вот тут-то я и облажался по полной - систему поставил с дистрибутивного диска (install.sh по каталогам из /dist/8.0-RELEASE), а сорцы воткнул обновленные, с бэкапа - дети, НЕ ДЕЛАЙТЕ так!). Закидываем в loader.conf новоустановленной системы zfs_enable="YES" vfs.root.mountfrom="zfs:[имя пула]", а в rc.conf - zfs_enable="YES". chroot'имся в пул, задаем пароль для root'а и собираем загрузчик с поддержкой zfs. ТеореХтически это можно сделать там же - echo 'LOADER_ZFS_SUPPORT=YES' > /etc/make.conf && export DESTDIR=""; cd /usr/src/sys/boot && make obj && make depend && make && cd ./i386/loader && make install, но на практике загрузчик у меня не собрался от слова "совсем". Есть ощущение, что из-за обновленных сырцов (make tools, ага ), но может и что другое постаралось. Рабочей системы под рукой не нашлось, так что пришлось сносить все вышесделанное и ставить freebsd в минимальной конфигурации. (Тут я сделал вторую ошибку - решил, что достаточно будет сделать make buid|install kernel и скопировать /boot в куда надо. Авотфиг! В результате "все сносить" пришлось еще раз ). Но - долго ли, коротко, а загрузчик я собрал.
Осталось всего-ничего: воткнуть забытый swap ;) и прописать mountpoint'ы:
zfs create -V [сколько надо] [пул]/[имя] && zfs set org.freebsd:swap=on [пул]/[фс] && zfs set checksum=off [пул]/[фс]
zfs set mountpoint=legacy [пул]
zfs set mountpoint [пул]/[имя] - для всех созданных FS.
Ну и, в общем-то, все. Ребутимся, неспеша пишем fstab (TMPFS для /tmp, NULLFS для jail'ов, флешки-сд-карты и пр), копируем нужное из бэкапа - в общем, работаем!

@темы: FreeBSD, Вендекапец!, Жизнь

17:13 

Наступил на целую кучу грабель...

... с ZFS boot'ом (Кто бы мог подумать, что порядок загрузки модулей opensolaris.ko и zfs.ko играет роль, а? При том, что в "loader prompt'е" zfs.ko вполне себе грузился...). Добила меня необходимость собирать loader из chroot'а (Ну, да, ну да - вумные прошареные люди сделали это СИЛЬНО до, честь им и хвала), одно радует - скилл растет.

@темы: FreeBSD, Вендекапец!, Жизнь, Работа

16:47 

Хроника свободного падения

"Первый звоночек" прозвенел еще на этапе установки DragonflyBSD - система отказалась грузиться с ACPI. В общем-то не особый криминал в случае ноутбука - кто его знает, что сумел понапихать производитель, но все же выводы сделать стоило. Впрочем, без acpi.ko система вполне резвенько загрузилась и установилась. Сырцы с деревом pkgsrc на вид встали тоже без проблем - cd /usr; make help; make src-create && make pkgsrc-create - сравните, что называется с процессом получения последней версии сырцов во FreeBSD (Создание sup-файла, ага) - вот только результат оказался м-мммм... инетересным. Полученная таким образом копия дерева относилась к ветке "development" и представляла собой "dayly snapshut" со всеми вытекающими.
Попытка задать CPUTYPE=p4 в make.conf (Значение бралось из ./defaults.make.conf) к успеху не привело - система наотрез отказалась воспринимать "p4", а все остальные значения "не подходят для х64" - нет, мне не трудно посмотреть man gcc и найти подходящее значение для CPUTYPE, н-но все же...
Далее, ядро отказалось собираться без включенного debug'а. Разобрать что ему, убогому, надо удалось попытки так с седьмой. Впрочем, результат вполне даже был - acpi заработал, а вот беспроводная сеть, mmc-картридер bluetooth и прочие радости "остались за кадром". Л-ладно. П-ппереживем, подумал я, приходя на работу.
Следующие грабли нашлись в самопоставленном же конторском proxy - по умолчанию bmake для извлечения исходников использует ftp, который м-ммм... на мой взгляд, не вполне адекватно работает с proxy. Пришлось едитить mk.conf и раскидывать переменные (HTTP|FTP)_PROXY_(AUTH). После замены ftp на fetch оно даже заработало, но сильно легче с того не стало. Не знаю, кто расставлял зависимости в Makefile'ах pkgsrc но с ориентацией у него явные не лады. Каким образом для ipython'а могут потребоваться zope, twisted, python 2.4 (В добавок к собственно, 2.6, ради которого все это и затевалось), gtk и QT (...!!!!) хоть убей, не понимаю. Единственный найденный мною "на коленке" способ все это конфигурять - ручное редактирование Makefile'а меня как-то... не вполне устраивает. Впрочем, в остальных пакетах ТАКИХ косяков вроде бы не было (Ага. 2/3 энторнетов поставились вместе с ipython'ом). Впрочем, вру - bison отказался работать с DBSD'шным sheduler'ом и, в общем-то, все.
Из крупных косяков - невозможность поставить ntfs-3g, ибо FUSE в DBSD отсутствует как класс. Окончательную точку в эксперименте поставил роняющий ядро модуль smbfs - что совсем уж "в никуда". Попытка завести его с kernel.GENERIC и modules.old к успеху так же не привела, и система была решительно послана в пешее эротическое.
"I'm back in USSR..." - в смысле, даешь FB8x64!

А самое во всем этом обидное - "на вид" HAMMER оказался даже пожалуй лучше, чем "по описаниям" - шустрый, стабильный (Во время экспериментов с acpi/smbfs система падала не раз и не два), с _реальной_ возможность работать со snapshut'ами в "живом" режиме (Revert to snapshut путем копирования его содержимого в нужное место... О май гад! :))... абыдна, вай!

@темы: Вендекапец!, Жизнь, стрекоза и муравей

10:14 

В то время как Все Мировое Сообщество...

... буквально задыхается от нехватки IPv4-адресов и вовсю подумывает о внедрении IPv6 отдельно взятые несознательные представители одминского роду-племени умудряются NAT'ить реальные IP-адреса!!! Досталась недоумку из "муниципального объединения" (Ключевое, по видимому, слово!) цельна подсеть класса С от одного провайдера (С безлимитным трафиком inside) и безлимитный канал "поширее" от другого "...ну он один и удалил"(С) и этот товаристч не придумал ничего лучше, чем пронатить весь трафик от разбросанных по половине города клиентов через "безлимитный" интерфейс. На все вопросы в стиле "А NAT-то тебе НАФИГА?!" - отвечает "так дешевле"(Ц). Policy, мать её, based routing, ага. Настроено не иначе как по "хаутую" с OpenNET'а - впрочем, народ говорит, что это уже аф-ффигеть прогресс, мол раньше-то один non-transparent HTTP-proxy стоял и усе, плавайте как хотите, а сейчас она! даже торренты работают, пусть и "в одну сторону"!
Это ж до какой степени нужно _не понимать_ стек TCP/IP, чтобы такой фигней заниматься, а? Впрочем, товарищ хотя-бы старательный - по первой просьбе быстренько "пробрасывает" порты на нужный сервер, вот только для полноценной работы портов этих надо, да и не все за NAT'ом нормально работает, да с DNS'ом ситуация странная, да службы настраивать через заднее крыльцо приходится, да PKI не вполне понятно как прикручивать, да... Но, в общем-то, все работает, даже странно.

@темы: Работа

16:29 

Итак, почему же именно...

... DragonflyBSD, что в ней такого интересного? На первый взгляд, ничего особенного - BSD она BSD и есть, а вот "унутре у нее неонка" :).
Про модель "легковесных нитей ядра" говорить не буду, ибо не разбираюсь. Об эмуляции системных вызовов с помощью модели портов-сообщений тоже промолчу. "На текущий момент" могу сказать, что по ощущениям на двух ядрах система шевелится чутка порезвее, нежели FreeBSD (Замерял на (кросс)компиляции ядра той же фрюхи).
Потенциальный перенос I/O в userland с распараллеливанием по нитям - штука куда более интересная, но все еще "перспективная", так что тоже в сторону, вместе с переписыванием VFS.
Несколько больший интерес представляют vkernel's - возможность "играться" с ядром системы, запущенным в userland'е без всяких перезагрузок и фатальных последствий в случае неудачи - но поскольку разработка-отладка-тестирование ядра ОС в сферу моих интересов не входит... :shuffle:

Так чего ради огород городить, спрашивается? Есть, есть чего! DragonflyBSD может похвастаться ну о-ооочень интересной файловой системой собственной разработки - HAMMER'ом. При всем обилии перспективных и не очень ;) файловых систем HAMMER вполне даже выделяется. В отличии от большинства своих "перспективных" собратьев HAMMER - потенциально кластерная ФС. В настоящее время от "кластерности" в ней (single-)master-multi-slave репликация (В том числе и сетевая, ага) и, в общем-то, все. Интересно, потенциально ОЧЕНЬ интересно - но для "букваря" не актуально от слова "совсем". А вот "живое" создание snapshut'ов с возможностью получить "живой" доступ к практически любой (Snapshut'ы постепенно удаляются через cron) "версии" ФС - просто фантастика, создание backup'ов путем зипования snapshut'ов - тоже оч-чень приятная вещь, возможность resize'ить ФС тоже не помешает, отсутствие лимитации по числу inode'ов (Ни разу не сталкивался, но сама возможность потенциально напрягала), практическое отсутствие ограничений по размеру (Как самой ФС, так и файлов) уже практически стандарт, мгновенное восстановление после сбоя (Snapsut'ы при каждом sync'е, помним?), CRC всего и вся - навскидку не хватает разве что поддержки ACL, но на букваре я это как-нибудь переживу.

Увы, не обойдется без ложки (Ведерка, если быть честным) дегтя - помимо стандартных BSD'шных косяков придется смириться с тем, что система "under active development" со всеми сопутствующими - то одно сломается, то другое недопочинится, но авось-небось-нихренась, переживем и эту беду.

@темы: Вендекапец!, стрекоза и муравей

15:48 

И еще одни шикарные...

... грабли. Дано: samba в роли PDC. Трэба - закинуть на этот сервер всякое-разное в количестве. Ясен пень, хочется "разложить" все это не абы как, а по разным jail'ам, ибо. Вот только - сюрприз-сюрпри-иииз! Сволочной nmbd привязывается к *.137/8 и штатного способа изменить это поведение у нас нет (Параметры "interffaces", "bind interfaces only" и "socket address" на nmbd не влияют, о чем в man'е и сказано).
Ок, сделаем, как умные люди говорят - перекинем "проблемный" сервис в jail, и пущай там привязывается к чему ему угодно, хе-хе! Сказано - сделано, но, увы! Кто бы мог подумать? )))) Вышеописанное поведение злобного демона, оказывается, имеет под собой Глубокий Смысл - запущенная таким образом samba на отрез отказывается получать broadcast'ы (Что, собственно, в высшей степени логично - хрен тебе, а не доступ к "сырому" интерфейсу изнутри jail'а!). "Штатного" способа собрать samba'у с поддержкой jail'а в портах не обнаружилось.
Тупик? Авотхрен! Запихиваем в соседний jail связку DNS+DHCP (Вроде как даже описывал когда-то), кидаем в smb.conf "wins support = yes" и "dns proxy = yes", пишем в resolv.conf'е адрес соседнего jail'а и раздаем через тот же DHCP samba'у в качестве еще и WINS сервера. Работает!
Для пущего счастья еще бы и службу "computer browser" на всех клиентах посносить, ибо нефиг где попало broadcast'ами мусорить, но, в общем-то, и так сойдет, наверное.

@темы: FreeBSD, Работа

Танец-с-саблями на граблях

главная