pcmcia howto pl 3 6VV7CN7KA5FMHBCPZXFPQQJ5WYUJSZU6CODOVUY


Opis sterowników do PCMCIA: Stosowanie i zalety. Następna strona Poprzednia strona Spis treści 3. Stosowanie i zalety. 3.1 Narzędzia do monitorowania urządzeń PCMCIA. Demon cardmgr normalnie wydaje sygnał dźwiękowy (beep) kiedy karta jest wsadzana, a ton tego dźwięku informuje nas o statusie nowo włożonej karty. Dźwięk wysoki a po nim niski informuje, że karta została zidentyfikowana, ale z jakiegoś powodu nie mogła zostać skonfigurowana. Jeden dźwięk niski informuje, że karta nie mogła zostać zidentyfikowana. Jeśli wszystkie moduły są poprawnie załadowane, polecenie lsmod daje mniej więcej taki wynik (bez włożonych kart): Module: #pages: Used by: ds 2 i82365 3 pcmcia_core 7 [ds i82365] Wszystkie moduły PCMCIA oraz demon cardmgr wysyłają komunikaty o statusie do systemowego programu logującego. Będzie to z reguły /var/log/messages albo /usr/adm/messages. Powinno to być pierwsze miejsce, do którego należy zajrzeć kiedy coś nie działa. Kiedy wysyłasz mi wiadomość o jakimś błędzie, zawsze dołącz zawartość tego pliku. Jeśli nie możesz znaleźć komunikatów z twojego systemu, to sprawdź konfigurację w pliku /etc/syslogd.conf, aby zobaczyć do jakich plików są one zapisywane. Cardmgr także zapisuje niektóre bieżące informacje o urządzeniach dla każdego gniazda w pliku /var/run/stab. Oto przykładowa zawartość tego pliku: Socket 0: Adaptec APA-1460 SlimSCSI 0 scsi aha152x_cs 0 sda 8 0 0 scsi aha152x_cs 1 scd0 11 0 Socket 1: Serial or Modem Card 1 serial serial_cs 0 ttyS1 5 65 W liniach opisujących urządzenia, pierwsze pole jest gniazdem, drugie - klasą urządzenia, trzecie - nazwą sterownika, czwarte jest używane, aby numerować urządzenia złożone (multiple devices) związane z tym samym sterownikiem, piąte - nazwą urządzenia, a ostatnie dwa pola są liczbą główną i poboczną dla danego urządzenia (jeśli jest dostępne). Polecenie cardctl może służyć do sprawdzenia statusu gniazda, albo jego konfiguracji. Oto przykładowy rezultat polecenia "cardctl config": Socket 0: Socket 1: Vcc = 5.0, Vpp1 = 0.0, Vpp2 = 0.0 Card type is memory and I/O IRQ 3 is dynamic shared, level mode, enabled Speaker output is enabled Function 0: Config register base = 0x0800 Option = 0x63, status = 0x08 I/O window 1: 0x0280 to 0x02bf, auto sized I/O window 2: 0x02f8 to 0x02ff, 8 bit Jeśli masz uruchomione X-y, to narzędzie cardinfo wyświetla informacje o statusie wszystkich gniazd PCMCIA, podobną w zawartości do "cardctl config". 3.2 Przegląd skryptów konfiguracyjnych PCMCIA. Każde urządzenie PCMCIA jest przyporządkowane jakiejś klasie, która opisuje jak powinno ono zostać skonfigurowane i jak nim zarządzać. Klasy są związane ze sterownikami urządzeń w /etc/pcmcia/config. Jest w tej chwili pięć klas urządzeń IO (sieć, SCSI, CD-ROM, dyski fixed i szeregowe) oraz dwie klasy urządzeń związanych z pamięcią (pamięć i FTL). Dla każdej klasy są dwa skrypty w /etc/pcmcia/config: główny skrypt konfiguracyjny (/etc/pcmcia/scsi dla urządzeń SCSI), i skrypt z opcjami (/etc/pcmcia/scsi.opts). Skrypt główny dla danego urządzenia zostanie wywołany, aby skonfigurować to urządzenie kiedy karta jest wkładana, i żeby wyłączyć dane urządzenie kiedy karta jest wyjmowana. Dla kart, z którymi jest związane kilka urządzeń, skrypt zostanie wywołany dla każdego urządzenia. Skrypty konfiguracyjne zaczynają od wyciągnięcia pewnych informacji o danym urządzeniu z pliku /var/run/stab. Każdy skrypt konstruuje "adres urządzenia" w zmiennej ADDRESS, który jest unikatowy dla urządzenia, które ma być skonfigurowane. Jest to przekazywane do skryptu *.opts, który powinien zwrócić informację o tym, jak dane urządzenie z podanego adresu powinno zostać skonfigurowane. Dla niektórych urządzeń, adres ten jest po prostu numerem gniazda. Dla innych, zawiera on dodatkowe informacje, które mogą być przydatne do zadecydowania jak skonfigurować dane urządzenie. Na przykład, urządzenia sieciowe przekazują swój adres Ethernet-owy jako część swojego "adresu urządzenia", tak żeby skrypt network.opts mógł tego użyć, aby wybrać z kilku różnych konfiguracji. Pierwszą częścią wszystkich adresów urządzeń jest bieżący schemat PCMCIA. Parametr ten jest używany do obsługi złożonych zbiorów konfiguracji urządzeń opartych na pojedynczej zewnętrznej zmiennej podanej przez użytkownika. Jeden ze sposobów użycia schematów to posiadanie schematu domowego, i schematu roboczego, który zawierałby różne zbiory parametrów konfiguracji sieci. Schemat bieżący jest wybierany przy pomocy polecenia cardctl. Domyślnym schematem, jeśli żaden nie jest podany, jest "default". Jako zasada ogólna podczas konfiguracji Linux-a na laptopa, urządzenia PCMCIA powinny być konfigurowane tylko przy pomocy skryptów do urządzeń PCMCIA. Nie próbuj konfigurować urządzenia PCMCIA w ten sam sposób co urządzenie dołączone na stałe. 3.3 Adaptery sieciowe PCMCIA. Normalnie interfejsy sieciowe typu Ethernet na Linux-ie mają nazwy eth0, eth1 itd. Kontrolery Token-Ring są obsługiwane podobnie, chociaż nazywane są tr0, tr1 itd. Polecenie ifconfig jest wywoływane, aby zobaczyć albo zmodyfikować stan urządzenia sieciowego. Własnością Linux-a jest to, że interfejsy sieciowe nie mają odpowiednich plików w katalogu /dev, więc nie bądź zaskoczony, że nie możesz ich znaleźć. Kiedy zostanie wykryta karta Ethernet-owa PCMCIA, zostanie jej przydzielona pierwsza wolna nazwa interfejsu, którą będzie przypuszczalnie eth0. Cardmgr wykona skrypt /etc/pcmcia/network, aby skonfigurować ten interfejs. Nie konfiguruj swojej karty Ethernet-owej w /etc/rc.d/rc.inet1 ponieważ karty może nie być kiedy skrypt ten jest wykonywany. Wstaw w komentarz wszystko, oprócz urządzenia "loopback" w rc.inet1. Jeśli twój system ma automatyczną procedurę konfiguracji sieci powinieneś zwykle wskazać, że nie masz zainstalowanej karty sieciowej. W zamian, zmodyfikuj plik /etc/pcmcia/network.opts, tak aby odpowiadał twojej lokalnej konfiguracji sieci. Skrypty network i network.opts zostaną wykonane tylko jeśli twoja karta Ethernet-owa jest obecna. Adres urządzenia przekazany do network.opts składa się, z czterech pól oddzielonych przecinkami: schematu, numeru gniazda, numeru urządzenia i sprzętowego adresu karty Ethernet. Numer urządzenia jest używany do numerowania urządzeń dla kart, które mają kilka interfejsów sieciowych, tak więc zwykle będzie to 0. Jeśli masz kilka kart sieciowych używanych do różnych celów, jedną z opcji byłoby skonfigurowanie kart oparte na numerze gniazda, jak tu: case "$ADDRESS" in *,0,*,*) # definicje dla karty sieciowej w gnieździe 0 ;; *,1,*,*) # definicje dla karty sieciowej w gnieździe 1 ;; esac Alternatywnie mogłyby one być skonfigurowane używając ich adresów sprzętowych, jak tu: case "$ADDRESS" in *,*,*,00:80:C8:76:00:B1) # definicje dla karty D-Link ;; *,*,*,08:00:5A:44:80:01) # definicje dla karty IBM esac Aby automatycznie zamontować i odmontować system plików NFS, najpierw dodaj te wszystkie systemy do /etc/fstab, ale w opcjach podaj noauto. W network.opts wpisz katalogi, w których mają być zamontowane systemy plików NFS w zmiennej MOUNTS. Jest tu szczególnie ważne, aby użyć albo cardctl albo cardinfo, aby wyłączyć kartę sieciową kiedy montowanie z NFS jest w ten sposób skonfigurowane. Nie jest możliwe czyste odmontowanie systemu plików NFS jeśli karta sieciowa jest po prostu wyrzucana bez ostrzeżenia. Dodatkowo oprócz zwykłych parametrów konfiguracyjnych dla sieci, skrypt network.opts może podawać inne akcje, które mają mieć miejsce po tym jak interfejs został skonfigurowany, albo przed zamknięciem interfejsu. Jeśli w network.opts zdefiniowana jest funkcja start_fn, zostanie ona wywołana przez skrypt sieciowy po skonfigurowaniu interfejsu, a nazwa interfejsu zostanie przekazana do tej funkcji jako pierwszy i jedyny argument. Podobnie jeśli funkcja stop_fn jest zdefiniowana, to zostanie ona wywołana przed zamknięciem interfejsu. Wybór transceiver-a. Typ transceiver-a można wybrać w network.opts przy pomocy ustawienia IF_PORT. Może to być zarówno wartość numeryczna jak we wcześniejszych wydaniach PCMCIA, jak i słowo kluczowe identyfikujące typ transceiver-a. Wartościami domyślnymi we wszystkich sterownikach sieciowych są: wykrywanie automatyczne interfejsu jeśli jest to możliwe, a w przeciwnym razie - 10baseT. Przy pomocy polecenia ifport można sprawdzić lub ustawić bieżący typ transceiver-a. Np.: # ifport eth0 10base2 # # ifport eth0 eth0 2 (10base2) Obecne wersje sterownika 3c589 próbują automatycznie wykryć połączenie sieciowe, ale nie jest to jeszcze w pełni funkcjonalne. Aby automatyczne wykrywanie działało, kabel sieciowy powinien tkwić w karcie podczas jej konfiguracji. Alternatywnym rozwiązaniem jest zmuszenie sterownika do sprawdzenia połączenia przy pomocy polecenia: ifconfig eth0 down up Komentarze na temat konkretnych kart. Przy kartach IBM CCAE i Socket EA musisz wybrać typ transceiver-a (10base2, 10baseT, AUI) gdy urządzenie sieciowe jest już skonfigurowane. Upewnij się, że typ transceiver-a zapisany w logach jest zgodny z rzeczywistym. Sterowniki dla kart SMC, Megahertz, Ositech i 3Com powinny automatycznie wykryć typ dołączonej sieci (10base2 lub 10baseT). Ustawienie typu transceiver-a kiedy sterownik jest już załadowany ma na celu zdefiniowanie pierwszej wartości sprawdzanej przez sterownik. Karta Farallon EtherWave jest właściwie zbudowana na bazie 3Com 3c589 ze specjalnym transceiver-em. Pomimo, iż EtherWave używa połączeń 10baseT jej transceiver wymaga, żeby 3c589 była skonfigurowana na tryb 10base2. Jeśli masz problemy z kartami IBM CCAE, NE4100, Thomas Conrad czy Kingston - spróbuj zwiększyć czas dostępu do pamięci opcją mem_speed=# dla modułu pcnet_cs. Przykład jak to zrobić znajdziesz w standardowym pliku config.opts. Wypróbuj prędkości do 1000 nanosekund. Na niektórych systemach przy karcie New Media Ethernet możliwe, że trzeba zwiększyć czas dostępu do portów IO opcją io_speed=# podczas ładowania modułu pcmcia_core. Aby ustawić tę opcję zmodyfikuj linijkę CORE_OPTS w skrypcie startowym. Obsługa muticastingu w sterowniku dla New media Ethernet nie jest pełna. Najnowszy sterownik będzie działał z jądrem skompilowanym do multicastingu, ale będzie ignorował takie pakiety. Tryb "promiscuous" powinien działać poprawnie. Wygląda na to, że sterownik używany przez karty IBM i 3Com token ring zachowuje się bardzo źle jeśli karty nie są połączone z pierścieniem podczas inicjalizacji. Zawsze podłączaj te karty do sieci kiedy są uruchamiane. Sterownik ten wymaga także wolnych portów w obszarze 0xA20-0xA27. Na niektórych systemach, automatyczne sprawdzanie konfliktów wśród portów IO błędnie określi ten obszar jako niedostępny. W tym wypadku, sprawdzanie może zostać wyłączone poprzez załadowanie modułu pcmcia_core z opcją probe_io=0. Nowsze karty Linksys i D-Link mają swój unikalny sposób wybierania typu transceiver-a, który nie jest obsługiwany przez sterowniki Linux-owe. Jednym ze sposobów na obejście tego jest wystartować DOS-a i użyć narzędzia dostarczonego przez sprzedawcę, aby wybrać transceiver i potem wystartować Linux-a na "ciepło". Szukam beta-testerów do narzędzia na Linux-a, które by umożliwiało taką funkcję. Jean Tourrilhes ( jt@hplb.hpl.hp.com napisał HOWTO na temat bezprzewodowych kart sieciowych WaveLAN. Diagnozowanie problemów z kartami sieciowymi. Czy twoja karta jest rozpoznawana jako karta etnernetowa? Sprawdź logi systemowe i upewnij się, że cardmgr identyfikuje twoją kartę poprawnie i startuje jeden ze sterowników sieciowych. Jeśli nie, to twoją kartę można wciąż użyć jeśli jest ona kompatybilna z jakąś obsługiwaną. Najprościej jest to zrobić jeśli karta "twierdzi", że jest kompatybilna z NE2000. Czy karta jest poprawnie skonfigurowana? Jeśli używasz obsługiwanej karty i została ona rozpoznana przez cardmgr, ale wciąż nie działa, to możliwy jest konflikt z przerwaniami lub portami. Zobacz jakich zasobów używa karta (z logów systemowych) i spróbuj wyłączyć je w /etc/pcmcia/config.opts, aby zmusić kartę do użycia innych. Jeśli twoja karta wydaje się być skonfigurowana poprawnie, ale czasami się zawiesza, szczególnie przy dużym obciążeniu systemu, możliwe, że musisz spróbować zmienić paramtery "timing-owe" gniazda dla sterownika. Więcej informacji znajdziesz w sekcji 2.3. Jeśli masz komunikaty w stylu "network unreachable" kiedy próbujesz dostać się do sieci, to przypuszczalnie błędnie ustawiłeś parametry w /etc/pcmcia/network.opts. Jednak z drugiej strony błędnie skonfigurowane karty z reguły nie zainicjują się i nie wyświetlą przy tym żadnych komunikatów Aby sprawdzić problemy z /etc/pcmcia/network.opts, zacznij od próby ping-owania innych systemów w tej samej podsieci uzywając ich adresów IP. Potem spróbuj ping-ować swój gateway, i maszyny w innych podsieciach. Ping-uj maszyny po ich adresach tylko po zrobieniu tych prostych testów. Upewnij się, że twój problem to naprawdę problem z PCMCIA. Sprawdzenie, czy karta działa pod DOS-em ze sterownikiem od sprzedawcy może pomóc. Sprawdź dwa razy modyfikacje w skrypcie /etc/pcmcia/network.opts. Upewnij się, że twoje kable, wtyczka "T", terminator itp. działają. 3.4 Urządzenia szeregowe i modemy PCMCIA. Linux-owe urządzenia szeregowe są dostępne poprzez specjalne pliki /dev/cua* i /dev/ttyS*. Urządzenia ttyS* są dla połączeń przychodzących, jak np. bezpośrednio podłączone terminale. Urządzenia cua* są dla połączeń wychodzących, jak np. modemy. Każdy fizyczny port szeregowy ma plik urządzenia ttyS i cua: to już zależy od ciebie jaki plik wykorzystasz w swojej aplikacji. Konfiguracja urządzenia szeregowego może być sprawdzana i modyfikowana poprzez polecenie setserial. Kiedy zostanie wykryta karta szeregowa lub modemowa PCMCIA, zostanie jej przypisany pierwszy dostępny slot urządzenia szeregowego. Będzie to zwykle /dev/ttyS1 (cua1) albo /dev/ttyS2 (cua2) w zależności od ilości wbudowanych portów szeregowych. Urządzenie ttyS* jest raportowane w pliku /var/run/stab. Domyślny skrypt z opcjami dla urządzenia szeregowego /etc/pcmcia/serial.opts podłączy odpowiedni w ramach udogodnienia plik urządzenia cua* do /dev/modem. Nie próbuj używać /etc/rc.d/rc.serial do konfiguracji modemu PCMCIA. Skrypt ten powinien być używany tylko do konfiguracji urządzeń zainstalowanych na stałe. Modyfikuj /etc/pcmcia/serial.opts jeśli chcesz jakichś specjalnych ustawień dla swojego modemu. Nie próbuj także zmieniać portu IO czy IRQ szeregowego urządzenia PCMCIA programem setserial. Poinformowałoby to sterownik szeregowy, że karta jest w innym miejscu, ale nie zmieniłoby ustawień sprzętowych karty. Skrypt konfiguracyjny pozwala na podanie innych opcji setserial jak rownież to czy linia dla tego portu powinna zostać dodana do /etc/inittab. Adres urządzenia przekazywany do serial.opts ma trzy pola odzielone przecinkami: pierwsze jest schematem, drugie - numerem gniazda, trzecie - numerem urządzenia. Numer urządzenia może przyjmować kilka wartości dla kart, które obsługują wieloportowe karty szeregowe, ale dla kart jednoportowych będzie to zawsze 0. Jeśli zwykle używasz więcej niż jednego modemu PCMCIA, możesz podać różne ustawienia oparte na numerze gniazda, jak tu: case "$ADDRESS" in *,0,*) # Opcje dla modemu w gnieździe 0 LINK=/dev/modem0 ;; *,1,*) # Opcje dla modemu w gnieździe 1 LINK=/dev/modem1 ;; esac Jeśli modem PCMCIA jest już skonfigurowany gdy Linux startuje, może zostać źle zidentyfikowany jako zwykły wbudowany port szeregowy. Jest to nieszkodliwe, chociaż, kiedy sterowniki PCMCIA przejmują kontrolę nad modemem, będzie mu nadany inny slot. Najlepiej albo zmodyfikować /var/run/stab albo użyć /dev/modem niż liczyć na to, że modem PCMCIA będzie zawsze miał przypisane to samo urządzenie. Jeśli skonfigurujesz twoje jądro, aby ładowało podstawowy sterownik do portów szeregowych jako moduł, musisz zmodyfikować /etc/pcmcia/config, aby wskazać, że ten moduł ma być ładowany. Zmień pozycję urządzenia szeregowego tak: device "serial_cs" class "serial" module "char/serial", "serial_cs" Diagnozowanie problemów z urządzeniami szeregowymi. Czy twoja karta jest rozpoznawana jako modem? Sprawdź log systemowy i upewnij się, że cardmgr identyfikuje kartę poprawnie i startuje sterownik serial_cs. Jeśli nie, to możliwe, że musisz dodać jeszcze jedną pozycję do swojego pliku /etc/pcmcia/config tak, że zostanie ona poprawnie zidentyfikowana. Więcej szczegółów w sekcji 3.6. Czy modem został poprawnie skonfigurowany przez serial_cs? Znowu, sprawdź logi systemowe i poszukaj komunikatów pochodzących od sterownika serial_cs. Jeśli zobaczyś "register_serial() failed()", to możesz mieć konflikt portów IO. Inną wskazówką na konflikt jest zgłoszenie urządzenia 8250; większość nowoczesnych modemów PCMCIA powinna być identyfikowana jako UART 16550A. Jeśli sądzisz, że masz do czynienia z konfliktem portów, zmodyfikuj /etc/pcmcia/config.opts i wyłącz obszar portów, który został zaalokowany dla modemu. A może jest konflikt przerwań? Jeśli log systemowy wygląda na dobry, ale modem po prostu nie działa, to spróbuj użyć setserial, aby zmienić IRQ na 0 i sprawdź czy modem działa. Wywołanie takie wymusza na sterowniku użycie wolniejszego trybu "polled" zamiast użycia przerwań. Jeśli to naprawia problem, to całkiem możliwe, że jakieś inne urządzenie w twoim systemie używa przerwania wybranego przez serial_cs. Powinieneś dodać linię do pliku /etc/pcmcia/config.opts wyłączające to przerwanie. Jeśli modem zdaje się działać, ale bardzo, bardzo wolno, to jest prawie pewne, że jest konflikt przerwań. Upewnij się, że twój problem, to rzeczywiście problem z PCMCIA. Pomocne może być sprawdzenie, czy karta działa pod DOS-em używając sterownika dostarczonego przez sprzedawcę. Nie testuj także karty w skomplikowanych warunkach jak SLIP czy PPP dopóki nie jesteś pewnien, że możesz nawiązywać proste połączenia. Jeśli proste rzeczy działają a SLIP - nie, to problem jest ze SLIP-em, a nie PCMCIA. Jeśli otrzymujesz komunikaty od jądra wskazujące na to, że moduł serial_cs nie może być załadowany, to znaczy, że jądro nie ma obsługi dla urządzeń szeregowych. Jeśli skompilowałeś sterownik szeregowy jako moduł, to musisz zmodyfikować /etc/pcmcia/config, aby zaznaczyć, że moduł serial powinien być załadowany przed serial_cs. 3.5 Adaptery PCMCIA SCSI. Wszystkie obecnie obsługiwane karty PCMCIA SCSI są podobne w działaniu do jednej z następujących kart: Qlogic, Adaptec AHA-152X albo Future Domain TMC-16x0. Sterowniki PCMCIA są stworzone przez dołączanie części specyficznego dla PCMCIA kodu (w qlogic_cs.c, toaster_cs.c albo fdomain_cs.c) do normalnego sterownika SCSI dla Linux-a. Kiedy wykryty zostanie nowy kontroler SCSI, sterowniki do SCSI będą szukać urządzeń. Sprawdź logi systemowe, aby upewnić się, że twoje urządzenia zostały wykryte poprawnie. Nowym urządzeniom SCSI zostanie przypisany pierwszy wolny plik urządzenia SCSI. Pierwszy dysk SCSI będzie /dev/sda, pierwsza taśma SCSI będzie /dev/st0, a pierwszy CD-ROM SCSI będzie /dev/scd0. Rdzeniowe sterowniki PCMCIA są w stanie dowiedzieć się od jądra 1.3.X i późniejszego, które urządzenia SCSI są podłączone do karty. Będą one wymienione w /var/run/stab, a skrypt konfiguracyjny SCSI /etc/pcmcia/scsi będzie wywołany jeden raz dla każdego dołączonego urządzenia, aby je albo skonfigurować albo wyłączyć. Skrypt domyślny nie robi nic, aby skonfigurować urządzenia SCSI, ale poprawnie odmontuje systemy plików z urządzeń SCSI kiedy karta zostanie usunięta. Sterowniki PCMCIA z jądrem w wersji 1.2.X nie potrafią automatycznie wykryć , które urządzenia są przypisane konkretnemu sterownikowi. W zamian za to, jeśli masz jedną normalną konfigurację urządzenia SCSI, możesz wymienić te urządzenia w /etc/pcmcia/scsi.opts. Na przykład: jeśli normalnie masz dysk i CD-ROM SCSI, użyłbyś: # Dla jądra 1.2: lista urządzeń dołączonych SCSI_DEVICES="sda scd0" Adresy urządzeń przekazywane do scsi.opts są skomplikowane, z powodu dużej ilości urządzeń, które mogą być dołączone do kontrolera SCSI. Adresy składają się albo z sześciu albo z siedmiu pól oddzielonych przecinkami: bieżący schemat, typ urządzenia, numer gniazda, kanał SCSI, ID, numer logicznej jednostki i opcjonalnie numer partycji. Typ urządzenia będzie jednym z: "sd" dla dysków, "st" dla taśm, "sr" dla CD-ROM-ów i "sg" dla ogólnych urządzeń SCSI. W większości ustawień, kanał SCSI oraz numer logicznej jednostki będzie 0. Dla urządzeń dyskowych z kilkoma partycjami, scsi.opts zostanie najpierw wywołany dla całego urządzenia, z pięciopolowym adresem. Skrypt ten powinien ustawić w zmiennej PARTS listę partycji. Potem, scsi.opts zostanie wywołany dla każdej partycji, z dłuższymi - siedmiopolowymi adresami. Na przykład: oto skrypt do konfiguracji urządzenia dyskowego pod SCSI ID = 3 z dwiema partycjami oraz CD-ROM pod SCSI ID = 6: case "$ADDRESS" in *,sd,*,0,3,0) # To urządzenie ma dwie partycje... PARTS="1 2" ;; *,sd,*,0,3,0,1) # Opcje dla partycji nr 1: # zaktualizuj /etc/fstab i zamontuj system plików ext2 na /usr1 DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y" FSTYPE="ext2" OPTS="" MOUNTPT="/usr1" ;; *,sd,*,0,3,0,2) # Opcje dla partycji nr 2: # zaktualizuj /etc/fstab i zamontuj system plików ext2 na /usr2 DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y" FSTYPE="msdos" OPTS="" MOUNTPT="/usr2" ;; *,sr,*,0,6,0) # Opcje dla CD-ROM-u ID = 6 PARTS="" DO_FSTAB="y" ; DO_FSCK="n" ; DO_MOUNT="y" FSTYPE="iso9660" OPTS="ro" MOUNTPT="/cdrom" ;; esac Jeśli twoje jądro nie posiada sterownika "top-level" (do dysku, taśmy itp.) dla konkretnego urządzenia SCSI, wtedy urządzenie to nie zostanie skonfigurowane przez sterownik PCMCIA. Jako efekt uboczny, nazwa urządzenia w /var/run/stab będzie wyglądać mniej więcej tak: "sd#nnnn", gdzie "nnnn" jest czterocyfrową liczbą szesnastkową. Zdarza się to, jeśli cardmgr nie jest w stanie przetłumaczyć ID urządzenia SCSI na odpowiadającą mu nazwę urządzenia Linux-owego. Możliwe jest zmodularyzowanie sterowników "top-level" do SCSI, tak aby były ładowane tylko wtedy kiedy zostanie wykryty kontroler SCSI. Aby tak zrobić, musisz zmodyfikować /etc/pcmcia/config, aby poinformować cardmgr, które dodatkowe moduły muszą być załadowane kiedy dany kontroler jest konfigurowany. Na przykład: device "aha152x_cs" class "scsi" module "scsi/scsi_mod", "scsi/sd_mod", "aha152x_cs" Taka zawartość pliku spowodowałaby załadowanie rdzennego modułu SCSI oraz modułu sterownika "top-level" do dysków przed ładowaniem normalnego modułu sterownika PCMCIA. Skrypt Configure nie wykryje automatycznie zmodularyzowanych sterowników SCSI, tak więc będziesz musiał włączyć obsługę SCSI ręcznie używając opcji konfiguracyjnych. Zawsze włączaj swoje urządzenia przed włączeniem laptopa, albo przed włożeniem karty kontrolera, tak aby szyna SCSI została poprawnie zakończona podczas konfiguracji kontrolera. Bądź także bardzo ostrożny przy wyjmowaniu kontrolera SCSI. Przed wyjęciem karty upewnij się, że wszystkie urządzenia do niej przydzielone zostały odmontowane i wyłączone. Najlepiej przed wyjęciem karty skorzystać z programu cardctl albo cardinfo i zażądać usunięcia karty z systemu. W chwili obecnej wszystkie urządzenia SCSI powinny być włączane przed włożeniem karty sterownika SCSI i powinny pozostać podłączone do momentu wyjęcia karty sterownika lub wyłączenia laptopa. Korzystanie z tych kart niesie za sobą potencjalne komplikacje nieznane w przypadku korzystania ze zwykłych sterowników ISA. Szyna SCSI przenosi sygnał "termination power" niezbędny do prawidłowego działania zwykłych pasywnych terminatorów SCSI. Sterowniki SCSI standardu PCMCIA nie dostarczają sygnału "power termination", jeśli jest on wymagany musi zostać dostarczony przez urządzenie zewnętrzne. Niektóre zewnętrzne urządzenia SCSI mogą zostać skonfigurowane w taki sposób, aby dostarczały wspomnianego sysgnału. Inne, jak np. Zip Drive czy Syquest EZ-Drive używają aktywnych terminatorów, przez co nie są zależne od sygnału podawanego na szynie SCSI. W niektórych przypadkach może okazać się konieczne skorzystanie ze specjalnego bloku terminatora, np. APS SCSI Sentry 2, który posiada niezależne, zewnętrzne źródło zasilania. Konfigurując łańcuch urządzeń SCSI musisz sobie zdawać sprawę, które z nich wymagają lub dostarczają sygnał "power termination". Kontroler Adaptec APA-460 SlimSCSI nie jest obsługiwany. Kartę tę sprzedawano oryginalnie pod nazwą Trantor, a kiedy Adaptec połączył się z Trantor-em, kontynuowano sprzedaż Trantora z nazwą Adaptec. APA-460 nie jest kompatybilny z jakimkolwiek istniejącym sterownikiem Linux-owym. Nie jestem pewien jak trudno byłoby napisać sterownik; nie sądzę, żeby ktoś był w stanie wyciągnąć jakiekolwiek informacje od Adaptec-a. (Nieobsługiwany) Trantor SlimSCSI może zostać zidentyfikowany następująco: Trantor / Adaptec APA-460 SlimSCSI FCC ID: IE8T460 Shipped with SCSIworks! driver software (Obsługiwany) Adaptec SlimSCSI może zostać zidentyfikowany następująco: Adaptec APA-1460 SlimSCSI FCC ID: FGT1460 P/N: 900100 Shipped with EZ-SCSI driver software Diagnozowanie problemów z kartami SCSI. Przy sterowniku aha152x_cs (używanym przez Adaptec-a, New Media i kilka innych) źródłem częstych problemów w napędach taśm wydaje się być obsługa odłączania/podłączania SCSI. Aby wyłączyć, tę właściwość dodaj następującą linię do pliku /etc/pcmcia/config.opts: module "aha152x_cs" opts "reconnect=0" Jeśli skompilowałeś obsługę SCSI jako moduł (CONFIG_SCSI to "m"), podczas konfiguracji PCMCIA, musisz wyraźnie zaznaczyć, że chcesz, aby sterownik został skompilowany. Musisz zmodyfikować plik /etc/pcmcia/config, aby ładować moduł SCSI przed odpowiednim sterownikiem *_cs. 3.6 Karty pamięci PCMCIA. Sterownik memory_cs obsługuje wszystkie typy kart pamięci, jak również dostarcza bezpośredniego dostepu do obszaru adresowego pamięci PCMCIA dla kart, które mają inne funkcje. Po załadowaniu tworzy kombinację urządzeń znakowych i blokowych. Przeczytaj stronę podręcznika na temat modułów, aby dowiedzieć się więcej o schemacie nazewnictwa urządzeń. Urządzenia blokowe są używane do dostępu a'la dysk (tworzenie i montowanie systemów plików itp.) Urządzenia znakowe służą do bezpośredniego (raw) niebuforowanego czytania i pisania do jakiegoś miejsca. Adres urządzenia przekazany do memory.opts składa się z dwóch pól: schematu i numeru gniazda. Opcje odnoszą się do pierwszej zwykłej partycji pamięci na odpowiedniej karcie pamięci. Oto przykład skryptu, który automatycznie montuje karty pamięci w zależności od złącza, w które zostaną karty włożone: case "$ADDRESS" in *,0,0) # Zamontuj systemy plików, ale nie uaktualniaj /etc/fstab DO_FSTAB="n" ; DO_FSCK="y" ; DO_MOUNT="y" FSTYPE="ext2" ; OPTS="" MOUNTPT="/mem0" ;; *,1,0) # Zamontuj systemy plików, ale nie uaktualniaj /etc/fstab DO_FSTAB="n" ; DO_FSCK="y" ; DO_MOUNT="y" FSTYPE="ext2" ; OPTS="" MOUNTPT="/mem0" ;; esac Niektóre starsze karty pamięci i większość prostych statycznych kart RAM nie posiadają "Card Information Structure" (CIS), która jest schematem używanym przez karty PCMCIA do identyfikowania się. Normalnie cardmgr założy, że każda karta, w której brakuje owej struktury jest prostą kartą pamięci i załaduje sterownik memory_cs. I tak, częstym skutkiem ubocznym ogólnego identyfikowania kart jest identyfikacja innego typu kart jako karty pamięci. Sterownik memory_cs używa heurystyki, aby zgadnąć pojemność tych kart. Heurystyka nie działa jednak dla kart zabezpieczonych przed zapisem i może czynić błędy także w innych przypadkach. Jeśli karta została źle zidentyfikowana, jej rozmiar powinien być wyraźnie podany podczas używania takich poleceń jak dd czy mkfs. Używanie kart pamięci "flash". Adres urządzenia przekazywany do ftl.opts składa się z trzech lub czterech pól: schematu, numeru gniazda, numeru regionu i opcjonalnie numeru partycji. Większość kart "flash" ma tylko jeden region pamięci "flash", więc numerem regionu zwykle będzie zero. Aby użyć karty pamięci "flash" jako zwykłego urządzenia blokowego jak dysk, stwórz najpierw partycję "flash translation layer" na tym urządzeniu poleceniem ftl_format: ftl_format -i /dev/mem0c0c Zauważ, że polecenie to uzyskuje dostęp do karty przez bezpośredni interfejs pamięci karty. Raz sformatowana karta może być używana jako zwykłe urządzenie blokowe przy pomocy sterownika ftl_cs. Na przykład: mke2fs /dev/ftl0c0 mount -t ext2 /dev/ftl0c0 /mnt Nazewnictwo dla urządzeń FTL jest trochę pokręcone. Poboczne liczby urządzeń mają trzy części: numer karty, numer regionu na tej karcie i opcjonalnie partycję w tym regionie. Region może być traktowany jako pojedyncze urządzenie blokowe bez tablicy partycji (jak dyskietka) albo można go podzielić na partycje tak jak dysk twardy. Urządzenie "ftl0c0" jest kartą 0 o numerze regionu 0 i całym regionem. Urządzenia od "ftl0c0p1" do "ftl0c0p4" są głównymi partycjami 1 do 4 jeśli region został podzielony. Są dwa główne formaty dla kart pamięci flash: styl "flash translation layer", i styl "Microsoft Flash File System". Format FTL jest ogólnie bardziej elastyczny ponieważ pozwala na użycie każdego zwykłego wysokopoziomowego systemu plików (ext2, ms-dos itp.) na kartach pamięci "flash" tak jakby były one na zwykłym urządzeniu dyskowym. FFS jest całkiem odmiennym systemem plików. Linux nie umie w tej chwili obługiwać kart sformatowanych w tym systemie. 3.7 Karty PCMCIA napędów ATA/IDE. Obsługa napędów ATA/IDE wymaga jadra 1.3.72 lub nowszego. Specyficzna dla PCMCIA część sterownika to fixed_cs. Pamiętaj żeby używać cardctl albo cardinfo do wyłączania karty ATA/IDE przed wyjęciem jej, ponieważ sterownik nie jest odporny na "gorące zmiany". Adresy urządzenia przekazywane do fixed.opts składają się z trzech albo czterech pól: bieżący schemat, numer gniazda, numer seryjny napędu i opcjonalny numer partycji. Tak samo jak w przypadku urządzeń SCSI, fixed.opts jest najpierw wywoływany dla całego urządzenia. Jeśli fixed.opts zwróci listę partycji w zmiennej PARTS, skrypt zostanie wtedy wywołany dla każdej partycji. Oto przykład pliku fixed.opts, który montuje pierwszą partycję jakiejkolwiek karty ATA/IDE na /mnt. case "$ADDRESS" in *,*,*) PARTS="1" ;; *,*,*,1) DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y" FSTYPE="msdos" OPTS="" MOUNTPT="/mnt" ;; esac Zauważ, że domyślny plik fixed.opts posiada te linie, ale są one w komentarzu. Jeśli chcesz, możesz mieć oddzielne konfiguracje dla konkretnych kart oparte na ich numerach seryjnych. Aby odszukać numer seryjny napędu, użyj narzędzia ide_info. Wtedy część fixed.opts może wyglądać tak: case "$ADDRESS" in *,*,Z4J60542) # To są moje rzeczy DOS-owe PARTS="1" ;; *,*,Z4J60542,1) DO_FSTAB="y" ; DO_FSCK="y" ; DO_MOUNT="y" FSTYPE="msdos" OPTS="" MOUNTPT="/mnt" ;; esac Diagnozowanie problemów z adapterami ATA/IDE. Niektóre napedy IDE zaburzają specyfikację PCMCIA przez żądanie dłuższego czasu na "rozkręcenie się" niż maksymalny dozwolony czas na setup. Aby używać tych kart załaduj moduł pcmcia_core z opcją: CORE_OPTS="unreset_delay=400" Aby używać urządzenia ATA/IDE CD-ROM, twoje jądro musi być skompilowane z włączoną opcją CONFIG_BLK_DEV_IDECD. Będzie to zwykle przypadek dla standardowych jąder, chociaż jest to coś o czymś powinieneś wiedzieć jeśli kompilujesz jądro z własną konfiguracją. 3.8 Karty wielofunkcyjne. Od jądra w wersji 1.3.73 pojedyncze przerwanie może być dzielone między kilka sterowników jak sterownik szeregowy i ethernetu. Jeśli używasz wielofunkcyjnej karty z nowszym jądrem, to wszystkie funkcje tej karty są dostępne bez potrzeby przeładowywania sterowników. Symultaniczne użycie dwóch funkcji karty wymaga trochę sprytu i różni sprzedawcy sprzętu zaimplementowali dzielenie przerwań na swój, niekompatybilny (i czasem nieudokumentowany) sposób. Sterowniki do niektórych kart (Ositech Jack of Diamonds, 3Com 3c562, Linksys) udostępniają poprawnie symultaniczność, ale inne (szczególnie Megahertz) - nie. Wcześniejsze jądra nie obsługiwały dzielenia przerwań pomiędzy różne sterowniki urządzeń, więc jest niemożliwe skonfigurowanie kart modemu i ethernetu do działania symultanicznego. Sterowniki ethernetowy i modemowy są ładowane jednocześnie automatycznie. Chociaż sterownik ethernetowy przejmuje przerwanie domyślnie. Aby użyć modemu możesz usunąć sterownik ethernetowy z pamięci i zrekonfigurować port szeregowy czymś takim: ifconfig eth0 down rmmod 3c589_cs setserial /dev/modem autoconfig auto_irq setserial /dev/modem Drugie polecenie setserial powinno zweryfikować czy port został skonfigurowany tak, aby użyć przerwania poprzednio używanego przez sterownik ethernetowy. 3.9 Kiedy można bezpiecznie włożyć albo wyjąć kartę PCMCIA ? Teoretycznie możesz wkładać i wyjmować karty PCMCIA w każdym momencie. Chcociaż, generalnie dobrze jest nie wyjmować karty jeśli jest ona akurat używana przez jakąś aplikację. Jądra starsze niż 1.1.77 często zawieszałyby się podczas wyjmowania kart szeregowych lub modemowych, ale to powinno już być naprawione. 3.10 Card Services i Advanced Power Management. Pakiet Card Services może zostać skompilowany z obsługą APM (Advanced Power Management) jeśli zainstalowałeś ten pakiet w swoim systemie. APM jest dołączony do jąder 1.3.46 i nowszych. Opiekunem tego pakietu jest obecnie Rick Faith (faith@cs.unc.edu), a narzędzia do APM można uzyskać z ftp.cs.unc.edu. Moduły PCMCIA zostaną skonfigurowane automatycznie pod względem APM jeśli na twoim systemie zostanie wykryta wersja kompatybilna. Aby poprawnie zakończyć działanie i ponownie wystartować karty PCMCIA, możesz wykonać cardctl suspend przed zawieszeniem twojego laptopa i cardctl resume po przywróceniu go do pracy bez zmian w APM. Niezadziała to jednak z modemem PCMCIA, który jest właśnie używany, ponieważ sterownik szeregowy nie jest w stanie zachować i odtworzyć parametrów operacyjnych modemu. APM wydaje się być niepewne na niektórych systemach. Jeśli masz problemy z APM i PCMCIA w twoim systemie, spróbuj zawęzić problem do jednego albo drugiego pakietu zanim wyślesz list z raportem o błędzie. Niektóre sterowniki, szczególnie sterowniki PCMCIA SCSI, nie mogą się odtworzyć ze stanu zawieś/odtwórz. Kiedy używasz karty PCMCIA SCSI, użyj cardctl eject zanim zawiesisz system. 3.11 Jak mam wyłączyć kartę PCMCIA bez wyjmowania jej ? Użyj polecenia cardctl albo cardinfo. Polecenie cardctl suspend # zawiesi jedno gniazdo, i wyłączy jego zasilanie. Odpowiednie polecnie resume obudzi kartę w stan poprzedni. 3.12 Jak usuwam sterowniki PCMCIA z pamięci ? Aby usunąć cały pakiet PCMCIA, uruchomrc.pcmcia tak: /etc/rc.d/rc.pcmcia stop Uruchomienie tego skryptu zajmie kilka sekund, ponieważ daje on czas wszystkim sterownikom-klientom na poprawne zakończenie działania. Jeśli jakieś urządzenie PCMCIA jest akurat używane, zakończenie będzie niekompletne, i niektóre moduły jądra mogą nie zostać usunięte. Aby tego uniknąć użyj cardctl eject, aby zamknąć wszystkie gniazda przed uruchomieniem rc.pcmcia. Status wyjściowy polecenia cardctl określi czy jakieś gniazdo nie mogło być zamknięte. Następna strona Poprzednia strona Spis treści

Wyszukiwarka