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.

Diagnozowanie problemów z kartami sieciowymi.

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.

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.

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.

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