Nowy serwerek…

Do firmy przyszedł zamówiony nowy serwerek — IBM
x226
oraz dwa dyski (UltraSCSI320, 15Kobr.). Streamer, zamówiony
razem z serwerem, na razie nie dotarł. Serwer ma służyć do trzymania naszych
najważniejszych baz i sam z siebie raczej nie udostępniać żadnych usług dla
ludzi z zewnątrz. Chciałbym, żeby to była maszyna pewna, dlatego markowy
serwer i dwa dyski na RAID.

W pierwszej chwili po włączeniu zaskoczył mnie sprzętowy RAID
(AIC7902 z HostRAID). Nie zamawiając serwer
myślałem o software’owym, a w specyfikacji serwera nie zauważyłem wzmianki o
sprzętowym. Założyłem więc RAID1 narzędziami z BIOSu kontrolera i zabrałem się
za instalkę PLD. Pojawiły się dwa problemy: 1. obsługa tego RAIDA 2. obsługa
sieciówki (Broadcom, 1Gbit). Drugi problem (brak obsługi serwerowej sieciówki
w instalatorze) już parę razy przerabiałem i rozwiązałem standardowo —
do serwera wsadziłem pierwszą lepszą kartę jaką znalazłem w firmie (tym razem
jakieś ne2k-pci).

Poważnym problemem okazał się ten RAID. Pogooglałem i dowiedziałem się, że
są do tego sterowniki pod Linuksa, ale tylko binarne pod kilka konkretnych
kerneli kilku konkretnych dystrybucji (fe!). Zresztą, na płytkach dołączonych
do serwera też je znalazłem. Adaptec przyznał nawet, że nie
będzie otwartych sterowników do tego („bo nie”, czyli powody prawne itp.).
Może napiszę to wyraźnie, jakby ktoś miał wątpliwości: HostRAID w
AIC7902 to syf!

Na
szczęście AIC7902 jako zwykły kontroler SCSI jest bez
problemy obsługiwany przez kernel z PLD. Wyłączyłem więc
RAIDa w BIOSie i pod RescueCD założyłem programowego (w
instalatorze nie umiałem znaleźć do tego odpowiednich opcji, a poza tym
instalator miał problemy z załadowaniem sterowników do tego
Adapteca). Na tym RAIDzie założyłem potem LVM, a w nim kilka
logicznych wolumenów — mam dość problemów z partycjami założonymi
podczas instalacji zupełnie potem nie pasującymi do potrzeb systemu
produkcyjnego.

Chwilę grozy przeżyłem, gdy zobaczyłem (przy pomocy hdparm
-t
), że te nowe dyski wyciągają jedynie 34MB/s. To mój dwuletni dysk
SCSI jaki mam w domu wyciąga 50MB/s. Ale uznałem, że to tylko jakiś problem z
kernelem w RescueCD, później okazało się, że słusznie. System
zainstalowałem w chroot poldkiem. geninitrd ładnie stworzył
initrd, ze wszystkim co potrzeba do RAIDa, LVM i systemu plików na
/ i system udało się uruchomić prawie za pierwszym podejściem
(tylko w grubie trzeba było konfigurację poprawić).

Bałem się jeszcze o sieciówkę, że będzie problem jak z tym RAIDem, ale
okazało się że otwarte sterowniki na GPL są na płytce dołączonej do serwera, a
także w CVS PLD, więc po prostu je sobie zbudowałem,
zainstalowałem i zadziałały.

Jutro spróbuję zainstalować wszelkie narzędzia do tego serwerka (coś co mi
powie np., że któryś z zasilaczy padł, poda temperaturę, czy co tam IBM do
takich serwerków daje) i zacznę stawiać na nim to co ma tam chodzić. To
ostatnie to będzie kuuupa roboty na najbliższe tygodnie, no ale w końcu od
czego jesteśmy?

Staczam się… ;-)

Chyba się staczam… ostatnio zarywam noce kodując w… PHP. ;-)

Wszystko dlatego, że postanowiłem u siebie postawić
system śledzenia błędów dla PLD. Stary był brzydki i
niezbyt wygodny, a przez ostatnie tygodnie nie działał w ogóle — zbytnio
obciążał maszynę na której był postawiony, a poprawiać go nie było komu.

Dyskusja na temat alternatywy powracała już kilka razy na listy zwykle bez
efektu. Jednak pewną tendencję w dyskusjach można było zauważyć — nowy
system powinien być opary o jakieś gotowe rozwiązanie, najlepiej żeby to była
Bugzilla, Mantis lub Flyspray. Bugzilla mi się nie podoba (stanowczo za dużo
kontrolek w formularzach), poza tym wydaje się na tyle skomplikowana, że jej
dostosowanie do naszych potrzeb mogłoby okazać się trudne i długotrwałem.
Mantisa nie znam, a Flyspray, znany
z Buggera po prostu mi się podoba,
a skoro ja użyczam sprzętu i chcę sie tym zająć, to moje zdanie może być
decydujące. :-)

Tak po prostu postawić Flyspray’a to byłoby za mało. On powstał dla
zupełnie innych projektów niż PLD. Np. pole system operacyjny nie ma
u nas sensu, zamiast tego ważniejsza jest architektura. Poza tym w błędzie
najistotniejszy jest pakiet którego dotyczy i jego wersja. Nie chciałem dla
każdego pakietu robić osobnego projektu (osobne projekty są dla poszczególnych
linii dystrybucji (Ra, Ac, Th) i innych projektów związanych z PLD (ten BTS,
LiveCD, RescueCD)), więc wykorzystałem obecne już pole kategoria.
Trzeba było przy tym mocno zmienić interfejs, gdyż pole wyboru pakietu
zawierające listę wszystkich pakietów (tysiące!) to byłoby nieużywalne.
Podobnie z wersjami, które w oryginalnym Flyspray są określane per-projekt,
a u nas muszą być per-pakiet. To wszystko udało się właściwie zrobić.
Udało mi się też przenieść bazę pluskiew ze starego systemu.

Poza zmianami przystosowawczymi wprowadziłem też inne ulepszenia.
Np. język interfejsu jest konfigurowalny per-użytkownik, a domyślnie brany
z ustawień przeglądarki. Poza tym włączyłem serwowanie stron jak
application/xhtml+xml dla przeglądarek które to akceptują. To
zresztą uziemiło system na jakiś czas, bo się okazało, że XHTML to strony
generowane przez Flyspraya mają tylko w DOCTYPE. No na głównej stronie nie
było źle, nie walidowała się jedynie z powodu pustego <optgroup/>.
Niestety większość pozostałych stron nie była nawet well-formed XML
przez co przestała się w ogóle wyświetlać. Wczoraj udało mi się większość
z tego poprawić, więc już się wyświetla w przeglądarkach obsługujących XML,
ale raczej Valid XHTML Strict to w większości nie jest.

No i dzisiaj wreszcie udało mi się uruchomić narzędzie, które w poprawianiu
tego XHTMLa może mi pomóc:
HTML Validator dla Mozilli
. Polecam! Niestety to rozszerzenie w postaci
gotowej do zainstalowania dostępne jest jest jedynie dla Windowsów.
W Linuksowym Firefoksie instaluje się bez zająknięcia, ale po prostu nie
działa. Okazało się, że w środku siedzi binarka nstidy.dll,
nstidy.so trzeba sobie samemu skompilować (źródła rozszerzenia są
dostępne). Do kompilacji teoretycznie potrzebne są źródła Mozilli, ale nie
uśmiechało mi się ich instalowanie i kompilowanie, więc jakoś poradziłem sobie
bez tego — w końcu hacker jestem! ;-)

Poza BTSem podłubałem trochę w automatyce builderów (małe zlecenie do
Havnera). To już była czysta przyjemność, bo automatyka jest w Pythonie.
:-) Niestety okazało się, że przy okazji coś po psułem
i w niedzielę w nocy, zamiast iść spać musiałem poprawiać…

Nie tak całkiem leniuchuję…

Postanowiłem przenieść listy dyskusyjne moich projektów z Enemies of
Carlotta
na mailmana. To pierwsze nie bardzo się
rozwija, a i możliwości ma skromne, a z mailmanem i tak się muszę męczyć przy
innych listach (przy okazji się przekonałem, że od strony administratora jest
nieco przyjemniejszy). No i nawet listy działają. Udało się to nawet pogodzić
z moją SQLową bazą użytkowników synchronizowaną na zapasowym MX. Jednak
stwierdzam, że mailman to gniot, szczególnie ten z paczki PLD
(której jednak nie chciało mi się poprawiać). A już zupełnie obsługa
wirtualnych domen dla postfixa (tak jak on to robi, to te domeny są średnio
wirtualne, bo listy zaśmiecają przestrzeń nazw systemowych użytkowników).
Ale przejście się chyba opłacało. Listy jak już ruszyły to działają, a archiwa
wyglądają lepiej.

Jakiś czas temu jeden z Release Managerów PLD prosił mnie, abym
dorobił ACLe na branche do automatyki builderów. Wczoraj więc się za to
zabrałem: cvs up, poprawka, login na src-builder (najważniejszy z
builderów), cvs up i sprawdzam jak to działa… W tym czasie inny
developer PLD mnie informuje, że jak robię te poprawki na HEAD, to to się na
nic nie zda, bo to co jest na HEAD i tak się na buildery nie nadaje, bo ów
developer coś tam samemu psocił. No fajnie, ale przecież właśnie to na głównym
builderze zainstalowałem…

Na szczęście psuja zostawił taga na ostatniej działającej wersji
automatyki. Z taga zrobiłem brancha, przeniosłem tam swoje poprawki i z tego
brancha zrobiłem cvs up na builderze. Jeszcze parę poprawek do
mojej poprawki i ACLe na branche działają :-). Mogłem wreszcie
pójść spać (0:30).

W przedpoprzednim wpisie, tam gdzie wspominałem o RFC 3920, 3921, 3922 i
3923, wspominałem, że dodam odwołania do tych RFC do dokumentacji PyXMPP.
Jednak dopiero przed chwilą mi się to udało, przez te zabawy z automatyką
builderów i listami dyskusyjnymi. Ale za to dopisałem też odwołania do
wszelkich innych implementowanych RFC i JEPów. Będzie łatwiej znaleźć
odpowiedni dokument jak będzie trzeba coś sprawdzić.

A jutro jadę na Jesień Linuksową
:-).

ejabberd…

O dziwo wszystko (tak mi się wydaje) na tym ejabberd działa. Stanowczo za gładko to poszło… Zobaczymy co będzie jutro, czy jacyś użytkownicy będą się skarzyć.

Jedynie z SSL miałem problemy — najpierw w ogóle nie działało, bo spieprzyłem paczkę z Erlangiem dla PLD (oczywiście już poprawiona), a potem się rozłączało zaraz przy próbie połączenia — potrzebny był patch na Erlanga, do którego namiary były w bug-trackerze ejabberd.

Mozilla FireFox

Postanowiłem wypróbować tę przeglądarkę. I pierwsze wrażenie jest
nienajlepsze. Dotychczas używałem epiphany, która wygląda jak powinna (nie
jest okienko zapchane jakimiś śmieciami w stylu jakiegoś sidebara czy
przycisków na pół ekranu), jest szybka i wygodna. Jednak Epiphany ma też swoje
wady – założenia Gnomowe „maksymalnie prosty interfejs” powodują
że menu i okno konfiguracji są stanowczo za ubogie dla mnie. Rozszerzeń też nie
wiele. Wcześniej używałem Galeona, ale w ostatnich wersjach zgnomił się jescze
bardziej niż epiphany. Liczyłem na to, że FireFox będzie OK…

Pierwsze co się rzuca w oczy to powolność FireFoksa. Nie chodzi o engine
renderujący stronę, bo to jest OK, ale interfejs użytkownika. To nie jest
normalne, gdy na komputerze z procesorem Athlon 1GHz widzę jak mi się okienka
rysują. Ale ostatecznie – można się do tego przyzwyczaić.

Druga sprawa wyszła przy próbie instalacji rozszerzeń. Wchodzę na
odpowiednią stronę, klikam na link, potwierdzam chęć instalacji i… większość
z rozszerzeń się nie instaluje z powodu braku dostępu do katalogu chrome. Czy
to znaczy że nie mogą się one po prostu w moim katalogu domowym zainstalować?
Czy muszę odpalać przeglądarkę z roota???? Jasne, można też zainstalować pliki
ręcznie, ale przecież miało być tak prosto…

Po paru minutach przeglądania rozszerzeń na texturizer.net postanowiłem
zajrzeć na joggera. Wtedy lisek się powiesił. Niezły to kawałek oprogramowania,
który można w ciągu 10 minut powiesić…

Istnieje możliwość że FireFox sam z siebie jest OK, tylko chłopcy robiąc
paczki dla PLD coś spieprzyli, ale nie sądzę żeby wszystkie opisane powyżej
problemy to była ich sprawka. W każdym razie jeszcze trochę się tym pobawię…

Zimowa wycieczka na serwerownię

Wracam sobie spokojenie z pracy tramwajem, a tu mi dzwonią że coś wysiadło.
Więc w domku zaraz siadam do kompa i sprawdzam co się dzieje. Nie wygląda to
dobrze, ale zanim dokładnie zbadam wolę zjeść obiadek. Po obiadku okazało się
że router leży i muszę jechać spowrotem do Zabrza :-(.

Kierowca ze mnie beznadziejny, na drogach warunki nieciekawe, samochód
na letnich (właściwie to podobno „uniwersalnych”) oponach. Ale
myślę sobie – pojadę ostrożnie, to nic mi się nie stanie. No i dojechałem
właściwie bez problemu. Trochę długo to trwało, bo jechałem sporo wolniej niż
zwykle, a w Gliwicach były korki. Na miejscu stwierdziłem, że to były
najgorsze warunki w jakich zdarzyło mi się jechać samochodem.

Na serwerowni spędziłem równo godzinę. Oprócz trzech rebootów routera, aż
w końcu ruszył (walnięta płyta główna, zamówiłem nową ale nikt się tym nie
przejął) skonfigurowałem porządnie konsole szeregowe przez conservera
(olewając skrypt startowy PLD i zmieniając uprawnienia do niektórych
plików/katalogów, bo nie lubię jak takie rzeczy mi z uid=0
chodzą). W każdym razie po tej godzince przyszedł czas na powrót do domu.

Już niedaleko serwerowni na jednym zakręcie trochę mnie wyrzuciło
i obróciło. Ale pusto tam było, jechałem bardzo powoli i może rzeczywiście
trochę za gwałtownie skręciłem, więc się tym nie przejąłem. Wjechałem na naszą
„autostradę” (Gliwiczanie wiedzą o co chodzi) i jechałem dalej
powtarzając sobie w myślach „żadnych gwałtownych ruchów, żadnego
niepotrzebnego przyspieszania czy zwalniania i będzie dobrze”. A więc
jadę sobie spokojnie prostą, pustą drogą aż nagle samochód postanowił skręcić
(dziura?) no i mnie obróciło i tylko widziałem jak zbliżam się do bariery po
lewej stronie drogi. Fajnie, że akurat nic nie jechało, bo by samochód
był pewnie skasowany. Dojechałem do barierki (lekko stukając w nią
zderzakiem), wtedy dopiero dojechał samochód z naprzeciwka i spokojnie mnie
ominął (zdążył zwolnić). Jakoś wróciłem na swój pas, ktoś jadący
w „moim” kierunku mnie obtrąbił (pewnie pomyślał że
zawracam) i pojechałem dalej. Tym razem ze średnią prędkością 30km/h.
Dojechałem cały i całym samochodem, ale chyba więcej się w taką pogodę nie
wybiorę.

Dawno mnie tu nie było…

Miałem tyle różnej roboty, że nawet nie miałem kiedy na Joggera pisać.
Robota to: prace nad systemem zarządzania użytkownikami w firmie (tu jest
jeszcze masa rzeczy do zrobienia :(), portowanie PLD na AMD64
(na szczęście to nie tylko ja robię, ale właściwie cały team PLD – jednak
w lutym firmowy serwer z dwoma opteronami musi ruszyć „w produkcji”), inne
rzeczy „firmowe”, prace nad CJC i PyXMPP, poprawki w transporcie GG (do tego
jakoś szczególnie nie mogę się zabrać) itp. itd. Ale dobrze by też było
przynajmniej wieczory i część weekendów rodzince poświęcić…

No cóż. Roboty kupa, a ja jeszcze sobie kolejną znajdują (przyjemniej jest
zająć się czymś nowym niż kontynuować to co już się nudzi..). W sobotę
w PyXMPP dodałem obsługę komponentów jabberd, a w niedzilę w oparciu o to –
bramkę do IRCa. I ta bramka działa – przynajmniej podstawowa funkcjonalność,
bo wciąż bardzo wiele brakuje (i tym samym moja lista TODO znowu się
wydłuża).

Wczoraj przy okazji pisania tej bramki nieźle się zdenerwowałem… Już
zaczynało działać – docierały do mnie teksty z kanału #pld. Robota szła
nieźle… i okazało się że w firmie router brzegowy leży. Robotę musiałem
przerwać i jechać do Zabrza rebootować maszynę. Wrrr… Stracony czas
nadrobiłem wieczorem – nad JJIGW (tak się moje najnowsze dzieło nazywa)
siedziałem do północy.