13 września 2007
19:34:28
|
kategorie:
linux,
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:
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ć. :-)
13 września 2007
16:06:06
|
kategorie:
linux,
pld,
praca,
sieci,
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...
28 maja 2007
19:30:12
|
kategorie:
gry,
linux,
Parę miesięcy temu kumpel mnie namawiał na grę w Longturn – sieciową rozgrywkę Freeciv z długimi turami.
Wcześniej unikałem gier, żeby się znowu nie wyłączać na całe
godziny/dni/tygodnie, ale skoro to miała być jedna kolejka dziennie... to
czemu by nie? Zapisałem się do LT6 i zacząłem grać. I sam Longturn
rzeczywiście nie odcinał mnie za bardzo od świata żywych, gorzej
z pomocniczymi
grami z botami, gdy sobie przypominałem jak się w to
gra... Ale w końcu sobie przypomniałem dość i tylko parę razy dziennie
zaglądałem do gry. (Żona twierdzi, że siedzę prze tym cały czas, ale jej się
tylko wydaje ;-)).
Parę miesięcy grałem w LT6, miałem w grze fajnych sojuszników.
Przegraliśmy, ale i tak jestem z rozgrywki bardzo zadowolony. W trakcie LT6
zapisałem się też na LT7... które przegrałem dość szybko. Aktualnie trwa LT8.
Na LT9, czy LTClassic3 się nie zapisuję... bo znalazłem inną zabawkę.
:-)
Ta inna zabawka to Outer Space.
Znalazłem, jak większość gier, na Linux
Game Tome. Tak jak Longturn jest to długotrwała gra turowa, jednak
w przeciwieństwie do Freeciv, Outer Space został do takiego grania stworzony
(w LT reguły Freeciva zostały niby dostosowane, ale dalej widać, że gra
została stworzona do szybszych rozgrywek). Poza tym Outer Space też wygląda na
zupełnie inną grę: podbój wektorowej
galaktyki, a nie świata
podzielonego na pola. Jednak i Freeciv (klon słynnej Civilization) i
Outer Space (czerpiący raczej z Master of Orion) to gry 4x: eXplore, eXpand, eXploit
and eXterminate
i podczas gry czuje się to podobieństwo.
Możliwe, że Outer Space to gra jak wiele innych typu podbij
galaktykę
, zaczynając od Master of Orion. Sam jednak grałem tylko w MoO
i to tak dawno, że pamiętam tylko, że bardzo mi się podobało i były w tym
jakieś gwiazdy... Tydzień temu zacząłem grę w galaktyce Garis i chyba mnie
wciągnęło. Właściwie to mi mało i założyłem sobie też konto w Inera, galaktyce
która właśnie startuje. Jeszcze zanim Garis wystartowała zapisałem się do
15-dniowej Argo, ale tamtejsi gracze szybko mi uzmysłowili, że to nie ma sensu
(startując tak późno byłbym daleko w tyle). A do Inera może jeszcze ktoś
znajomy się skusi?
No i na koniec przyznaje się bez bicia, że przez to granie zaniedbuję
trochę swoje projekty: CJC, PyXMPP, jggtrans i trochę PLD... ale cóż, jak nie
grałem, to zaniedbywałem tak samo – np. oglądając gołe panienki
w sieci... to chyba rozwijające gierki lepsze... ;-)
19 marca 2007
22:30:42
|
kategorie:
gry,
imprezy,
linux,
rodzinka,
wypoczynek,
zdjęcia,
Czwartek
No to znowu pojechałem na Pingwinaria. Tym razem z żonką. Wyjechaliśmy w czwartek rano, najpierw
po gadżety do Ikuśnej firmy, a potem do Krynicy. Po drodze dołączył do nas Ajot. Po niecałych czterech godzinach byliśmy
na miejscu.
Po rozpakowaniu poszliśmy (ja i Ika) na obiadek (wyżywienie w Damisie jak zwykle super), a po obiadku
na spacer po Górze Parkowej. Na szczycie czynne były zjeżdżalnie (takie
metalowe rynny po których się zjeżdża w filcowych workach
) i żonka chciała od
razu spróbować. No to wykupiliśmy 10 zjazdów (8zł) i poszaleliśmy trochę. Ja
nawet dwa razy próbowałem na tej najbardziej stromej... próbowałem po za każdym
razem, gdy usiadłem przy krawędzi, to się wycofywałem.
;-)
Po spacerku Ika rozstawiła sklepik
z pingwinami, a ja zajrzałem na salę wykładową. Tego dnia nawet udało mi się
obejrzeć po części z każdego wykładu. ;-)
Po kolacji i kawałku drugiej części ostatniego wykładu zaczęły się mniej
oficjalne części imprezy, czyt. picie. Nie uczestniczyłem w tym zbyt
intensywnie, ale spać położyłem się późno. Żonka dołączyła jeszcze później.
Piątek
W piątek okazałem się paskudny i w ogóle, bo obudziłem się o 6:30 i przy
okazji obudziłem żonkę. Do śniadania przeleżeliśmy w łóżku (no może nie tylko
przeleżeliśmy i nie tylko w łóżku... ;-)). Tego dnia nie byliśmy
raczej wyspani. W południe planowany był mój wykład, przed nim
planowaliśmy wypad do sauny. Rano więc poszliśmy tylko na mały spacerek na
Deptaku pod Górą Parkową. Z sauną ktoś zamieszał tak, żebym ja się nie załapał, ale Ika
owszem... No cóż, miałem więcej czasu na przygotowanie się do wykładu.
Mój wykład to jedyny na którym byłem od początku do końca. Opowiedziałem po
kolei jak to pomogłem żonce z nalepkami na paczki, na początku zastrzegając, że
to nie jest do końca zrobione tak jak powinno się robić
, ale i tak wywołałem
małą burzę. Niektórzy byli oburzeni, że takie rzeczy stosuje się
w produkcji
, inni mnie bronili, że to sprytne i niegłupie rozwiązanie. I dobrze,
bo właściwie nie o moje skrypciki chodziło, ale o dyskusję na temat hackerskich
rozwiązań. Swój wykład uważam więc za udany. :-). Żonka na mój
wykład dotarła gdzieś w połowie, gdy dyskusja się rozpoczynała. Po wykładzie
został już tylko wypoczynek.
Po obiedzie pomogłem rozstawić sklepik 403forbidden, a potem zajrzałem na
wykłady sponsorów... nie zachwyciły mnie, to poszedłem na basen. Tam się
pomoczyłem przez 45 minut, a przy okazji wymasowałem bąbelkami moje obolałe
plecy.
Po kolacji było oficjalne świętowanie urodzin PLUGu, a potem panel
dyskusyjny
na temat otwartych systemów, standardów i oprogramowania. Na
początku ciekawy, potem dyskusja zaczęła się kręcić w kółko, to poszliśmy
szukać innych rozrywek. Ja np. poszedłem sobie na spacerek po Krynicy.
Dowiedziałem się np., że o wpół do jedenastej wieczór lodowisko jest już
zamknięte. ;-)
Wracając spotkałem na schodach integrującą się grupkę linuksiarzy, z Panią
Prezes na czele. Agusia zażyczyła
sobie mojej żony wraz z cyckami, więc poszedłem po Ikę... która już prawie
spała w pokoju. No cóż, rano nie dałem jej pospać. Wspólna integracja na
schodach nam nie szła, więc poszliśmy spać, wyjątkowo wcześnie jak na
Pingwinaria, chyba jeszcze przed północą...
Sobota
W sobotę wstaliśmy o normalniejszej porze (po ósmej) i bardziej wyspani. Po
śniadaniu poszliśmy z szefem Iki na mały spacer-zakupy. A potem Srebrną,
w sali bilardowej,
testowałem sprzęt do StepManii. Były drobne komplikacje,
ale ostatecznie udało się dwie (z trzech) maty podłączyć do laptopa Iki tak, że
działały i zebrać zestaw piosenek. Przy okazji wzbudziliśmy zainteresowanie
wszystkich którzy w tym czasie byli w lub zajrzeli do sali wykładowej.
Przed obiadem (gdy ja testowałem maty) sklepik z pingwinami
eksperymentalnie został rozstawiony przed jadalnią. I to okazało się być
strzałem w dziesiątkę. Po obiedzie zabraliśmy Prezesa na Górę Parkową, licząc
na to, że spuści go się metalową rurą w filcowym worku... ale padało
i ślizgawki były zamknięte. Posiedzieliśmy w tamtejszej knajpce i wróciliśmy na
dół. Podczas spacerku, mimo pogody, udało się znaleźć ślady wiosny, np. takie:
Podczas kolacji znowu sklepik działał przed jadalnią, a ja zaraz po kolacji
poszedłem rozkładać sprzęt na sali. Tam laptop i maty zaczęły odmawiać
posłuszeństwa. Albo któraś z mat nie była wykrywana, albo wykrywane były obie,
a działała tylko druga, albo po wykryciu znikały. W końcu, po paru minutach żonglerki
wtyczkami USB, gdy już prawie się poddałem, udało się wszystko uruchomić
i zaczęła się zabawa.
Najpierw skakałem ja ze Srebrną, żeby pokazać co i jak, potem, najpierw
nieśmiało, próbowały inne osoby. Tylko ja, Srebrna, Ika i Agusia mieliśmy
jakieś doświadczenie z tą zabawką, dla reszty to była nowość, ale wielu się
bardzo spodobała. A ja robiłem za tego co wzbudzał podziw publiczności swoimi
popisami. Do mistrzów StepManii mi pewnie daleko, ale w tym towarzystwie chyba
rzeczywiście się wybijałem. I miło czuć na sobie pełen podziwu wzrok
publiczności. I słyszeć te wszystkie pochwały i zachwyty... Gdyby to jeszcze
podziwiały mnie same atrakcyjne kobiety, a nie (w większości) banda facetów...
;-).
Chciałem zwijać laptopa o jedenastej, ale w końcu impreza trwała chyba do
drugiej w nocy. Niektórzy z nowicjuszy zdążyli nawet całkiem nieźle to
opanować. Niektórzy (honey i mmazur) próbowali nawet mnie albo Ikę
zamęczyć... Może trochę się im udało, bo jeszcze czuję zakwasy...
Niedziela
W niedzielę znowu udało się pospać (całe szczęście, jak byśmy dojechali?),
ale cztery dni imprezowania i tak robiły swoje. Przy śniadaniu sklepik został
rozstawiony po raz ostatni. Potem sauna (koedukacyjna). Tym razem i ja się
załapałem. To działa! Po saunie czułem się znacznie bardziej zdatny do podróży
niż wcześniej. Potem pakowanie i jazda. Znowu robiłem za pasażera, bo na razie
żona kluczyków do auta mi nie daje (auto jest jeszcze na ubezpieczeniu teścia,
jak by coś się stało, to mnie teść by zabił, a Ikę najwyżej opieprzy). Po drodze
chcieliśmy zjeść obiad... nie było prosto, bo na drodze (bardzo malowniczej,
polecam!) od Nowego Sącza do Mszany Dolnej nie wypatrzyliśmy żadnej knajpy. Dopiero
w Mszanie jakąś pizzerię, z wierzchu nieciekawą. Ale pizza była pyszna.
W domku byliśmy około 16:30. Porządnie zmęczeni, ale trzeba było jeszcze
przetrwać wieczór z dzieckiem... Ika padła zanim przyszedł czas kąpieli Krysi,
ale ja jakoś sobie poradziłem. Ocknęła się, gdy Krysia zadawała mi poważne
pytanie: Co zrobisz z mamusią, gdy będziesz ścielił łóżko?
, a więc
problem się sam rozwiązał. Chwilę po położeniu Krysi myśmy już też spali.
22 lutego 2007
21:59:21
|
kategorie:
bezpieczeństwo,
linux,
oprogramowanie,
Techblog,
Żonka potrzebowała dzisiaj do czegoś jednego ze zdjęć, jakie trzyma na
laptopie. Okazało się, że zdjęcia nie ma... ani tego, ani setki innych...
w katalogu w którym kiedyś były zdjęcia teraz były tylko numerowane katalogi
i puste pliki, wszystkie z walentykową datą... Niedobrze.
Oczywiście zostałem wezwany do wyjaśnienia sprawy i naprawienia szkód. Wyglądało
to dość zagadkowo. Najpierw odmontowałem /home i zapuściłem fsck. Nic
podejrzanego nie znalazł. Dalej jedyną wskazówką była dla mnie data i godzina
utworzenia tych dziwnych plików... Zajrzałem do /var/log/syslog... nic
szczególnego w tym czasie tam nie było widać.
Zacząłem sobie przypominać, co tam ostatnio na laptopie mieszałem.
Instalowałem Beagle'a. Chciałem żonce
zrobić dobrze i dać jej narzędzie, które pozwoli połapać się w tych jej
wszystkich plikach, z których większość (w szczególności zdjęcia) lądowały w
magicznym katalogu 1
w jej $HOME. Teraz w tym katalogu były tylko dziwne
cyferki...
Podkatalogi i pliki w ~/.beagle miały czasy modyfikacji 14 lutego lub
późniejsze, czyli ciepło. Ale trudno mi było sobie wyobrazić jak narzędzie do
indeksowania i przeszukiwania plików mogło kasować pliki... Postanowiłem obadać,
czy przypadkiem ktoś tam czegoś głupiego nie robił w tym czasie na konsoli.
vim ~/.history, tam /beagle i ukazały mi się moje
rozpaczliwe próby doprowadzenia Beagle'a do działania: nie chciał mi indeksować
plików, więc próbowałem go do tego zmusić różnymi poleceniami
beagle-* (a chodziło, zdaje się, o brak biblioteki sqlite3, czy
czegoś takiego). Od razu wydało mi się podejrzane jedno z poleceń:
beagle-exercise-file-system – zawartość katalogu 1
wyglądała na wynik jakiegoś ćwiczenia...
Google potwierdziło, co podejrzewałem:
beagle-exercise-file-system tworzy katalog 1
z numerkami
w środku, który można bezpiecznie usunąć
. No tak, po fakcie już można...
Sprawdziłem jeszcze, czy ja byłem aż taki głupi, czy to narzędzie nie ostrzega
o destrukcyjnym działaniu. Rzeczywiście nie ostrzega. Jeśli przed jego uruchomieniem
katalog 1
istniał, to go po prostu usuwa. Poza tym tylko bzyka chwilę dyskiem
i wypluwa niewiny komunikat Created X files across Y directories
...
Twórca tego genialnego
narzędzia powinien chyba zginąć w ciężkich męczarniach...
Na szczęście mamy backup, z 30 stycznia, który nawet zadziałał, a więc
bezpowrotnie utracone zostały tylko pliki z dwóch tygodni, zdaje się, że w tym
czasie dużo nie było tam wrzucane. A twórcom Beagle
'a zgłosiłem już
bug reporta.
Mam nadzieję, że potraktują to poważnie, a nie zjadą mnie, że odpalam coś,
czego nie powinienem...
02 lutego 2007
22:08:24
|
kategorie:
gry,
linux,
oprogramowanie,
pld,
programowanie,
Niedawno pojawiło się nowe XFCE: 4.4.
Najpierw chciałem to w pracy sobie zainstalować, ale okazało się, że ani tego
nie ma w PLD Ac, ani nie da się w tym Ac zainstalować. Instalacji Th wolałem
nie ryzykować na maszynie która służy mi do pracy... co innego w domu, tam
ostatnio używam jedynie CJC i Firefoksa. Uznałem, że dwie aplikacje jakoś do
działania doprowadzę.
Upgrade nie był prosty. Masy rzeczy w repo Th brakuje. Wiele zależności
jest zepsutych. Cała masa pakietów zbudowanych w Ac wymaga X11-*, albo
XFree86-*, których w Th już nie ma (wystarczyłyby zależności od libX*, które
pociągnęłyby odpowiednie pakiety xorg-*). Dodatkowo, żeby nie było za prosto,
mam u siebie pomieszane pakiety 32- i 64-bitowe. Ale jakoś się udało...
Pierwsze co chciałem odpalić, to Xy. W końcu dla nowego XFCE jest ta cała
szopka... Poprzednio używałem 64-bitowego X-serwera i zamkniętych sterowników
ATI. Otwarte nie dawały akceleracji, a zamknięte nie działały, gdy X-serwer był
32-bitowy (generalnie większość systemu mam 32-bitowe), a kernel 64-bitowy (bo
tylko taki pozwala mi odpalać binarki i 32- i 64-bitowe). Teraz chciałem
spróbować z serwerem 32-bitowym i sterownikami Open Source, w końcu między X.org
7.0, a 7.2 coś mogło się zmienić...
Jedno się nie zmieniło – sterownik z X.org wciąż nie rozpoznaje mojej
karty (ATI Technologies Inc RV370 secondary [Sapphire X550 Silent]) i obsługuję
ją dopiero po dodaniu do xorg.conf: ChipId 0x5b60
. Akceleracja 3D też nie
ruszyła, chociaż sterownik DRM w kernelu się załadował i kartę poprawnie
wykrył... logi sugerowały, że znowu może być coś z tymi bitami... Zainstalowałem
więc 64-bitowy X-serwer z 64-bitowymi sterownikami. DRI ruszyło. Rozszerzenie
"Composite" też. Mogłem podziwiać piękną przezroczystość w XFCE. Najpierw
działało to strasznie wolno, ale po poprawieniu paru opcji da się tego używać.
Jednak z OpenGL coś wciąż było nie tak... mimo że glxinfo pokazywało, że
wszystko jest OK i nawet Direct rendering: yes
. To glxgears nie działało.
Znaczy się działało, ale nic nie wyświetlało. Podobnie wszystkie inne aplikacje
3D...
Spróbowałem więc zamkniętych sterowników... musiałem przebudować, bo w Th
były stare, niekompatybilne z nowymi Xami. Nowe się zbudowały, nawet działały,
ale bez akceleracji 3D. Linker dynamiczny nie mógł znaleźć jakiegoś symbolu od
DRI w modułach X-serwera... pewnie te zamknięte binarki nie są zgodne z naszym
buildem X.org... no cóż, tym razem lepiej wypadły sterowniki otwarte.
Wróciłem do otwartych sterowników i spróbowałem jeszcze czegoś:
zainstalowałem 64-bitowe glxgears... i ruszyło. Czyli tym razem, pod 64-bitowym
kernelem, nie tylko X-serwer musi być 64-bitowy, ale i wszystkie aplikacje
OpenGL. Przykre... ale chwilowo mogę z tym żyć. Ostatnio i tak wiele takich
aplikacji nie używam. Właściwie, to tylko StepManię.
Dzisiaj więc postanowiłem sobie skompilować StepManię na 64-bity. Środowisko
do budowania zrobiłem sobie w chroocie z czystym 64-bitowym Th. Zainstalowałem
co StepMania potrzebowała i zacząłem budowanie. Od razu się wykrzaczyło... SM
jest w C++, a C++ ma to do siebie, że kod napisany dla starszego kompilatora
często nie da się skompilować nowszym. W PLD Th mamy GCC 4.2 i to GCC kodu
StepManii nie polubiło. Jednak potrzebnych poprawek nie było dużo i większość
z nich była nawet dla mnie (nie znającego i nie lubiącego C++) oczywista.
W końcu się skompilowało. I nawet dało się uruchomić.
Skompilowana przez mnie StepMania działała, ale tak jakby nie do końca. Nie
dało się wejść do ustawień gry, a rozpoczętej gry nie dało się wygrać. Jak się
poprawnie przeszło
którąś piosenkę, to maszyna puszczała ją od początku.
Można by się było zajechać ;-). Podczas kompilacji widziałem
warningi dotyczące, między innymi, strict aliasing rules
, więc
postanowiłem spróbować kompilacji z innymi opcjami. Okazało się, że skrypt
configure StepManii na sztywno ma wpisane -O3
. To już mogło sprawiać
problemy. Zmieniłem na -O2
i dodałem -fno-strict-aliasing
i całość
skompilowałem od nowa. Podczas kompilacji ćwiczyłem sobie na tej niedorobionej
binarce – ciekawie się gra, gdy komputer się czasem zagapi i nie
zauważy
, że się strzałkę wcisnęło na czas. ;-)
Po kilkunastu minutach miałem nową 64-bitową binarkę gotową. I tym razem
działa dobrze. To sobie jeszcze kiedyś poskaczę. :-)
W kolejce czeka zbudowanie GComprisa dla
Krysi, bo stare wyleciało razem z Ac (w Th tego brak).