System naprawdę wolny

Używając opensource’owego systemu operacyjnego, mam być zmuszony do korzystania z Internetu jedynie za pośrednictwem kabla? Nie! To zupełnie nie ma sensu – pomyślałem po zapoznaniu się z moim nowym notebookiem. Okazało się, że zainstalowany na nim openSUSE 10 nie rozpoznawał poprawnie zintegrowanej “sieciówki” Wi-Fi.

Nowoczesne dystrybucje Pingwina nie mają zazwyczaj problemów z obsługą typowego sprzętu – w szczególności takich komponentów, jak karty dźwiękowe, graficzne czy sieciowe (Ethernet). Niestety, uruchomienie interfejsu bezprzewodowego LAN-u jest w tej chwili piętą achillesową wielu odmian Linuksa. Nie znaczy to jednak, że nie ma sposobu na połączenie się z WLAN-em. Jest to jak najbardziej wykonalne, choć wymaga nieco wysiłku.

Komercyjne metody

Zanim wskażemy, w jaki sposób samodzielnie rozwiązać problem instalacji karty bezprzewodowej, należy zauważyć, że istnieją odmiany Pingwina, które dość dobrze radzą sobie z “sieciówkami” Wi-Fi. W praktyce komercyjne odmiany Linuksa, np. Mandriva 2006 PowerPack czy też SUSE 10, są znacznie lepiej przygotowane do obsługi wspomnianych urządzeń niż ich otwarte wersje ściśle przestrzegające licencji GPL. Różnice te wynikają głównie z faktu, że standardowe jądro OS-u zawiera sterowniki dla ograniczonej liczby urządzeń Wi-Fi. Do komercyjnych wersji Pingwina często dodawane są natomiast drivery “komercyjne”, jak i te tworzone na bazie otwartego kodu, jednak niewłączone jeszcze oficjalnie do kernela Pingwina. Na pewno jest to interesujące rozwiązanie problemów z instalacją WLAN-u, choć niestety dla wielu osób zbyt kosztowne. Dlatego zaprezentujemy metody, które nie będą wymagały od nas dodatkowych nakładów finansowych.

Dwie drogi

Aby ożywić kartę Wi-Fi, powinniśmy przede wszystkim postarać się o sterownik dla niej. W wypadku Linuksa należy naturalnie zainstalować odpowiedni driver przewidziany dla tego OS-u. Prawda? Niekoniecznie. Możemy zawsze pokusić się o zastosowanie sterownika NDIS przystosowanego dla systemów Windows. Otóż NDIS (Network Driver Interface Specification) to specyfikacja, zgodnie z którą opracowywane są drivery sieciowe dla Windows API. Oprogramowanie tego rodzaju realizuje jedynie ściśle określone funkcje systemowe i sprzętowe. Mimo faktu, że drivery NDIS są dość mocno powiązane z architekturą Okien, możliwe stało się jednak opracowanie specjalnej nakładki na Linuksa, która potrafi skorzystać z binarnych sterowników napisanych dla Win32API. Pierwotnie idea ta została zrealizowana przez firmę Linuxant w komercyjnym oprogramowaniu o nazwie DriverLoader. Na szczęście obecnie mamy także do wyboru bazującego na otwartym kodzie NdisWrappera.

Karciane gry

Niezależnie, czy będziemy chcieli skorzystać ze sterowników przeznaczonych dla Pingwina czy też zastosujemy te pochodzące z Windows, powinniśmy najpierw jednoznacznie zidentyfikować naszą kartę Wi-Fi. Nie powinniśmy mieć z tym problemu, nawet gdy informacji takiej nie znajdziemy w dokumentacji naszego notebooka. Wystarczy, że z konsoli jako użytkownik root wpiszemy polecenie lspci. Na ekranie powinniśmy teraz zobaczyć listę wszystkich urządzeń zainstalowanych w komputerze. Każdy z komponentów peceta opisany jest przez ciąg znaków zawierający między innymi rodzaj urządzenia, np. zwykłe karty sieciowe opisywane są najczęściej jako “Ethernet controller”. Na liście odnajdujemy więc ciąg “Network controller”, gdyż pod takim kryptonimem ukrywają się karty Wi-Fi. Następnie w ciągu znaków odczytamy pełną nazwę urządzenia, najczęściej wraz z rodzajem zastosowanego chipsetu oraz wersją sprzętu, np. “Network controller: Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller (rev 03)”. Na podstawie oznaczeń, w tym konkretnym wypadku BCM4306, możemy rozpocząć poszukiwania sterowników dla naszej karty.

Szukaj, a znajdziesz

W poszukiwaniu sterownika dla Pingwina powinniśmy zajrzeć najpierw na stronę “Wireless LAN resources for Linux” (http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/). Jest to zdecydowanie najlepsze miejsce w Internecie, w którym znajdziemy wiele szczegółowych danych o obsługiwanych przez Linuksa kartach bezprzewodowych. Na podstawie opisu naszej karty, podanego przez program lspci, sprawdzamy teraz, czy zidentyfikowany sprzęt ma szansę zadziałać pod Pingwinem. W tym konkretnym wypadku okazało się, że dla rodziny kart firmy Broadcom z serii 43XX od niedawna dostępny jest eksperymentalny sterownik. W opisywanej witrynie umieszczono odnośnik do strony WWW (http://bcm43xx.berlios.de/), gdzie można pobrać driver oraz znaleźć instrukcje dotyczące jego instalacji. Jak się okazuje, ożywienie karty nie jest proste, gdyż wymaga kompilacji modułu do jądra systemu. Musimy więc w naszym systemie zainstalować źródła używanego przez nas kernela – zazwyczaj wiąże się to z wgraniem pakietu o nazwie kernel-source. Operacja ta będzie przebiegać nieco inaczej w każdej dystrybucji – np. użytkownicy SUSE posłużą się w tym celu YaST-em. W wypadku opisywanego urządzenia Broadcoma musimy pobrać odpowiedni ekstraktor firmware’u (narzędzie do “wyciągnięcia” oprogramowania producenta z pliku z BIOS-em) dla naszej karty oraz zestaw łatek dla jądra. Następnie ściągamy zbiór zawierający firmware karty Wi-Fi, używając polecenia wget http://openwrt.inf.fh-brs.de/~nbd/wl_apsta.o. Wspomniany ekstraktor możemy znaleźć dla naszej dystrybucji w formie paczki binarnej bcm43xx-fwcutter lub też musimy go samodzielnie przekompilować. W tym drugim wypadku wystarczy, że rozpakujemy źródła poleceniem tar -zxvf bcm43xx-fwcutter.tar.gz, a następnie w katalogu bcm43xx-fwcutter wykonamy polecenie ./configure oraz make i ostatecznie make install. Wykonujemy teraz ekstrakcję firmware’u, wydając komendy bcm43xx-fwcutter wl_apsta.o, i przenosimy go do odpowiedniego katalogu cp bcm*.fw /lib/firmware. Ostatecznie możemy nałożyć na zainstalowane wcześniej źródła jądra wymaganą łatkę o nazwie “ieee80211 SoftMac layer” oraz rozpakować sterownik poleceniem tar -jvxf bcm43xx.tar.bz2. Kompilacja modułu i jego instalacja wymagają wprowadzenia standardowych poleceń make i

make install

.

Po tych operacjach powinniśmy móc już uruchomić nasz interfejs Wi-Fi. Aby przetestować jego działanie, wprowadzamy teraz następujące komendy:

modprobe bcm43xx
ifconfig eth1 up
iwconfig eth1 ESSID <Nazwa_AccessPointa>
iwconfig eth1 rate 11Mb
ifup eth1

Gdyby się okazało, że w naszym systemie nie można wykonać polecenia iwconfig, oznacza to, że brakuje pakietu o nazwie wireless-tools. W razie potrzeby musimy go zainstalować, używając standardowego dla naszej odmiany Pingwina menedżera pakietów.

Jak zainstalować sterownik?
Jeżeli dysponujemy kartą Wi-Fi bazującą na chipsecie, dla którego opracowano driver dla Linuksa, to procedura instalacji sterownika dla niej będzie zazwyczaj bardzo podobna i można ją opisać w kilku krokach:

  • Pobranie pakietu wireless-tools, źródeł sterownika oraz firmware’u.
  • Zainstalowanie pakietu kernel-sources oraz ewentualnego nałożenia na niego dodatkowych łatek (może być konieczna ponowna kompilacja jądra OS-u).
  • Rozpakowanie źródeł drivera i jego kompilacja.
  • Ekstrakcja firmware’u.
  • Uaktywnienie interfejsu bezprzewodowego.