vermin.eu.org

Specjalista IT na tru^Hopie

Entries Comments



Category: amilo


WPA, Amilo i Debian/Ubuntu

2 January, 2007 (09:21) | amilo, debian(ized), linux | By: vermin

Instalacja WEP jest prosta - wszystko sobie działa bezproblemowo, wystarczy wszak instalacja koniecznego i tak pakietu wireless-tools, a potem prosta komenda iwconfig eth1 essid enc restricted. Niestety z WPA trzeba się ciut namęczyć - szczególnie, jeśli posiada się kartę do której pasują sterowniki ipw2[21]00.

Pierwszym krokiem, który musimy wykonać, jest instalacja pakietu wpasupplicant, który wspomaga w autoryzacji - i to nie tylko jeśli chodzi o sieci WPA/WPA2 (TKIP, EAP), ale także WEP oraz sieci otwarte - więc jest pomocniejszy zdecydowanie niż ręczna konfiguracja przez iwconfig.
Niestety ma też swoje wady, przynajmniej w systemie Debian. Otóż nie instaluje on żadnych plików konfiguracyjnych, ani do katalogu /etc/, ani do katalogu /etc/init.d, co jak na rozpieszczającego mnie Debiana jest trzeba przyznać dziwne. Niemniej zmusza do tego, czego misie nie lubią - czyli zamiast “podejścia przez walkę” do przeczytania najpierw instrukcji. Szybkie przejrzenie katalogu /usr/share/doc/wpasupplicant powoduje, że procedura instalacji jest banalnie prosta. Potrzebujemy do niej jednak danych, których część zdobędziemy poprzez wykonanie komendy:
host:~# iwlist eth1 scan.

eth1      Scan completed :
          Cell 01 - Address: 00:16:41:60:13:B2
                    ESSID:"neostrada_195d"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Channel:10
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=68/100  Signal level=-59 dBm
                    Extra: Last beacon: 4ms ago
          Cell 02 - Address: 00:16:41:10:00:30
                    ESSID:"default"
                    Protocol:IEEE 802.11bg
                    Mode:Master
                    Channel:11
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                              11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    Quality=89/100  Signal level=-40 dBm
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (2) : CCMP TKIP
                        Authentication Suites (1) : PSK
                    Extra: Last beacon: 8ms ago

Widzimy, że w zasięgu mamy dwie sieci, jedną chronioną przez WEP, drugą zaś przez WPA - używające szyfrowania AES/TKIP oraz klucza wstępnej autoryzacji (PSK). Jeśli ów klucz znamy, to wystarczy teraz:

  • skopiować plik examples/wpa-psk-tkip.conf - cp examples/wpa-psk-tkip.conf /etc/wpa_supplicant/wpa_supplicant.conf
  • dokonać w nim odpowiednich zmian - czyli w liniach essid wpisujemy nazwę sieci (tu: default), w proto zostawić WPA, w key-mgmt zostawić WPA-PSK, w pairwise dodać CCMP, zaś w psk wpisać właściwy klucz
  • wydać komendę wpa_supplicant -w -i eth1 -D ipw -c /etc/wpa_supplicant/wpa_supplicant.conf, co przy założeniu, że AP nas wpuści, powinno spowodować autoryzację w sieci…

Niestety zamiast podłączenia się do sieci, otrzymujemy komunikat:

ioctl[IPW_IOCTL_WPA_SUPPLICANT]: Operation not supported
ioctl[IPW_IOCTL_WPA_SUPPLICANT]: Operation not supported
Failed to set encryption.
Trying to associate with 00:16:41:10:00:30 (SSID=’default’ freq=0 MHz)
Authentication with 00:00:00:00:00:00 timed out.

Jak widać problem leży gdzieś w sterowniku do ipw, który czegoś nie wspiera, nie ustawia szyfrowania i próbuje się autentykować do nicości/wszystkiego (ciekawe, co ma MAC ::?) Co nam pozostaje? Spróbujmy dokonać debugowania sesji - sam wpa_supplicant to dość dobrze wspiera, wystarczy, że do linii poleceń dodamy “-d”.
host:~# wpa_supplicant -w -i eth1 -D ipw -c /etc/wpa_supplicant/wpa_supplicant.conf -d. Jedną z pierwszych kluczowych dla nas linii jest:

wpa_driver_ipw_set_wpa: enabled=1
ioctl[IPW_IOCTL_WPA_SUPPLICANT]: Operation not supported

Suuuuuper. Jak zwykle kochane sterowniki ipw robią problemy (albo ich implementacja w wpa_supplicant?). Na szczęście jest rozwiązanie wygooglane w bugtracku Debiana - wystarczy zmienić sterownik dla wpa_supplicant na wext, czyli nasza linia wywołania programu powinna wyglądać następująco:
wpa_supplicant -w -i eth1 -D wext -c /etc/wpa_supplicant/wpa_supplicant.conf . Teraz pozostaje tylko skonfigurować interfejs - np. dhclient -i eth1 i voila.

Kernel 2.6.17 i ipw2200 razem nie lubią działać

15 December, 2006 (12:08) | amilo, debian(ized), linux | By: vermin

W debianie testing/etch pojawiło się swego czasu jądro systemu w wersji 2.6.17.

Wielkieś mi uczyniła pustki w domu moim,
Moje drogie jądro, tym pojawieniem swoim!

Jądro to automagicznie wyłączyło mi sieć bezprzewodową, generując przy tym tonę komunikatów typu

ipw2200: disagrees about version of symbol ieee80211_wx_get_encodeext
ipw2200: Unknown symbol ieee80211_wx_get_encodeext
ipw2200: disagrees about version of symbol ieee80211_wx_set_encode
ipw2200: Unknown symbol ieee80211_wx_set_encode
ipw2200: disagrees about version of symbol ieee80211_wx_get_encode
ipw2200: Unknown symbol ieee80211_wx_get_encode
ipw2200: disagrees about version of symbol ieee80211_txb_free
(…)
ipw2200: disagrees about version of symbol alloc_ieee80211
ipw2200: Unknown symbol alloc_ieee80211

Ponieważ jednocześnie owe jądro wnosiło sterownik w wersji 1.1.1 należało także zmienić firmware z wersji 2.4 na 3.0. Niestety - pomimo tych zmian sterownik ipw2200 w jądrze nie działał poprawnie z ieee80211. Pozostawało jedynie ściągnąć nowszą wersję sterownika i samemu znów skompilować moduł ipw2200-source lub rekompilować jądro. Co ciekawe, to zachowanie nie występowało w poprzedniej wersji jądra - 2.6.16, gdzie wszystko działało poprawnie.

Na szczęście po ostatnim upgradzie systemu pojawiło się w końcu jądro 2.6.18 z ipw2200 w wersji 1.2.0 oraz ieee80211 w wersji… 1.1.13 (czyli downgrade!). I znów wszystko działa :)

totem, gxine czyli filmy pod debianem i i810…

3 September, 2006 (09:37) | amilo, debian(ized) | By: vermin

Powstał następujący problem - chciałem sobie włączyć film pod linuxem. Rzadko to robię, bo jednak jak jestem pod linuxem to pracuję, a relax mam pod Windowsem. Okazało się jednak, że totem, który jest domyślnie zainstalowany jako odtwarzacz filmów wywraca się przy starcie pisząc coś o katalogu mcop (can’t create mcop directory).
To było proste - wystarczyło stworzyć katalog o nazwie maszyny, a dokładniej wydać polecenie:

mkdir -p $HOME/.kde/socket-$HOSTNAME

Niby pomogło, ale totem nadal wywracał się po starcie, sugerując zbyt mało pamięci (BadAlloc (insufficient resources for operation) BadRequest (invalid request code or no such operation)). Okazało się, że ładuje grafikę PNG (splashscreen), która po dekompresji coś mu się nie zgadzała i powodowała wyjątek. Super program swoją drogą, że niemożność załadowania splashscreena to krytyczny wyjątek…
Znowuż trzeba było odwołać się do operacji na plikach - tym razem wystarczyło zmienić rozmiar pliku totem_logo.png w /usr/share/totem na 800×600… lub go skasować. To nie powoduje problemów.

Haha! Teoretycznie już wszystko powinno działać! Niestety, tu na przeszkodzie stanęły dla odmiany sterowniki do chipsetu. Z niewiadomych przyczyn po starcie aplikacji film odtwarza się w miarę ok. Niemniej już drugie włączenie powoduje ostre zniekształcenia kontrastu i jasności - jakby jakieś wartości ustawiały się od razu w położeniach maksymalnych. Tego problemu na razie nie udało mi się zwalczyć :|

ubuntu, (a także o BCM 4360), czyli debian z ludzką twarzą?

3 November, 2005 (14:26) | amilo, linux | By: vermin

Jak pisałem w poprzednim poście na komputerze zawitało Ubuntu - czyli Linux for Human Beings. Prosty i przyjemny proces instalacji (o ile nie będziemy się uperać przy wpisaniu w opis użytkownika słowa zawierającego polskie znaki diakrytyczne), miły wygląd, zbliżona do debiana obsługa, szerokie wsparcie dla sprzętu i byłoby super, zaś sam system można by polecić każdemu, gdyby nie fakt, że mój, wcale nie niestandardowy komputer się podniósł ‘nie do końca’.
Po instalacji ubuntu powitał mnie czarny ekran. Komputer chodził, znaczy problem serwerem xorg. Zmiana drivera z ati (radeon9100) na vesa i już mam GUI. Nie ma sieci - znów niedopatrzenie, bo skoro instalują ndiswrappera to przecież nietrudno byłoby zapytać się podczas instalacji o włożenie płyty ze sterownikiem. Cóż instalacja wireless-tools, przegranie sterowników do etc, ndiswrapper -i bcm5.inf, modprobe ndiswrapper i pojawił się interfejs wlan0, (czyli znów inaczej niż w debianie, choć moim zdaniem słuszniej). Chwila konfiguracji sieci (swoją drogą, czy jest jakaś przyjemna nakładka uwalniająca od iwconfig?) i voila, ifup wlan0 dało spodziewane efekty.
Włączenie sieci było potrzebne, ponieważ ze względów licencyjnych ubuntu nie odtwarza out-of-the-box mp3, (że o innych rzeczach nie wspomnę). Dopiero przeedytowanie /etc/apt/sources.list i oprócz standardowych repozytoriów main i restricted otwarcie się na universe, (a dla odważnych i na multiverse), pozwala doinstalować brakujące fragmenty układanki. Tyle, że otwarcie na te repozytoria zaczyna debianizować system, więc można się zapytać - po co ubuntu?

P.S. podobnie jak wzmiankowany gdzieś wcześniej fedorafaq, także ubuntu posiada swoją bazę wiedzy, pozwalającą “w miarę” normalnie rozpocząć pracę.

Instalacja pakietu/modułu ze źródeł - debian style, czyli ipw2200 na amilo v8010

8 October, 2005 (16:32) | amilo, debian(ized), linux | By: vermin

Czasem zdarza się, iż ze względu na wymagania licencyjne niezgodne z DFSG niektóre pakiety nie są dostępne lub też są dostępne w postaci pakietu źródłowego a nie binarnego. W takim wypadku pozostaje nam tylko albo stworzyć własną paczkę albo skorzystać z pakietu źródłowego - czym zająłem się w ramach instalacji karty sieciowej w amilo pro v8010.
Cała procedura wyglądała następująco - po identyfikacji urządzenia za pomocą lspci -v przeszukałem archiwum repozytoriów Debiana w celu znalezienia odpowiedniego sterownika. Ten się oczywiście znalazł, ale przy jego nazwie świecił się napis contrib co oznaczało, że znajduje się poza repozytorium main… i poza moimi dotychczasowymi poszukiwaniami za pomocą apt-cache search. Aktualizacja /etc/apt/sources.list o sekcję contrib a następnie aktualizacja apt-a przez apt-get update zakończyła fazę przygotowań…
No to do roboty!
apt-get source ipw2200-source ściągnęło mi pakiet. Gdyby tylko tyle miało się dziać, to cała operacja nie miałaby sensu i można by sobie samemu ściągnąć tarballa. Możliwości systemu zarządzania pakietami Debiana pokazuje następna komenda - apt-get build-dep ipw2200-source, która wypluła kilka linijek tekstu, coś ściągnęła z sieci… i już.
Żeby cała instalacja działa się możliwie najprościej, zassane pliki powinny być w odpowiednim katalogu, czyli /usr/src bo to w koncu mają być moduły jądra - niestety w moim przypadku nie były. W tej sytuacji oczywiście należało działać dalej - i tu także debian był pomocny.
Najpierw niestety jednak trzeba było rozpakować tarballa (tar -xvf ipw2200-source.tar.gz) a potem wejść do katalogu o wydać komendy tworzące pakiet: dpkg-source -x ipw2200-source_version-revision.dsc oraz dpkg -i ../ipw2200-source_version-revision_arch.deb. Specjalnie nie użyłem tu wprost wersji, ponieważ w stable i testing wersje sterownika są różne a poza tym warto pamiętać jaką wersję się ma - o czym dalej. Wracając do użytych komend - pierwsza z nich tworzy pakiet zgodnie z opisem w pliku dsc zaś druga dokonała samej instalacji pliku, który jest już przechowywany lokalnie.
Ok - skoro pakiety w końcu są zainstalowane poprawnie w systemie, czyli właściwe pliki w końcu leżą w /usr/src to warto przejść do kolejnego narzędzia, czyli do module-assistant.
Jest ono akurat tworem specyficznym w pracy z modułami, ponieważ normalny program zazwyczaj już by działał :) (i notabene zazwyczaj miał swój tracker dzięki któremu można być up2date jeśli chodzi o bezpieczeństwo systemu). Wstępnie można sprawdzić czy jest on gotowy do kompilowania wobec aktualnego jądra - module-assistant prepare. Module assistant sprawdzi czy mamy pakiety pozwalające kompilować moduły - czyli źródła jądra i nagłówki. Oczywiście można te pakiety ściagnąc samemu, ale miło patrzec jak komputer pracuje :-)
No to czas dokonać ostatecznej kompilacji.
module-assistant a-i ipw2200
chrum, chrum…
No i problem z zależnościami, bo brak pakietu ieee80211 (ale na szczęście przewidzieliśmy fakt, że bez stosu protokołów bezprzewodowych karta nie wstanie - albo sprawdzilismy na packages.debian.org). Chwila pracy żeby dociągnąć powyższy moduł (też w wersji source), przekompilować, przekompilować raz jeszcze ipw2200 i… niestety nadal jest problem, bo choć są wszystkie moduły to niestety trzeba ściągnąć firmware ze stron intela. Ot, znów taka miła polityka Debiana…
Ponieważ pliki readme kierują nas na strony projektu http://ipw2200.sourceforge.net, a dokładniej na podstronę firmware.php, to warto pamietać którą wersję drivera mamy, żeby pobrac właściwe oprogramowanie. Kilkadziesiąt kilo do ściągnięcia, a potem to już tylko wrzucenie plików *.fw po rozpakowaniu tarballa do odpowiedniego katalogu - (ja wybrałem /usr/lib/hotplug/firmware, bo karta zostaje włączona przez hotplug) i ten artykuł już jest pisany dzięki połączeniu bezprzewodowemu.
BTW - dziwne jest, że nowy interfejs pojawil sie jako eth[n] a nie wlan[n]… Trzeba będzie sobie spatchować źródła, ale to zupełnie inny temat…

I na sam koniec mała uwaga - żeby sie tak nie mordować, w tym przypadku wystarczyłoby dodać repozytorium debian unofficial (korzystam z etch, a backports jeszcze sarge nie wspierają), w którym jest sporo ciekawego softu… ale przecież nie w tym rzecz, prawda?