Zaloguj się

Jog Jajcusia

xmpp:jajcus@jajcus.net

Awaria...

Z pracowym komputerem miałem problemy już od dawna. Jak tylko przyniosłem go do biura, to przestał działać zasilacz (który dzień wcześniej, w domu działał bez zarzutu). Wymieniłem na nowy.

Z nowym zasilaczem niby działał, ale jak się coś podłączyło (czy to kabel sieciowy, czy pendrive) to potrafił się momentalnie zawiesić na twardo. Do zawieszenia systemu wystarczyło czasami przełączyć się z Xów na konsolę (czasem z tego powodu system wieszał mi się parę razy jednego dnia, a czasem przez parę tygodni nie było problemów). Myślałem, że dalej coś z zasilaniem, ale wymiana zasilacza na jeszcze inny nie powiodła się (w ogóle się nie uruchamiał). Właściwie to już nawet nie wiem, który zasilacz mam zamontowany...

Samo przełączanie na konsole sprawiało problemy tylko czasami... ale był też inny problem. Gdy korzystałem z konsoli (framebuffer), to czasem aplikacja rysująca coś w Xach potrafiła mi tą konsolę skaszanić, tak, że nie dało się zrobić nic poza przejściem do Xów. Problemy takie sprawiały tylko niektóre aplikacje, a właściwie ich elementy: migający kursor w xtermie kaszanił, animacja Flash w Firefoksie nie, ale już animowany gif w tym samym firefoksie też kaszanił. Freeciv nie kaszanił, OuterSpace kaszanił. Nauczyłem się więc przełączać na firefoksa z bezpieczną zakładką (teraz to się chyba tab nazywa) przed przejściem na konsolę...

Uznałem, że dość tego. Przynajmniej z tymi graficznymi problemami trzeba skończyć. Postanowiłem zmienić kartę graficzną, z tego podejrzanego Matroxa (ale to podobno dobre karty...) na Radeona, który gdzieś mi sie w domu walał... Wyciągam starą kartę, wkładam nową, uruchamiam komputer... i ciemność, widzę ciemność. Otrzymywałem albo czarny ekran, albo jakieś No signal wygenerowane przez monitor.

No cóż... ten Radeon mógł być zepsuty... spróbowałem ze kartą na płycie głównej... Ciemność. No to wsadziłem znowu Matroksa... to samo. A przy tym słychać i widać, że poza brakiem obrazu, komputer startuje normalnie. Myślę sobie: zepsułem monitor :-( Podłączyłem zapasowy (CRT, nie nadający się za bardzo do codziennej pracy)... Dalej ciemność. Na wszystkich trzech kartach. Już zacząłem się obawiać, że zepsułem drugi monitor...

Jednak oba monitory były sprawne – podłączone do routera pokazywały co trzeba. A więc płyta główna, która już mi od dawna wydawała się podejrzana... Poleciałem więc do sklepu i kupiłem nową płytę z procesorem (pod stary procesor już nic odpowiedniego nie mieli, ale przynajmniej pamięci nie musiałem wymieniać). Na razie działa. A do grafiki używam zintegrowanego Intela 865G. Zabawy z Radeonem sobie odpuszczam (przynajmniej na razie).

5 komentarzy do wpisu „ Awaria...”


AMD (dawinej ATI) upubliczniło specyfikację i... cisza?

Podczas porannej prasówki natrafiłem na link w 7thguard do informacji o udostępnieniu przez AMD specyfikacji do chipsetów graficznych. Developerzy Xorg dostali pierwszą część dokumentacji dwunastego września, lada chwila ma wyjść (a może wyszedł?) nowy, open-source'owy sterownik do R500/R600... a w sieci praktycznie cisza.

Dziwne trochę. Były petycje, nie petycje, wieczne narzekania na brak dobrych sterowników i specyfikacji, szum przy każdej wzmiance o ewentualnym ujawnieniu specyfikacji itd. itp. A jak coś konkretnego się stało, to cisza. Dziwne. Albo ja czegoś nie widzę...

6 komentarzy do wpisu „ AMD (dawinej ATI) upubliczniło specyfikację i... cisza?”


Z pamiętnika hipochondryka

W sobotę wieczorem wysiadając z samochodu zobaczyłem wszystkie gwiazdy (i nie tylko dlatego, że było późno). W nocy się nie wyspałem, bo nawet przewracanie się na drugi bok sprawiało ból. Ba, nawet leżenie bez ruchu bolało... Rano więc byłem nie tylko obolały, ale i marudny. Żona kolejny raz przypomniała, że powinienem znowu wybrać się do lekarza. Ale okazała też litość i nie kazała mi jechać do Szałszy (co wiązałoby się z wsiadaniem i wysiadaniem z samochodu... ała). Jednak zgodnie z ostatnimi zaleceniami lekarza postanowiłem się jednak ruszać – poszedłem na pieszy, czterogodzinny spacer, do pobliskiego lasu. Nawet jakieś grzybki znalazłem i wróciłem nieco mniej obolały.

Po wizycie u doktora A (Panie, teraz każdy tak ma!) i u pani doktór B (To początki zmian zwyrodnieniowych – będzie panu to dokuczać już do końca życia) miałem wątpliwości, że jakiś lekarz jeszcze będzie mi mógł skutecznie pomóc, chyba że przepisując mocniejsze środki przeciwbólowe, a uśmierzanie bólu do nie wiadomo kiedy nie byłoby rozwiązaniem mnie w pełni satysfakcjonującym. Jednak od ostatniej wizyty, mimo stosowania się do zaleceń, było ze mną coraz gorzej. No i żona nalegała. Dziś więc wybrałem się do przychodni i trawiłem do pani doktór C. Właściwie to ją mam wpisaną jako swojego lekarza rodzinnego, ale jakoś nie udawało mi się do niej trafić (ale też bardzo się nie starałem).

Pani doktór stwierdziła, że zmiany zwyrodnieniowe to nie są, bo ja młody i zdjęcie nic nie wykazało. Uznała, że to zapalenie nerwu kulszowego i przepisała lek przeciwzapalny/przeciwbólowy (zapewniając, że to będzie mnie leczyć, nie tylko uśmierzać ból), coś osłonowego dla żołądka, jakiś lek rozkurczający i witaminę B1. Dodatkowo, wypisała skierowanie do poradni rehabilitacyjnej, ale rehabilitacji mam się poddać dopiero jak mi trochę przejdzie. Teraz raczej mam unikać zbytniej aktywności (czyli jednak darować sobie pływanie i rowerkowanie). Chciała też dać L4, ale jej wytłumaczyłem, że po pierwsze, nie mogę sobie teraz na to pozwolić, a po drugie sam sobie jestem pracodawcą i papierek mi niespecjalnie potrzebny.

Zapisałem się do poradni rehabilitacyjnej (na razie konsultacja u tamtejszego lekarza) i poszedłem do apteki. Tam pani od razu stwierdziła, że taka normalna B1 mi nic nie pomoże, powinno to być B1 forte, ale na recepcie nie jest to napisane, ale i tak mi sprzeda i sprzedała. Resztę recepty też. Od razu łyknąłem prawie cały komplet... i już jakby trochę lepiej. Mogę wstać z krzesła i od razu mnie nie skręca całkiem z bólu. Wyglądam podobno też już mniej smętnie. :-)

Podobno to może potrwać miesiąc zanim będą konkretne efekty kuracji... zobaczymy. Jak się nie uda, to podobno mogę jeszcze dostać skierowanie do neurologa.

9 komentarzy do wpisu „ Z pamiętnika hipochondryka”


Zapis do nieistniejącego pliku

Dziś zagadał do mnie kumpel na jabberze z ciekawym pytaniem:

<Maho> wiesz może jak dobrać się do pliku którego znam inode

<Maho> ale plik już nie ma nazwy?

Chodziło o to, żeby zapisać coś do pliku, otwartego przez jakiś proces, ale już skasowanego z systemu plików. Alternatywą było zapisanie coś do rurki (pipe) między dwoma procesami.

Pierwsze co mi przyszło do głowy, to echo "cokolwiek" >> /proc/${pid}/fd/${fd}, ale kumpel stwierdził, że to nie zadziała, bo w /proc są symlinki (o tym dalej).

No to trzeba było wymyślić coś innego. Skoro jakiś proces może zapisywać do tego pliku, no najlepiej byłoby zmusić ten proces do zapisania tego co chcemy. Ale jak się podpiąć pod działający proces? Prosto: gdb.

No to przygotujmy sobie środowisko testowe, dwa skrypty:

  • skrypt1.sh:
    #!/bin/sh
    
    while : ; do
            echo PUK
            sleep 1
    done | ./skrypt2.sh
    
  • skrypt2.sh:
    #!/bin/sh
    
    cat
    

Drugiego skryptu mogłoby nie być -- wystarczył by sam 'cat', ale niech będzie, że to dwa skrypty się ze sobą komunikują. Po uruchomieniu, skrypt1.sh uruchamia skrypt2.sh i wysyła do niego PUK co sekundę. skrypt2.sh po prostu wypluwa to "PUK" na standardowe wyjście.

No więc próbujemy, w jednym terminalu uruchamiamy skrypt1.sh:

$ ./skrypt1.sh
PUK
PUK
PUK
PUK
PUK

Teraz spróbujmy zlokalizować tę rurkę między skryptami:

$ /usr/sbin/lsof -c skrypt1.sh | grep pipe
skrypt1.s 11108 jacek    1w  FIFO    0,5          40246 pipe
skrypt1.s 11108 jacek   14w  FIFO    0,5          40246 pipe

Są dwie, mniejsza z tym skąd, spróbujemy się podpiąć pod tę drugą. Znamy identyfikator procesu (pid=10980) oraz numer deskryptora pliku (fd=14). To powinno wystarczyć. No to podpinamy się pod proces:

$ gdb --pid=11108
GNU gdb 6.5
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i686-pld-linux".
Attaching to process 11108
Reading symbols from /bin/ksh...(no debugging symbols found)...done.
Using host libthread_db library "/lib/libthread_db.so.1".
Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux.so.2

warning: Lowest section in system-supplied DSO at 0xffffe000 is .hash at ffffe0b4
(no debugging symbols found)
0xffffe405 in __kernel_vsyscall ()
(gdb)

No to się podpięliśmy... Skrypt został zatrzymany i przestał wyświetlać PUK. Teraz tylko należy wywołać funkcję write(). Ale jak? Wydaje się, że nie ma żadnego polecenia do uruchamiania funkcji systemowych, czy bibliotecznych... Ale jest print, który pozwala wyświetlić wartość wyrażenia w C... a wyrażeniem może być wywołanie funkcji... spróbujmy:

(gdb) print write(14, "BU!\n", 4)
$1 = 4

...czyli jakby zadziałało i zapisało 4 znaki. No to co jest na terminalu ze skryptami? Oczywiście wysłane właśnie BU!. Można jeszcze sobie coś tak popisać, a potem wznowić wykonywanie skryptu:

(gdb) quit
The program is running.  Quit anyway (and detach it)? (y or n) y
Detaching from program: /bin/ksh, process 11108

A teraz, wróćmy do wspomnianego echo "cokolwiek" >> /proc/${pid}/fd/${fd}... Przed napisaniem tego wpisu jeszcze sprawdziłem jaki do da efekt. I:

$ echo "cokolwiek" > /proc/11108/fd/14

Dało na terminalu ze skryptami:

PUK
PUK
cokolwiek
PUK
PUK

A więc /proc/.../fd/... działa wystarczająco dobrze! Jednak sztuczka z gdb i tak mi się spodobała, więc ją tu opisałem. Ma swój potencjał, bo oprócz pisania do pliku pozwala na różne inne rzeczy. Oczywiście, krzywdę sobie w ten sposób też można zrobić. :-)

7 komentarzy do wpisu „ Zapis do nieistniejącego pliku”


Dziecko zostało z tatusiem...

Ledwo co żona poszła na pociąg, to już córka zaczęła kombinować:

– Dzisiaj nie pójdziemy na popołudniowy spacerek, bo pogoda jest brzydka, a ja w przedszkolu byłam na spacerku.

– Ale mama kazała mi ciebie zabrać na spacerek! – odpowiedziałem, w rzeczywistości raczej uważając spacerek jako standardowy punkt dnia niż rozkaz z góry.

– No to możemy ją oszukać. Powiemy, że byliśmy.

12 komentarzy do wpisu „ Dziecko zostało z tatusiem...”


Fajnie jest, gdy praca bawi :-)

Ostatnio miałem problemy z cieszeniem się pracą. Właściwie kombinowałem tylko co by robić, żeby nic nie robić i jak dotrwać do weekendu. W końcu jednak klient (czyli szef) sprowadził cztery serwery (dwa Sun Fire i dwa jakieś Supermicro) dla swoich klientów i miałem na tym postawić nasz system. Właściwie to miały być dwie instalacje – dla każdego klienta dwa serwery z których jeden miał zastępować drugi w razie awarii. Czyli miałem zrobić dwa klastry HA (High Availability).

Prawdę mówiąc nie miałem większego pojęcia na ten temat, więc się trochę bałem, czy w ogóle się uda. Na początku więc po prostu postawiłem cztery identyczne serwery. Potem szef zepsuł jedną maszynę Sun Fire i mogłem spokojnie się skoncentrować na budowie jednego klastra :-). Warto zaznaczyć, że wszystkie te maszyny stoją w Amsterdamie, a ja mam do nich dostęp tylko przez sieć: SSH (także do konsoli szeregowych) oraz interfejs WWW do zdalnego wyłącznika zasilania.

Nasz system oparty jest na Xenie, na listach Xena przeczytałem, że do zapewnienia redundancji dobrze mieć DRBD (dla dla replikacji dysków), albo iSCSI lub inne rozwiązanie SAN (jeśli przestrzeń dyskowa miałaby być współdzielona). Wyszło mi na to, że dla nas lepsze będzie DRBD. Zacząłem czytać o DRBD. Dowiedziałem się, że DRBD dobrze byłoby używać wraz z Heartbeatem. To się zabrałem za szykowanie pakiecików...

Po kilku przeróbkach PLDowych pakietów, po kilku kompilacjach kernela, Heartbeata i DRBD, w końcu udało mi się coś uruchomić. Najpierw niespecjalnie to działało, a ja kompletnie nie wiedziałem co sie na moich serwerach dzieje. Ale po trochu to rozpracowywałem. W końcu usługi się uruchamiały tam gdzie trzeba, a jak maszynę wyłączyłem, to przeskakiwały na drugą. Super. :-)

... ale to wszystko w konfiguracji Heartbeat w wersji pierwszej, która już podobno nie jest zalecana. No to włączyłem wersję drugą (crm yes w /etc/ha.d/ha.cf) i zabawa zaczęła się od początku: wszystko przestało działać, przestałem rozumieć co się dzieje i dalej trzeba było pakiet heartbeat poprawiać. Ale i to opanowałem i muszę przyznać, że sprawiło mi to niezłą frajdę. :-)

Ciekawe co jeszcze mogę w tym klastrze poprawić... bo inne rzeczy co czekają w kolejce, niestety, nie są już takie fascynujące... No cóż, kiedyś nuda musi wrócić.

No i ciekawe jak te klastry będą się zachowywać w warunkach produkcyjnych...

4 komentarze do wpisu „ Fajnie jest, gdy praca bawi :-)”



[szpieg] Jesteście obserwowani...