Zły piesek, zły!

Ż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…

Rewolucja w kompie

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).

WiFi w domu, z przygodami oczywiście

Niedawno żonka dostała
nowego laptopa
. Z różnych ciekawych rzeczy, ten laptop ma, między innymi,
WiFi. Karta na chipsecie Prism 2.5 została od kopa rozpoznana przez Linuksa
(na początku jako eth0, co przez chwilę powodowało moje wątpliwości
w sprawność normalnego portu Ethernet). Szkoda by było tego nie
wykorzystać.

W domu mam jeszcze dwie bezprzewodowe karty sieciowe: na PCMCIA i na USB,
obie Compex, obie zawsze sprawiały mi problemy, ale przynajmniej dawało się na
otwartych sterownikach to jakoś odpalić. Tę na PCMCIA sobie
odpuściłem, bo nie będę odpalał innego laptopa i kernela 2.4, żeby sprawdzić
czy WiFi u żony działa. Postanowiłem spróbować z tą na USB, od razu
podłączając ją do mojego routerka.

Karta jest na chipsecie ATMELa. Zasadniczo są do tego dwa sterowniki:
atmelwlandriver i at76c503a (berlios driver). Oba
od dawna nie rozwijane. Żadnego z tych sterowników w PLD nie ma (pewnie
w żadnej dystrybucji nie ma). Poprzednio tę kartę uruchamiałem na tym pierwszym
sterowniku, nawet udawało się do tego PLDową paczkę zbudować i jako-tako to
działało. Z drugim też próbowałem, ale bez lepszych rezultatów (innych niż
zwis maszyny czy okazały Oops).

Tym razem atmelwlandriver nie udało mi się nawet skompilować
– systemu budowania dostosowanego do antycznych kerneli nie umiałem
pogodzić z PLDowym kernel-module-build. O dziwo, sterownik z Berliosa,
w wersji CVS, skompilował się bez problemów. Co więcej, załadował się na
tropku i połączył się z laptopem żonki. Oczywiście konfiguracja nie może być
normalna (gdzie router z kartą WiFi robiłby za AP) – karty
działają w trybie Ad-Hoc, bo ta na USB trybu master nie umie.

Połączył się, ale coś za bardzo sieć nie działała. Sprawdziłem
tcpdumpem i zobaczyłem ip packet truncated – 4 bytes
missing
. No fajnie, pewnie sterownik spieprzony. Ale nie wyglądało to na
coś, czego nie dałoby się naprawić. Google dużo na ten temat nie miało do
powiedzenia. Zajrzałem więc do źródeł i lepiej przyjrzałem się logom. W logach
znalazłem: firmware version 1.103.0 #175 (fcs_len 4) . Najpierw
spróbowałem starszego firmware’u (ze sterownikiem przyszły dwie wersje), ale
to w ogóle nie działało. Pozostało pogrzebać w źródłach. Okazało się, że jest
tam kod odpowiedzialny za obcięcie FCS (cokolwiek to jest) z końca ramki. Ten
FCS to 4 bajty, z wyjątkiem jednej wersji firmware (jakiejś starej), gdzie
ta długość była ustawiona na 0 (z komentarzem, że ta wersja jest głupia i FCS
nie doczepia). No to wpisałem 0 na stałe i bingo! Zadziałało :-).

Kolejnym problemem były straty pakietów. W pokoju, gdzie zwykle stoi
laptop, 17%. Przeszedłem się z nim po mieszkaniu i w przedpokoju, gdzie
powiesiłem nadajnik (kartę USB) było 0%. Ale w przedpokoju nikt pracować nie
będzie… Spróbowałem jeszcze przenieść nadajnik (najpierw powiesiłem nad
drzwiami, obok dzwona, bo tam się ładnie komponował ;-)), położyłem na
drzwiczkach szafki… i w całym domu jest zasięg i 0% strat. Tylko jak to tam
na stałe powiesić… próbowałem dwustronną taśmą klejącą, ale odpadało. Ten
problem zostawiłem sobie na później.

Na początek teksty robiłem na gołym 802.11b, nawet bez WEP. Oczywiście nie
mogło tak zostać. WAP to też żadne zabezpieczenie. O WPA na tych kartach
mogłem zapomnieć (tylko 802.11b umieją, a więc WPA na pewno nie). Bawić się
w 802.1x+WEP nie widziałem sensu. PPPoE też już przerabiałem w pracy (więc
żadne wyzwanie), a do tego też wydawało mi się to mało sensowne w domowej
sieci z jednym komputerem. Postanowiłem spróbować IPSec. W końcu tę
technologię też trzeba poznać. Dodatkowo chciałem też WEP odpalić z prostym
kluczem, po co cokolwiek ułatwiać… ale to nawet nie chciało ruszyć między
tymi kartami. Trudno.

Poczytałem o ipsec-tools, poeksperymentowałem, w końcu
załapałem jak ten racoon i setkey działają.
Okazało się że w takim przypadku jak mój, gdzie nie potrzeba DHCP, czy innej
automatycznej konfiguracji, to takie IPSec całkiem dobrze może się sprawdzić.

Gdy już miałem prawie wszystko gotowe, z szyfrowaniem, przygotowanym
routingiem, NATem itd… połączenie przestało działać. Karty się nie
widziały… przypomniałem sobie, że wcześniej dziecko walnęło drzwiami w tę
wiszącą kartę USB… przestraszyłem się, że się rozwaliła. Kilka jej restartów
nie pomogło. Rozkręciłem… w środku wyglądało bardzo solidnie i raczej na
nienaruszone… postanowiłem sprawdzić jeszcze jedną możliwość –
zrestartowałem laptopa (samo ifdown/ifup, czy nawet wyładowywanie modułu nie
pomagał)… ruszyło… uff…

Na koniec zamontowałem trochę solidniej nadajnik:

[img:wifi
full-prof]

A teraz żonka siedzi przy laptopiku, bez kabelka i nie narzeka. Wiec chyba
jest ok. 🙂 Tylko czemu zawsze w tą radiówką musi być tyle problemów?…

Wkurza mnie ten Firefox…

Niedługo po wydaniu Firefoksa 2.0 zainstalowałem go sobie na komputerze w
pracy. I tylko tam, bo szybko się okazało, że jest z nim poważny problem:
wiesza się losowo co jakiś czas, nawet kilkanaście razy dziennie. Okropnie to
wkurzające. Gdyby nie to, że Fx 2.0 ma parę fajnych ficzerów (szczególnie
sprawdzanie pisowni) i że downgrade nie sprowadza się tylko do „upgrade
–downgrade mozilla-firefox” w Poldku, to już bym dawno to wywalił. Nie
wywaliłem, ale i w domu sobie tego nie zainstalowałem. A w pracy się ciągle
wkurzam…

Ale nie to jest najbardziej wkurzające, że jest błąd. W każdym programie
zdarzają się błędy ale, że nie można go normalnie zgłosić (jak już pisałem: twórcy
Firefoksa nie chcą moich bug-reportów
), ani normalnie zobaczyć co się z
błędem dzieje (nie ma zgłoszeń błędów w konkretnym wydaniu, a więc nie można
sobie zobaczyć listy błedów w Firefoksie 2.0, a w tej całej masie zgłoszeń z
całej historii Mozilli ciężko znaleźć właściwe). Wiem tylko, że nie jestem
sam, wystarczy w Google wpisać: firefox 2.0 random freeze, żeby się
przekonać, że nie mnie jednego Fx 2.0 wkurza… Niestety, nie znalazłem nic na
temat przyczyn błędu, jakiś workaroundów, czy planów jego naprawy (to wszystko
IMHO powinno być z bugzilli).

Czy naprawdę mam jakieś dziwne wymagania co do systemu zgłaszania błędów?
Dla mnie to naturalne, że jednym z celów istnienia takich systemów jest
inwentaryzacja błędów w konkretnych wydaniach. Tak, żeby użytkownik mógł
sprawdzić co w konkretnej wersji siedzi, czy jego problemy zostały zauważone,
czy może się spodziewać naprawy. A tu nic… Nie działa ci oficjalne wydanie i
chcesz zgłosić problem? To ściągnij nightly-build i debuguj… Nie chcesz, bo
jesteś tylko zwykłym użytkownikiem? To mamy Cię w nosie…

Długo powstrzymywałem się przed tym narzekaniem… ale dzisiaj nie
wytrzymałem, gdy mi się zawiesił dwa razy w ciągu jednej minuty…

Jesień Linuksowa tuż tuż…

Jesień Linuksowa już za trzy tygodnie.
105 osób zapisanych, ale na razie tylko 54 potwierdzonych. Na liście tylko jedna
kobieta. :-( Dobrze, że żona nie z tych co się czują bardzo źle w roli rodzynka.
A’propos żona… są w tym Lewinie Kłodzkim jakieś konie? ;-)

Tym razem szykuje się bezstresowy odpoczynek – mój wykład przegrał w wyborach, pewnie dlatego, że
zapomniałem umieścić słowa hacking w tytule. ;-) Może to i lepiej.

Ktoś jeszcze się wybiera?

Tańczący z pendrive’ami

Dzisiejsza moja robota wygląda mniej-więcej tak:

  • dłubanie w skryptach,
  • podpięcie pendrive’a,
  • cat usb.img > /dev/sdc,
  • wyciągnięcie pendrive’a, podpięcie do drugiej maszyny,
  • reboot,
  • przejrzenie komunikatów na konsoli,
  • dłubanie w skryptach,
  • przepięcie z powrotem pendrive’a,
  • cat usb.img

Jestem chyba przy setnej iteracji, ale już prawie działa
;-). No, prawdę mówiąc, to prawie działa już chyba od dwóch
godzin, tylko definicja prawie się zmienia… ;-).

Last.fm Client

Wróciłem po urlopie do roboty, chciałem sobie puścić muzyczkę, no to
zajrzałem na Last.FM, co tam nowego.
Okazało się, że wreszcie jest Last.FM Client pod Linuksa. Ściągnąłem,
odpaliłem i wygląda całkiem miło – już na pierwszy rzut oka wydaje się
dużo bogatszy i wygodniejszy od starego Last.FM Playera. Muzyczka gra.
:-) …trzeba zająć się robotą. :-(

Wreszcie działa?

Mam nadzieję, że tym razem nie zapeszę…

Po ostatnim wpisie tutaj na temat karty TV dałem sobie spokój z próbami
w moim komputerze. Za to zabrałem kartę do pracy. Tam zadziałała bez problemu.
Nie dość, że nie powodowała padu systemu, to jeszcze jakość nagrania była dużo
lepsza (brak zakłóceń w postaci białych pasków). Pomyślałem, że w ten sposób
będę mógł przynajmniej w pracy zgrać z kamery to co wcześniej sobie na taśmę
nagram… jednak na myśleniu się skończyło. Najpierw urwałem tacie jedną taśmę
(z tych które mi dał do przegrania), a potem odkryłem, że kamera w swoim
łakomstwie pożarła by każdą taśmę jaką do niej wsadzić. Więc eksperymenty
z przegrywaniem kaset zakończyłem na tej jednej urwanej i dwóch wymiętych
taśmach…

Poleżała więc kamera u mnie w pracy przez tydzień, aż postanowiłem znowu
spróbować w domu. Tym razem plan był taki: skoro problemem jest najwyraźniej
równoczesna transmisja DMA z karty TV i na dysk (lub z dysku), to może zmiana
kontrolera SCSI coś pomoże. Wygooglane materiały sugerowały, że to raczej
będzie problem płyty… jednak na temat problemów z DMA akurat tego modelu
płyty głównej w sieci nic nie było. Tak się składa, że miałem drugi kontroler
SCSI (wolniejszy, bo tylko Ultra-II zamiast Ultra-160, ale do jednego dysku
starczy) w tropku.

Dzisiaj znalazłem chwilkę, żeby przeprowadzić tę operację. Wyłączyłem
tropka (odcinając się od sieci – z tego powodu musiałem to zrobić, gdy
żonki nie ma w domu) i przełożyłem jego kontroler (Symbios 53c895) do
dużego. Włożyłem kartę TV, podłączyłem kamerę, uruchomiłem komputer,
zacząłem nagrywać. Po chwili sprawdziłem nagranie – brak
charakterystycznych zakłóceń jakie się pojawiały przy drugim kontrolerze
(Adaptec ASC 19160). Zostawiłem nagrywanie na dłużej i ciągle nic się nie
psuło. Tym razem to chyba rzeczywiście sukces! :-)

Po pierwszych testach karty pozostało tylko ponownie uruchomić tropka.
Oczywiście nie było to takie proste. Najpierw w ogóle się nie uruchamiał. Po
poprawieniu kabelków uruchomił się, ale nie zabootował. Po podpięciu do
monitora okazało się, że pamięć CMOS mu się skasowała (i głupi BIOS
stwierdził, że procesor się zmienił). A do tego wszystkiego, z nowym
kontrolerem mu się znowu klapka nie domyka… Na szczęście w końcu udało się
go odpalić i nie jestem odcięty od świata.

No to już wiem, że karta TV na chipsecie Bt878 i kontroler SCSI Ataptec
19160 wpięte razem do płyty Asus A8N-E to kiepski zestaw i po prostu nie
działa. Ten problem rozwiązany. Pozostaje wymyślić co zrobić, żeby kamera nie
pożerała taśmy… a właściwie, to czy ja w ogóle potrzebuję nagrywać na VHS?

Profesorek Fizzwizzle

Wczoraj natrafiłem na tę gierkę na The Linux Game Tome. Już na
screenshotach Professor
Fizzwizzle
bardzo mi się spodobał, więc ściągnąłem demo. Niestety gra
zawisła po uruchomieniu i było już za późno, żeby w tym grzebać.

Dzisiaj sobie o grze przypomniałem, zajrzałem do README, dowiedziałem się,
że na zwisy pomaga podanie magicznego parametru 4 w linii komend.
Poprawiłem więc dołączony skrypt run.sh i uruchomiłem go.
Tym razem nic się nie powiesiło i mogłem pograć. Bardzo sympatyczna gra,
z bardzo sympatyczną grafiką. Prawdopodobnie wciągająca, ale ja nie mam czasu,
by się dawać wciągnąć ;-), w szczególności, jeśli miałbym za to
zapłacić (mógłbym kupić taką grę, gdybym miał czas w nią grać). Zobaczyć
w każdym razie warto.

Zmagań z kartą TV ciąg dalszy…

Niby sytuacja beznadziejna, ale jeszcze się nie poddałem. Najpierw
spróbowałem odpalić system w 32-bitach. 32-bitowy chroot już miałem, więc
dorzuciłem tam kernela i parę innych pakiecików, skonfigurowałem gruba
i zabootowałem. Próba zgrania czegoś… i znowu, nie minęła minuta i kernel
płacze, że mu się filesystem popsuł… wrrr…

Kolejne podejście. Skompilowałem sobie własnego kernela (64-bity, skoro
nie widać różnicy), ale z wyłączonymi niektórymi podejrzanymi
ficzerami, jak np. CONFIG_PREEMPT. Reboot, próba zgrania czegoś… i znowu
oops.

Kolejne próby to wyłączanie wszelkich sterowników. Najgorzej było z USB,
ciągle coś mi ładowało moduły, nawet jak miały alias na „off” w modprobe.conf.
Przeniosłem gdzieś odpowiedni katalog z /lib/modules i się tego USB pozbyłem.
Dalej nic to nie dało.

Wszystko wskazywało na to, że programowe możliwości mi się wyczerpały,
więc zabrałem się za sprzęt. Wyciągnąłem nieużywaną kartę sieciową
i przestawiłem w slotach karty TV i SCSI. Start systemu, próba nagrywania…
i to samo.

Już właściwie postanowiłem, że wezmę tę kartę do pracy, sprawdzić ją na
płycie Intela, bo coś ten mój Asus A8N-E podejrzany jest… ale jeszcze
chciałem parę rzeczy sprawdzić…

I w końcu ruszyło. Nie wiem dokładnie co pomogło (dość mam rebootów, nie
będę sprawdzał), ale mogła to być jedna z dwóch rzeczy: albo options
bttv latency=248 gbuffers=32
w modprobe conf (wcześniej miałem
tylko latency=200, albo nic), albo przestawienie w BIOSie
synchronizacji zegara PCI (czy jakoś tak) z To CPU na 33.333.
W każdym razie teraz od ponad 1000 sekund idzie nagrywanie i nic się jeszcze
nie sypie. :-)

Update: chwilę po wysłaniu wpisu się jednak sypło :-(