Previous Next Table of Contents

8. Sprzęt: Karty sieciowe

8.1 Kontakt z autorem

Autorem tej sekcji jest Konrad Stępień i z nim się kontaktujcie, jak coś nie działa :-). Dzięki, Konrad!

8.2 Jak zainstalować pod Linuxem kartę sieciową xx ?

W chwili obecnej każda dystrybucja Linuxa jest przygotowana tak, żeby obsłużyć niemal każdy popularny sprzęt. Jądro dostarczane wraz z dystrybucją posiada skompilowane do modułów sterowniki większości popularnych kart sieciowych takich jak wszelkiego rodzaju NE-1000/2000, 3Com, SMC itd. Aby sprawdzić, jakie karty są wkompilowane wystarczy obejrzeć zawartość katalogu /lib/modules/x.y.z/net/. Bardzo popularne głównie ze względu na niskie ceny, są karty NE-2000, dlatego dalszy opis będzie dotyczył tego typu kart.

Istnieje spora szansa, że Linux sam sobie wykryje i zainstaluje kartę sieciową na etapie instalacji. Aby się o tym przekonać należy wydać polecenie lsmod. Jako efekt jego działania otrzymujemy na ekranie listę podobną do tej:

Module:        #pages:  Used by:
ip_alias           1            1 (autoclean)
ne                 2            1 (autoclean)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
8390               2    [ne]    0 (autoclean)

Jeśli jedna z linii zawiera ne, to znaczy, że nasza karta jest już widziana przez jądro i należy jedynie skonfigurować sieć (nadać adres IP, ustawić routing). Jeśli posiadamy np. kartę 3Com-509, zamiast ne będzie 3c509. Podobnie z innymi typami.

Jeżeli system nie rozpoznał karty w czasie startu, należy spróbować załadować moduł ręcznie, pisząc modprobe ne (lub np. modprobe 3c509) Jeśli wyświetli się komunikat typu:

loading device 'eth0'...
ne.c:v1.10 9/23/94 Donald Becker (becker@cesdis.gsfc.nasa.gov)
NE*000 ethercard probe at 0x300: 00 80 48 eb f2 11
eth0: NE2000 found at 0x300, using IRQ 10.

...to karta została zainstalowana.

8.3 modprobe nie chce załadować modułu, lub moduł jest ale karta nie działa

Nie zawsze autodetekcja działa poprawnie, czasem system nie jest w stanie znaleźć karty, albo znajduje ją źle. Należy wtedy dokładniej zapoznać się z konfiguracją systemu. Przede wszystkim sprawdzić należy na ustawienia karty (port i przerwanie czyli I/O i IRQ). Może się zdarzyć, że karta używa tych samych zasobów co inne urządzenia, wtedy należy zmienić konfigurację karty lub konfliktowego urządzenia.

Jeśli wszystko jest w porządku, ponawiamy próbę załadowania modułu, podając dodatkowe informacje o adresie i przerwaniu wydając polecenie modprobe ne io=0x300 irq=10

8.4 Jak zrobić, żeby Linux ładował kartę przy starcie?

W pliku /etc/conf.modules zapisuje się konfigurację modułów jądra. Należy dopisać tam linie odpowiadające konfiguracji naszej karty Przykładowy taki plik może wyglądać następująco

options eth0 io=0x300 irq=10
alias eth0 ne

Jeśli to nie zadziała, (bardzo rzadkie przypadki), trzeba dopisać odpowiednie komendy (insmod, modprobe) do któregoś z plików startowych znajdujących się w /etc/rc.d/. Pliki te mogą się znacznie różnić z zależności od dystrybucji.

8.5 Mam chyba coś nietypowego, co z tym zrobić?

Po pierwsze, trzeba sprawdzić wszystkie parametry, a także czy na pewno ładujemy odpowiedni moduł. Np. niektóre karty SMC (EZ-Card) są to faktycznie NE-2000 i tak należy je instalować. Sporo problemów sprawiały też klony NE-2000 działające na szynie PCI. Oyrginalnie NE-2000 były wyłącznie kartami ISA (wtedy zresztą nie było PCI). Pełna obsługa kart NE-2000 na szynie PCI pojawiła się w jądrze 2.0.31. Wcześniejsze jądra mogą mieć problemy. Najlepszym wyjściem jest zainstalowanie (naj)nowszego jądra. Jeśli karta jest nowa/nietypowa, można jeszcze poszukać różnych nieoficjalnych łat (patchy) na jądro. Zawsze warto też zajżeć na http://cesdis.gsfc.nasa.gov/linux/drivers/

8.6 Moja karta jest typu bezzworkowa lub PnP. Jak ją ustawić?

Do takich kart najczęściej dołączona jest dyskietka zawierająca różne sterowniki oraz program konfiguracyjny. Programy takie na ogół działają pod DOS-em. Jeśli można wyłączyć PnP na karcie lepiej to zrobić, a następnie ustawić wszystkie parametry i zapisać w pamięci karty.

W przypadku kart typowo PnP możliwe są trzy drogi.

8.7 Jak zmusić Linuxa żeby widział 2 karty sieciowe?

Najpierw należy doprowadić do sytuacji, w której można załadować ręcznie sterowniki obu kart. Jeśli wywołanie 2 razy modprobe (na ogół trzeba podać dodatkowe paremetry) nie zgłasza błędów. Oczywiście konieczne jest takie skonfigurowanie obu kart, aby korzystały z innych zasobów. Jeśli Linuxa da się "ręcznie" przekonać do działanie z dwoma kartami,

Dalej postępujemy podobnie jak w przypadku jednej. Przykładowy plik /etc/conf.modules dla 2 kart NE-2000 powinien wyglądać mniej więcej tak:

options ne io=0x300,0x260 irq=5,10
alias eth0 ne
alias eth1 ne

8.8 Kiedy kompilować sterowniki w jądro i jak je konfigurować?

Kwestia czy kompilować jako moduł, czy w jądro jest mocno "ideologiczna". Teoretycznie obsługa urządzenia wkompilowanego w jądro może być nieznacznie szybsza. W zasadzie dobry sterownik powinien działać i jako moduł i wkompilowany, jednak są sterowniki których nie można kompilować do modułu, lub takie które nie bardzo chcą jako moduł pracować. Moduły są jedynym wyjściem jeśli zachodzi potrzeba ładowania i usuwania sterownika w trakcie pracy systemu, lub gdzy trzeba urządzenie jakoś dodatkowo inicjalizować (np. PnP).

Parametry do driverów wkompilowanych przekazuje się przy starcie systemu przez podanie komendy:

LILO: ether=IRQ,IO_ADDR,PARAM1,PARAM1,NAME (wszystkie parametry są opcjonalne)

Żeby sobie zaoszczędić wpisywania, można dodać do lilo.conf:

append ether=5,0x300,eth0

W przypadku 2 kart podajemy ether=x,y,z,eth0 ethet=a,b,c,eth1

8.9 Od autora sekcji

To co napisałem wynika z moich doświadczeń z kartami Compex RL2000, RL2000A RL2000 PCI, Genius GE-2000 kilka podwersji zworkowych i bez, a także 3Com 509 (ISA) i 590 (PCI), oraz SMC EZ-card.

Jeśli chodzi o karty PCI zgodne z NE, trenowałem to na mojej prywatnej RL2000 na jądrach poniżej i powyżej 2.0.30

Wszystko pisałem przy założeniu, że obsługa karty skompilowana jest jako moduł, bo tak są dostarczane "gotowe" dystrybucje


Previous Next Table of Contents