Opis sterowników do PCMCIA
Autor: David Hinds, dhinds@hyper.stanford.edu
v1.105, 9 Września 1997
WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii BB..MMaarruusszzeewwsskkii@@jjttzz..oorrgg..ppll
v2.0, 13 Grudnia 1997
Dokument ten opisuje jak zainstalować i używać Card Services PCMCIA w
Linux-ie oraz odpowiada na niektóre często zadawane pytania.
Najnowszą wersję oryginału tego dokumentu można zawsze znaleźć pod
adresem hyper.stanford.edu. Wersja HTML znajduje siÄ™ pod adresem
hyper.stanford.edu/HyperNews/get/pcmcia/home.html
Dokument ten został napisany
w standardzie ISO-8859-2. Nowsza wersja zawiera uaktulanione wskaza
nia na katalog zawierajÄ…cy jÄ…dro na ftp.icm.edu.pl. Kolejna wersja
jest uaktualnieniem do obecnej wersji oryginału.
______________________________________________________________________
Table of Contents:
1. Informacje ogólne i wymagania sprzętowe.
1.1. Wprowadzenie.
1.2. Prawa autorskie i Disclaimer.
1.3. Jaka jest najnowsza wersja i skąd mogę ją wziąć ?
1.4. Jakie systemy są obsługiwane ?
1.5. Jakie karty PCMCIA są obsługiwane?
1.6. Kiedy moja nowa karta będzie obsługiwana ?
1.7. Listy dyskusyjne.
2. Kompilacja, instalacja i konfiguracja.
2.1. Wymagania i ustawienia jÄ…dra.
2.2. Instalacja.
2.3. Post-instalacja dla systemów używających skryptów
inicjacyjnych a'la BSD.
2.4. Post-instalacja dla systemów używających skryptów
inicjacyjnych a'la SYS V.
2.5. Opcje konfiguracji specyficzne dla danego systemu.
2.6. Problemy podczas ładowania modułów jądra.
2.7. Problemy z przerwaniem zmiany statusu karty.
2.8. Problemy z identyfikacjÄ… karty.
2.9. Dlaczego nie dystrybujesz binariów do PCMCIA ?
2.10. Dlaczego ten pakiet jest taki wielki ?
3. Stosowanie i zalety.
3.1. Narzędzia do monitorowania urządzeń PCMCIA.
3.2. Przegląd skryptów konfiguracyjnych PCMCIA.
3.3. Adaptery sieciowe PCMCIA.
3.3.1. Wybór transceiver-a.
3.3.2. Komentarze na temat konkretnych kart.
3.3.3. Diagnozowanie problemów z kartami sieciowymi.
3.4. UrzÄ…dzenia szeregowe i modemy PCMCIA.
3.4.1. Diagnozowanie problemów z urządzeniami szeregowymi.
3.5. Adaptery PCMCIA SCSI.
3.5.1. Diagnozowanie problemów z kartami SCSI.
3.6. Karty pamięci PCMCIA.
3.6.1. Używanie kart pamięci "flash".
3.7. Karty PCMCIA napędów ATA/IDE.
3.7.1. Diagnozowanie problemów z adapterami ATA/IDE.
3.8. Karty wielofunkcyjne.
3.9. Kiedy można bezpiecznie włożyć albo wyjąć kartę PCMCIA ?
3.10. Card Services i Advanced Power Management.
3.11. Jak mam wyłączyć kartę PCMCIA bez wyjmowania jej ?
3.12. Jak usuwam sterowniki PCMCIA z pamięci ?
4. Zaawansowane tematy.
4.1. Alokoacja zasobów dla urządzeń PCMCIA.
4.2. Jak zrobić dwie różne konfiguracje urządzeń do domu i pracy ?
4.3. Startowanie z urzÄ…dzenia PCMCIA.
4.3.1. Skrypt-pomocnik pcinitrd.
4.3.2. Tworzenie dyskietki startowej z initrd.
4.3.3. Instalacja obrazu initrd na napędach bez Linux-a.
5. Jak radzić sobie z nieobsługiwanymi kartami.
5.1. Konfiguracja nieobsługiwanych kart.
5.2. Jak mam dodać obsługę dla karty kompatybilnej z NE2000 ?
5.3. Interfejs PCMCIA do dyskietek.
5.4. Co jest z obsługą kart Xircom ?
6. Wskazówki do śledzenia (debugging) i informacje do
programowania.
6.1. Jak mogę wysłać pomocny list o błędzie ?
6.2. Informacje na temat niskopoziomowego śledzenia PCMCIA.
6.3. Jak mam napisać sterownik Card Services dla nowej karty ?
6.4. Wskazówki dla autorów sterowników klientów PCMCIA.
6.5. Od tłumacza.
______________________________________________________________________
11.. IInnffoorrmmaaccjjee ooggóóllnnee ii wwyymmaaggaanniiaa sspprrzzęęttoowwee..
11..11.. WWpprroowwaaddzzeenniiee..
Card Services dla Linux-a to kompletny pakiet obsługujący PCMCIA.
Zawiera on zestaw ładowalnych modułów jądra, które tworzą wersję
aplikacji interfejsowych dla PCMCIA Card Services, zestaw sterowników
klientów dla specyficznych kart, oraz demona-menedżera do kart, który
może reagować na wkładanie kart i ich wyjmowanie poprzez ładowanie i
usuwanie odpowiednich modułów. Obsługuje on także tzw. "gorące
wymiany" kart PCMCIA, tak że karty mogą być wkładane i wyjmowane w
każdej chwili.
Oprogramowanie to jest w ciągłym rozwoju. Zawiera przypuszczalnie
błędy i należy go używać ostrożnie. Zrobię co w mojej mocy, żeby
poprawić błędy zgłaszane do mnie, ale jeśli nie powiesz mi o takim, to
mogę się o nim nigdy nie dowiedzieć. Jeśli już użyjesz tego
oprogramowania, mam nadzieję, że wyślesz mi swoje doświadczenia, złe
czy dobre !
Jeśli masz jakieś sugestie na temat polepszenia tego dokumentu, daj mi
znać dhinds@hyper.stanford.edu.
11..22.. PPrraawwaa aauuttoorrsskkiiee ii DDiissccllaaiimmeerr..
Copyright (c) 1996, 1997 David A. Hinds
Dokument tez może być reprodukowany lub dystrybuowany bez mojej
wyraźnej zgody. Wersje zmodyfikowane, włączając tłumaczenia na inne
języki, mogą być wolno dystrybuowane, zakładając, że są jasno
identyfikowane jako takie, i ta uwaga o prawach autorskich jest w nich
zawarta.
Dokument ten może być zawarty w dystrybucjach komercyjnych bez mojej
wyraźnej zgody. Ponieważ nie jest to wymagane chciałbym być
powiadomiony o takowych działaniach. Jeśli zamierzasz rozprowadzać ten
dokument jako pracę wydawaną, skontaktuj się ze mną, aby upewnić się,
że masz najnowszą wersję.
Dokument ten jest rozprowadzany "takim jakim jest", bez wyraźnych czy
wynikających gwarancji. Używaj informacji zawartych tutaj na swoje
własne ryzyko.
11..33.. JJaakkaa jjeesstt nnaajjnnoowwsszzaa wweerrssjjaa ii sskkąądd mmooggęę jjąą wwzziiąąćć ??
Bieżącą główną wersją Card Services jest wersja 2.9, a pomniejsze
uaktualnienia czy poprawki błędów są numerowane jako 2.9.1, 2.9.2 itd.
Kod źródłowy najnowszej wersji jest dostępny pod adresem
hyper.stanford.edu. Nazywa się _p_c_m_c_i_a_-_c_s_-_2_._9_._?_._t_a_r_._g_z. Będzie tam
przeważnie kilka wersji. Z reguły trzymam najnowszą podwersję wersji
głównej. Nowe wersje główne mogą zawierać względnie nieprzetestowany
kod, tak więc trzymam także najnowszą wersję poprzedniej wersji
głównej jako względną stabilną wersję, do której można się cofnąć;
bieżącą taką wersją jest 2.8.23. To już zależy od ciebie czy
zdecydujesz siÄ™ na wersjÄ™ najnowszÄ… z 2.9.x czy na 2.8.23; w pliku
_C_H_A_N_G_E_S znajdują się najważniejsze różnice.
Adres hyper.stanford.edu jest mirrorowany pod adresem sunsite.unc.edu
w katalogu /pub/Linux/kernel/pcmcia. [Od tłumacza.]Serwer ten z kolei
jest mirrorowany w Polsce pod adresem ftp.icm.edu.pl.
Postaram się też umieszczać główne wersje na tsx-11.mit.edu w katalogu
/pub/linux/packages/laptops/pcmcia teraz i później.
Jeśli nie czujesz się na siłach, żeby skompilować sterowniki do
PCMCIA, w wersji bieżącej są zawarte pre-kompilowane sterowniki w
najpopularniejszych dystrybucjach: Slackware, Red Hat, Caldera i
Yggdrasil, między innymi.
11..44.. JJaakkiiee ssyysstteemmyy ssąą oobbssłłuuggiiwwaannee ??
Kod ten powinien działać na prawie wszystkich laptopach nadających się
do Linux-a. Obsługiwane są wszystkie popularne kontrolery PCMCIA
włączając w to Intel, Cirrus, Vadem, VLSI, Ricoh i Databook.
Kontrolery ustawiane używane w IBM i Toshiba-ch także są obsługiwane.
Doki (docks) kart PCMCIA dla systemów typu desktop także powinny
działać tak długo, dopóki są tego typu, że wkłada się je bezpośrednio
do szyny ISA, niż poprzez kontrolery SCSI-PCMCIA czy IDE-PCMCIA.
Kontroler Motorola 6AHC05GA używany w niektórych laptopach Hyundaia
nie jest obsługiwany. Kontrolery ustawiane w HP Omnibook 600 nie są
obsługiwane. Kontroler mostka PCI-CardBus (od SMC, Ricoh-a, Cirrus-a i
TI) jest obecnie obsługiwany tylko w przypadku trybu 16-bitowego, a i
tak obsługa ta jest ciągle trochę eksperymentalna.
11..55.. JJaakkiiee kkaarrttyy PPCCMMCCIIAA ssąą oobbssłłuuggiiwwaannee??
Wersja obecna zawiera sterowniki dla różnych kart ethernetowych,
sterownik do modemu, kart portów szeregowych, niektórych kontrolerów
SCSI, sterownik do kart ATA/IDE oraz sterowniki do kart pamięci które
powinny obsługiwać większość kart SRAM i niektóre karty flash. Plik
_S_U_P_P_O_R_T_E_D_._C_A_R_D_S zawarty w każdej wersji Card Services zawiera
wszystkie karty jakie działają w przynajmniej jednym właściwym
systemie.
Prawdopodobieństwo tego, że karta nie wymieniona w tym pliku będzie
działać zależy od typu tej karty. Zasadniczo wszystkie modemy powinny
działać z zawartym sterownikiem. Niektóre karty sieciowe mogą działać
jeśli są wersjami OEM karty obsługiwanej. Inne typy kart IO (bufory
ramkowe, karty dźwiękowe itd.) nie będą działać dopóki ktoś nie
napisze odpowiednich sterowników.
11..66.. KKiieeddyy mmoojjaa nnoowwaa kkaarrttaa bbęęddzziiee oobbssłłuuggiiwwaannaa ??
Niestety, nikt mi z reguły nie płaci za pisanie sterowników, tak więc
jeśli chcesz mieć sterownik do swojej ulubionej karty, będziesz
przypuszczalnie musiał zrobić część roboty na własną rekę. W wersji
idelanej, chciałbym się kierować w stronę modelu zbliżonego do jądra
Linux-a, gdzie będę głównie odpowiedzialny za "rdzeń" kodu do PCMCIA a
inni autorzy pisaliby sterowniki do konkretnych urządzeń. W pliku
SUPPORTED.CARDS wspomniane są niektóre karty, dla których sterownik
jest w trakcie pisania. Będę się starał pomóc gdzie tylko mogę ale
miej na uwadze, że śledzenie (debugging) sterowników do urządzeń w
jÄ…drze poprzez e-mail nie jest zbytnio efektywne.
Producenci zainteresowani pomocą w tworzeniu obsługi ich urządzeń mogą
się ze mną skontaktować w sprawie konkretów.
11..77.. LLiissttyy ddyysskkuussyyjjnnee..
Kiedyś zajmowałem się bazą danych i listą dyskusyjną na temat
użytkowników Linux-a na PCMCIA. Ostatnio zmieniłem swoją stronę WWW z
informacjami na temat PCMCIA w stronÄ™ "HyperNews", ze zbiorem
wiadomości na temat PCMCIA w Linux-ie. Są listy na temat instalacji i
konfiguracji, na temat różnych typów kart oraz na temat programowania
i śledzenia (debug) pod PCMCIA. Strona z informacjami na temat PCMCIA
jest pod adresem
http://hyper.stanford.edu/HyperNews/get/pcmcia/home.html
.
Użytkownicy mogą ustawić sobie opcję informowania poprzez email o
nowych odpowiedziach na konkretne pytania, albo o wszystkich nowych
wiadomościach w danej kategorii. Mam nadzieję, że stanie się to
użytecznym archwium informacji dla pytań, które wychodzą poza treść
tego HOWTO.
Jest lista dyskusyjna, której tematem jest Linux na laptopie - lista
"linux-laptop". Aby uzyskać więcej informacji, wyślij list zawierający
słowo "help" na adres majordomo@vger.rutgers.edu. Aby zapisać się na
tę listę, wyślij list zawierający łańcuch "subscribe linux-laptop" na
ten sam adres. Lista ta może być dobrym forum dyskusyjnym na temat
Linux-a na PCMCIA.
Na Stronie Domowej Linux-a na Laptopy
http://www.cs.utexas.edu/users/kharker/linux-laptop znajduje siÄ™ wiele
odwołań do adresów, na których są informacje na temat konfigurowania
Linux-a na konkretnych typach laptopów. Jest także przeszukiwalna baza
danych na temat konfiguracji systemu.
22.. KKoommppiillaaccjjaa,, iinnssttaallaaccjjaa ii kkoonnffiigguurraaccjjaa..
22..11.. WWyymmaaggaanniiaa ii uussttaawwiieenniiaa jjÄ…Ä…ddrraa..
Zanim zaczniesz, powinieneś pomyśleć czy rzeczywiście musisz samemu
skompilować pakiet PCMCIA. Wszyskie popularne dystrybucje Linux-a są
dostarczane wraz z pakietami zawierajÄ…cymi skompilowane sterowniki dla
PCMCIA. Ogólnie musisz tylko zainstalować od nowa sterowniki jeśli
potrzebujesz jakiejś nowej cechy obecnych sterowników albo jeśli
zaktualizowałeś czy przekonfigurowałeś jądro tak, że przestało być
kompatybilne ze sterownikami przychodzącymi z dystrybucją. Chociaż
kompilacja pakietu PCMCIA nie jest trudna technicznie, to wymaga
jednak pewnego obycia z Linux-em.
Następujące elementy powinny być zainstalowane w twoim systemie zanim
zaczniesz instalować PCMCIA:
· Jedno z nastÄ™pujÄ…cych jÄ…der: 1.2.8 do 1.2.13, 1.3.30, 1.3.37,
1.3.39 do 1.3.99, 1.99.* (czyli, pre-2.0), 2.0.* lub 2.1.*.
· Bieżąca wersja pakietu z moduÅ‚ami i narzÄ™dziami do nich.
· (Opcjonalnie) "Forms" - interface dla użytkownika pod X11.
Wersja najnowsza wymaga jądra w wersji 1.2.8 lub wyższej, albo jądra z
serii testowych 1.3.30 lub wyższe, 1.3.38 jest definitywnie popsute, a
1.3.31 do 1.3.36 nie są przetestowane. Wymaga także względnie świeżej
wersji narzędzi do modułów. Nie ma łat na jądro specyficznych dla
PCMCIA.
Musiz mieć pełne drzewo źródeł jądra, nie tylko aktualny obraz jądra,
aby skompilować pakiet PCMCIA. Moduły PCMCIA zawierają niektóre
odwołania do plików ze źródeł jądra. O ile ty możesz chcieć
skompilować nowe jądro, żeby usunąć niepotrzebne sterowniki,
instalacja PCMCIA nie wymaga tego.
Bieżące stabilne wersje źródeł jądra oraz łaty do niego są dostępne
pod adresem ftp://ftp.icm.edu.pl/pub/Linux/kernel/v2.0. Bieżąca wersja
narzędzi jest pod tym samym adresem w pliku modules-2.0.0.tgz. Jądra
w wersji rozwojowej znajdujÄ… siÄ™ pod adresem
ftp://ftp.icm.edu.pl/pub/Linux/kernel/v2.1.
W pliku Documentation/Changes znajdujÄ… siÄ™ opisy wersji wszystkich
rodzajów innych składników systemu, które są wymagane dla tej wersji
jądra. Możesz sprawdzić tę listę i upewnić się czy twój system jest
aktualny, szczególnie jeśli ostatnio uaktualniałeś jądro. Jeśli
używasz jądra 2.1, upewnij się, że używasz poprawnej kombinacji
bibliotek dzielonych i narzędzi do modułów. Najnowsze wersje narzędzi
do modułów, tak samo jak wersje dla starszych jąder można znaleźć pod
adresem http://www.pi.se/blox/modules.
Jeśli planujesz używanie karty ethernetowej PCMCIA podczas
konfigurowania twojego jądra powinieneś włączyć obsługę sieci, ale
wyłącz obsługę zwykłych kart sieciowych, włączając w to "pocket and
portable adapters". Sterowniki do kart sieciowych PCMCIA sÄ…
zaimplementowane jako ładowalne moduły. Jakiekolwiek sterowniki
wkompilowane w twoje jądro będą tylko zabierać miejsce.
Jeśli chcesz używać SLIP-a, PPP czy PLIP-a musisz albo skonfigurować
twoje jądro z włączonymi tymi opcjami, albo użyć modułów ładowalnych
tych sterowników. Niestety w jądrze w wersji 1.2.X nie można
skompilować pewnych opcji jako moduły ładowalne (jak np. kompresja
SLIP-a) więc najlepiej będzie jeśli wkompilujesz ten sterownik do
jądra jeśli go potrzebujesz.
Jeśli chcesz używać kontrolera Token Ring do PCMCIA, musisz
wkompilować obsługę Token Ring do swojego jądra - "Token Ring driver
support", ale powinieneś wyłączyć CONFIG_IBMTR.
Jeśli chcesz używać kontrolera IDE PCMCIA, musisz włączyć opcję
CONFIG_BLK_DEV_IDE_PCMCIA, w jÄ…drach w wersji 1.3.72 do 2.1.7. Starsze
jądra nie obsługują urządzeń IDE. nowsze jądra nie wymagają
specjalnych ustawień.
Jeśli będziesz używał kontrolera SCSI PCMCIA, powinieneś włączyć opcję
CONFIG_SCSI podczas konfiguracji jądra. Włącz także wszelkie
sterowniki "top level" (dyski SCSI, taśmy, CD-ROM-y, generic), których
spodziewasz się używać. Wszystkie sterowniki "low level" dla
konkretnych kontrolerów powinny być wyłączone, ponieważ będą tylko
zajmować miejsce.
Jeśli chcesz zmodularyzować sterownik, który jest potrzebny do
urządzenia PCMCIA, musisz zmodyfikować plik /etc/pcmcia/config, aby
podać, które moduły mają być załadowane dla których typów kart. Na
przykład, jeśli sterownik szeregowy jest zmodularyzowany, wtedy
mógłbyś zmienić definicję urządzenia szeregowego na:
device "serial_cs"
class "serial" module "misc/serial", "serial_cs"
Pakiet ten zawiera narzędzie do podawania statusu karty oparte na X11
- cardinfo. Narzędzie to jest oparte na wolno dystrybuowanym
interfejsie zwanym "Forms Library", które będziesz musiał zainstalować
przed stworzeniem cardinfo. Dystrybucja binarna jest na
hyper.stanford.edu. Są tam wersje a.out oraz ELF. Będziesz także
musiał mieć wszystkie normalne pliki nagłówkowe pod X i biblioteki.
22..22.. IInnssttaallaaccjjaa..
Oto streszczenie procesu instalacji:
· Rozpakuj pcmcia-cs-2.9.?.tar.gz w /usr/src.
· Uruchom make config w nowym katalogu pcmcia-cs-2.9.?
· Uruchom make all, potem make install.
· Ustaw skrypty startowe dla PCMCIA i pliki opcji w /etc/pcmcia
odpowiednio dla twojego systemu.
Jeśli planujesz zainstalować jakieś dodatkowe sterowniki klienta nie
zawarte w dystrybucji PCMCIA, rozpakuj każdy z nich w głównym katalogu
źródeł PCMCIA. Potem postępuj zgodnie z normalnymi instrukcjami
kompilacji. Dodatkowe sterowniki zostanÄ… skompilowane i zainstalowane
automatycznie.
Uruchomienie make config zapyta o kilka opcji konfiguracyjnych i
sprawdzi twój system, aby zweryfikować czy spełnia on wszystkie
wymagania instalacji obsługi PCMCIA. W większości przypadków, będziesz
po prostu akceptował wszystkie domyślne opcje. Upewnij się, że
dokładnie sprawdziłeś komunikaty wyjściowe w razie błędów.
Jeśli kompilujesz zestaw PCMCIA do instalacji na inną maszynę, podaj
alternatywny katalog docelowy kiedy zostaniesz zapytany przez skrypt
konfiguracyjny. Powinna to być ścieżka bezwzględna. Wszystkie
narzędzia do PCMCIA zostaną zainstalowane względem tego katalogu.
Będziesz mógł następnie "zarchiwizować" ten katalog poleceniem tar i
skopiować go na maszynę docelową, a następnie rozpakować względem jej
katalogo głównego, aby zainstalować wszystko we właściwym miejscu.
Jeśli "cross-kompilujesz" na innej maszynie, możesz podać alternatywne
nazwy kompilatora i linkera. Może to być także pomocne na systemach z
pomieszaną architekturą a.out i ELF. Skrypt zapyta także o dodatkowe
opcje śledzenia dla kompilatora.
Niektóre z narzędzi wspierających (cardctl i cardinfo) mogą być
skompilowane w formie "safe" (bezpiecznej) lub "trusting" (ufajÄ…cej).
Forma bezpieczna nie pozwala użytkownikom innym niż root na
modyfikację konfiguracji karty. Forma ufająca pozwala zwykłemu
użytkownikowi na zawieszenie, odwieszenie i reset karty oraz na zmianę
bieżącej konfiguracji. Skrypt konfiguracyjny zapyta cię czy chcesz
skompilować narzędzia jako "safe" czy "trusting"; wartością domyślną
jest "safe".
Jest kilka opcji konfiguracji jądra które mają wpływa na narzędzia do
PCMCIA. Skrypt konfiguracyjny może je wywnioskować z działającego
jądra (najpopularniejszy przypadek). Alternatywnie, jeśli kompilujesz
do instalacji na inną maszynę może przeczytać konfigurację z drzewa
źródeł jądra, albo każda opcja może być podana interaktywnie.
Uruchomienie make all a potem make install stworzy i następnie
zainstaluje moduły do jądra i programy narzędziowe. Moduły do jądra
sÄ… instalowane w /lib/modules//pcmcia. Programy cardmgr i
cardctl są instalowane w /sbin. Jeśli tworzony jest cardinfo, to
instalowany jest on w /usr/bin/X11.
Pliki konfiguracyjne zostaną zainstalowane w /etc/pcmcia. Jeśli
instalujesz na starej wersji, twoje stare pliki konfiguracyjne zostanÄ…
zarchiwizowane przed skasowaniem ich. Zachowanym skryptom zostanÄ…
nadane rozszerzenia w stylu *.~1~, *.~2~.
Jeśli nie wiesz jakiego typu jest twój kontroler, to możesz użyć
narzędzia probe z podkatalogu cardmgr, aby go wykryć. Są dwa główne
typy: Databook TCIC-2 i kompatybilne z Intel i82365SL.
Demon na poziomie użytkownika obsługuje włożenie i wyjęcie karty.
Nazywa się on cardmgr. Jest podobny w funkcjonowaniu do wcześniejszej
wersji pcmciad Barry'ego Jaspana. Cardmgr czyta plik konfiguracyjny
opisujÄ…cy znane karty PCMCIA z /etc/pcmcia/config. W pliku tym zawarte
jest jakie zasoby mogą być zaalokowane dla użycia przez urządzenia
PCMCIA, i mogą być zmodyfikowane dla twojego systemu. Zobacz stronę w
podręczniku systemowym "man" na temat pcmcia, aby dowiedzieć się
więcej na temat tego pliku.
22..33.. PPoosstt--iinnssttaallaaccjjaa ddllaa ssyysstteemmóóww uużżyywwaajjąąccyycchh sskkrryyppttóóww iinniiccjjaaccyyjjnnyycchh
aa''llaa BBSSDD..
Niektóre dystrybucje Linux-a, włączając Slackware, używają systemu
skryptów a'la BSD. Jeśli istnieje plik /etc/rc.d/rc.M, to twój system
zalicza siÄ™ do tej grupy.
Skrypt rc.pcmcia, zainstalowany w /etc/rc.d kontroluje startowanie i
wyłączanie systemu PCMCIA.
make install użyje polecenia probe, aby wykryć typ twojego kontrolera
i odpowiednio zmodyfikować rc.pcmcia. Powinieneś dodać do skryptu
startowego /etc/rc.d/rc.M linię, która wywołuje skrypt startowy
PCMCIA, np. tak:
/etc/rc.d/rc.pcmcia start
Właściwie nie ma znaczenia, gdzie umieścisz ten plik, tak długo jak
sterowniki PCMCIA sÄ… startowane po syslogd.
22..44.. PPoosstt--iinnssttaallaaccjjaa ddllaa ssyysstteemmóóww uużżyywwaajjąąccyycchh sskkrryyppttóóww iinniiccjjaaccyyjjnnyycchh
aa''llaa SSYYSS VV..
Red Hat, Caldera i Debian mają ten właśnie system. Jeśli masz katalog
/etc/init.d albo /etc/rc.d/init.d, to twój system jest w tej grupie.
Skrypt rc.pcmcia zostanie zainstalowany jako /etc/rc.d/init.d/pcmcia,
lub /etc/init.d/pcmcia. Nie ma potrzeby edytowania żadnego skryptu
startowego, aby włączyć PCMCIA: zostanie to zrobione automatycznie.
Jeśli istnieje katalog /etc/sysconfig, wtedy zostanie utworzony
oddzielny plik konfiguracyjny /etc/sysconfig/pcmcia z opcjami
startowymi. Jeśli musisz zmienić jakiekolwiek opcje modułów (jak PCIC=
czy PCIC_OPTS=) modyfikuj raczej ten plik konfiguracyjny aniżeli
właściwy skrypt startowy PCMCIA. Plik ten nie zostanie skasowny przez
kolejne instalacje.
Niektóre wcześniejsze wersje używały katalogu /etc/sysconfig/pcmcia-
scripts zamiast /etc/pcmcia na tych platformach. Wersja bieżąca
natomiast używa /etc/pcmcia dla wszystkich systemów, a istniejący
/etc/sysconfig/pcmcia-scripts przeniesie do /etc/pcmcia.
22..55.. OOppccjjee kkoonnffiigguurraaccjjii ssppeeccyyffiicczznnee ddllaa ddaanneeggoo ssyysstteemmuu..
Pakiet Card Services powinien automatycznie zapobiegać alokacji portów
IO i przerwań, które są już używane przez inne urządzenia. Spróbuje
on także wykryć konflikty z nieznanymi urządzeniami, ale nie jest to w
pełni godne zaufania. W niektórych przypadkach, muisz wyraźnie podać
zasoby, które mają być niedostępne dla danego urządzenia w pliku
/etc/pcmcia/config.opts.
Oto niektóre ustawienia zasobów dla specyficznych typów laptopów.
· W AMS SoundPro wyÅ‚Ä…cz IRQ 10.
· W niektórych modelach TravelPro 5300 użyj adresów pamiÄ™ci
0xc8000-0xcffff.
· W BMX 486DX2-66 wyÅ‚Ä…cz IRQ 5 i 9
· W Chicony NB5 użyj adresów pamiÄ™ci 0xda000-0xdFFFF.
· Na Compaq Presario 1020, wyÅ‚Ä…cz porty 0x2F8-0x2FF, IRQ 3 i IRQ 5.
· W HP Omnibook 4000C wyÅ‚Ä…cz porty 0x300-0x30F.
· Na Micron Millenia Transport, wyÅ‚Ä…cz IRQ 5, IRQ 9.
· W NEC Versa M, wyÅ‚Ä…cz IRQ 9 i porty 0x2E0-2FF.
· W NEC Versa P/75 wyÅ‚Ä…cz IRQ 5 i 9.
· W NEC Versa S wyÅ‚Ä…cz IRQ 9 i 12.
· W NEC Versa seria 6000 wyÅ‚Ä…cz porty 0x300-0x33f, IRQ 9 i 10.
· W ProStar 9200, Altima Virage i Acquiline Hurricane DX4-100 wyÅ‚Ä…cz
IRQ 5 i porty 0x330-0x35f. Użyj może adresów pamięci
0xd8000-0xdffff.
· W Siemens Nixdorf SIMATIC PG 720C użyj adresów pamiÄ™ci
0xc0000-0xcffff i portów 0x300-0x3bf.
· W TI TravelMate 5000 użyj adresów pamiÄ™ci 0xd4000-0xdffff.
· W Toshiba T4900 CT wyÅ‚Ä…cz IRQ 5, porty 0x2E0-0x2E8 i 0x330-0x338.
· W Twinhead 5100, HP 4000, Sharp PC-8700 i PC-8900 wyÅ‚Ä…cz IRQ 9
(dźwięk) i 12
· W MPC seria 800 wyÅ‚Ä…cz IRQ i porty 0x300-0x30f dla CD-ROM-u.
Niektóre kontrolery PCMCIA mają opcjonalne zalety, które mogą być
zaimplementowane w danym systemie, ale nie muszÄ…. Generalnie jest
niemożliwe dla sterownika gniazdka (socket driver), aby wykryć czy te
zalety są zaimplementowane. Sprawdź stronę w podręczniku systemowym na
temat swojego sterownika, aby zobaczyć jakie opcjonalne zalety mogą
być włączone.
W kilku przypadkach polecenie probe nie będzie w stanie wykryć
automatycznie typu twojego kontrolera. Jeśli masz system Halikan NBD
486, to jego kontroler TCIC-2 znajduje się w niezwykłym miejscu:
będziesz musiał zmodyfikować rc.pcmcia, aby załadować moduł tcic oraz
ustawić PCIC_OPTS na tcic_base=0x2C0.
Sterowniki gniazda typu "low level" tcic i i82365 majÄ… liczne
parametry do timing-ów szyny, które może będzie trzeba ustawić dla
systemów ze szczególnie szybkimi procesorami. Symptomy problemów z
timing-ami zawierają problemy z wykryciem karty, zawiśnięcia przy
dużym załadowaniu systemu, duże średnie błędów, albo zła wydajność
urządzeń. Sprawdź odpowiednie strony w podręczniku systemowym, aby
dowiedzieć się więcej szczegółów. A tu jest krótkie podsumowanie:
· Kontrolery Cirrus majÄ… liczne konfigurowalne parametry timing-ów.
Najważniejszy wydaje się być cmd_time, który określa długość cyklu
szyny PCMCIA. Szybkie systemy 486 (np. DX4-100) wydajÄ… siÄ™
zwiększać wydajność przy zwiększeniu tego parametru z domyślnej
wartości 6 na 12 czy 16.
· Kontroler Cirrus PD6729 PCI ma parametr fast_pci, który powinien
być ustawiony jeśli szybkość szyny PCI jest większa niż 25 MHz.
· W kontrolerach Vadem VG-468 i Databook TCIC-2 parametr async_clock
zmienia względne taktowanie szyny PCMCIA i cykle szyny host.
Ustawienie tego parametru spowoduje dodanie stanów oczekiwania na
niektóre operacje. Chociaż jeszcze nie słyszałem o jakimś laptopie,
który by tego potrzebował.
· ModuÅ‚ pcmcia_core posiada parametr cis_speed, który zmienia
prędkość pamięci używaną dla dostępu do Card Information Structure
(CIS). Na niektórych systemach z szybkimi zegarami szynowymi,
zwiększanie tego parametru (czyli zwalnianie dostępu do kart) może
przynieść pożytek przy problemach z rozpoznaniem karty.
· To nie jest sprawa timing-ów, ale jeÅ›li masz wiÄ™cej niż jeden
kontroler PCMCIA w twoim systemie, albo jakieÅ› dodatkowe gniazda w
stacji dokowania (docking station), powinieneś załadować moduł
i82365 z parametrem extra_sockets ustawionym na 1.
Wszystkie te opcje powinny być skonfigurowane przez modyfikowanie
początku pliku /etc/rc.d/rc.pcmcia. Na przykład:
# Albo i82365 albo tic
PCIC=i82365
# Wstaw tu parametry timing-ów dla sterownika gniazd
PCIC_OPTS="cmd_time=12"
# Wstaw tu opcje pcmcia_core
CORE_OPTS="cis_speed=500"
Oto niektóre ustawienia timing-ów dla specyficznych sytemów:
· W ARM Pentium-90 albo Midwest Micro Soundbook Plus użyj
freq_bypass=1 cmd_time=8.
· W Midwest Micro Soundbook Elite użyj cmd_time=12.
· W Gateway Liberty spróbuj cmd_time=16.
W niektórych systemach używających kontrolera Cirrusa, włączając NEC
Versa M, BIOS ustawia kontroler w specyficzny stan zawieszenia podczas
startu systemu. W tych systemach, polecenie probe nie powiedzie siÄ™.
Jeśli tak się zdarzy, zmodyfikuj plik /etc/rc.d/rc.pcmcia ręcznie tak:
# Wstaw tu parametry timing-ów dla sterownika gniazd
PCIC=i82365
# Wstaw tu opcje pcmcia_core
PCIC_OPTS="wakeup=1"
22..66.. PPrroobblleemmyy ppooddcczzaass łłaaddoowwaanniiaa mmoodduułłóóww jjąąddrraa..
Skrypt konfiguracyjny normalnie upewni się czy moduły PCMCIA są
kompatybilne z twoim jądrem. Tak więc, problemy podczas ładownia
modułów wskazuje z reguły na to, że użytkownik ingerował w jakiś
sposób w normalny proces instalacji. Niektóre z tych problemów są
wysyłane bezpośrednio na konsolę Linux-a. Inne błędy są zapisywane w
pliku "log-file", zwykle jest to /usr/adm/messages albo
/var/log/messages. W zależności od konfiguracji twojego syslogd,
niektóre komunikaty mogą być zapisane do innych plików, które zwykle
znajdują się także w /usr/adm czy var/log. Aby wyśledzić problem,
upewnij się, że sprawdziłeś obie lokalizacje.
Niektóre moduły PCMCIA wymagają serwisów jądra, które mogą, ale nie
muszą być obecne, zależnie od konfiguracji jądra. Na przykład,
sterowniki kart SCSI wymagają skonfigurowanej obsługi SCSI w jądrze, a
sterowniki sieci wymagają skonfigurowania sieci w jądrze. Jeśli w
jądrze brakuje potrzebnego serwisu insmod może twierdzić, że są
niezdefiniowane symbole i nie załadować modułu.
Jeśli insmod zwraca błąd "wrong version", oznacza to, że moduł był
skompilowany dla innej wersji jądra niż to, które akurat działa. Może
to się pojawić jeśli moduły skompilowane na jednej maszynie są
kopiowane na drugą z inną konfiguracją, albo jeśli jądro jest
rekonfigurowane po tym, jak pakiet PCMCIA został zainstalowany.
Innym źródłem błędów podczas ładowana modułów może być to, że moduły i
jądra były skompilowane z różnymi ustawieniami CONFIG_MODVERSIONS.
Jeśli moduł z wkompilowanym sprawdzaniem wersji jest ładowany do jądra
bez sprawdzania wersji, insmod zwróci błąd "undefined symbols".
Ostatecznie, względnie nowe wersje binutils są niekompatybilne ze
starszymi wersjami narzędzi do modułów, i mogą powodować, że są
zwracane takie właśnie błędy. Najczęstszym symptomem jest błąd o
niezdefiniowaniu gcc_compiled. Jeśli masz takie błędy, odśwież
narzędzia do modułów do najnowszej wersji, dostępnych z
ftp.icm.edu.pl.
22..77.. PPrroobblleemmyy zz pprrzzeerrwwaanniieemm zzmmiiaannyy ssttaattuussuu kkaarrttyy..
W większośći wypadków sterownik do gniazd (i82365 albo tcic)
automatycznie wykryje i wybierze odpowiednie przerwanie, aby
sygnalizować zmiany statusu karty. Automatyczne wyszukiwanie
przerwania nie działa na niektórych kontrolerach kompatybilnych z
Intel-em, włączając Cirrus-a i niektóre IBM ThinkPad. Jeśli urządzenie
nie jest aktywne w czasie sprawdzania, jego przerwanie może także
pojawić się jako niedostępne. W takich przypadkach sterownik gniazd
może wybrać przerwanie które jest używane przez inne urządzenie.
W sterownikach i82365 i tcic można używać opcji irq_list aby
ograniczyć ilość wyszukiwanych przerwań. Lista ta ogranicza zbiór
przerwań, które mogą być użyte przez karty PCMCIA oraz do
monitorowania zmian statusu karty. Opcja cs_irq może być użyta, aby
wyraźnie określić przerwanie, którego należy użyć do monitorowania
zmian statusu karty.
Jeśli nie możesz znaleźć numeru przerwania, które działa, jest jeszcze
tryb statusu "polled": oba - i82365 i tcic zaakceptujÄ… opcjÄ™
poll_interval=100, aby sprawdzać zmiany statusu karty raz na sekundę.
Opcja ta powinna być także używana jeśli w twoim systemie brakuje
dostępnych przerwań dla kart PCMCIA. Szczególnie w systemach z więcej
niż jednym kontrolerem PCMCIA, nie ma zbytnio sensu w przeznaczaniu
przerwań na monitorowanie zmian statusu kart.
Wszystkie te opcje powinny być ustawiane w linii PCIC_OPTS= w pliku
/etc/rc.d/rc.pcmcia albo /etc/sysconfig/pcmcia zależnie od twojego
systemu.
22..88.. PPrroobblleemmyy zz iiddeennttyyffiikkaaccjjÄ…Ä… kkaarrttyy..
Domyślnie, sterowniki PCMCIA alokują okna pamięci w przestrzeni
0xC0000-0xFFFFF, po sprawdzeniu czy nie ma w niej jakichś konfliktów z
ROM-em czy innymi urządzeniami. To okno pamięci jest podane w pliku
/etc/pcmcia/config.opts. Sprawdzanie ma miejsce przy pierwszej próbie
skonfigurowania nowej karty. Procedura sprawdzania nie jest idioto-
odporna, więc możliwe jest niezidentyfikowanie konfliktu. Jeśli obszar
ten jest używany przez inne urządzenia w twoim systemie, karty mogą
nie zostać zidentyfikowane poprawnie. Przy układach które to
obsługują, konflikt może też powstawać przy przesłanianiu tego obszaru
pamięci.
Klasycznym symptomem problemu z konfiguracją okna pamięci jest
zidentyfikowanie wszystkich kart jako karty pamięci. W nadzwyczajnych
przypadkach konflikt taki może powstać z jakimś krytycznym serwisem
systemowym, co może powodować zawieszenia czy restarty. Jeśli
podejrzewasz taki konflikt, sprawdź najpierw czy wyłączone jest
przesłanianie ROM-u w ustawieniach twojego sprzętu. Znalezienie
dobrego okna może wymagać trochę eksperymentów. Kilka alternatywnych
okien to: 0xD0000-0xDFFFF, 0xC9000-0xCFFFF i 0xD8000-0xDFFFF.
Jeśli masz sterowniki DOS-owe do PCMCIA, możesz zobaczyć jakich
obszarów pamięci one używają. Zauważ, że adresy pamięci w DOS-ie są
często podawane w formie segmentów, która to obcina ostatnią cyfrę
szesnastkową (tak, że adres bezwzględny 0xD0000 byłby podany jako
0xD000. Upewnij się, że dodałeś tę jedną cyfrę kiedy wpisywałeś
wartość do pliku /etc/pcmcia/config.opts.
Jeśli problem z identyfikacją karty nie został rozwiązany
dopasowywaniem okien pamięci, to prawdopodobnie jest to problem z
"timing-ami"
22..99.. DDllaacczzeeggoo nniiee ddyyssttrryybbuujjeesszz bbiinnaarriióóww ddoo PPCCMMCCIIAA ??
Dla mnie, dystrybucja binariów jest bardzo niewygodna. Jest to sprawa
skomplikowana ponieważ niektóre zalety mogą być podane dopiero w
czasie kompilacji, oraz dlatego, że moduły PCMCIA są zależne od
"poprawnej" konfiguracji jądra. Więc musiałbym przypuszczalnie
dystrybułować prekompilowane moduły wraz z odpowiednimi wersjami
jąder. Idąc dalej, prekompilowane moduły są najbardziej potrzebne
kiedy instalujemy Linux-a od początku. To z reguły wymaga ustawienia
PCMCIA tak, żeby można jej było użyć w procesie instalacji dla
konkretnej dystrybucji Linux-a. Każda dystrybucja Linux-a ma własną
procedurę, i nie jest dla mnie wykonalnym udostępniać dyskietki "boot"
i "root" chcociażby tylko dla tych najbardziej popularnych kombinacji
sterowników i dystrybucji.
PCMCIA jest teraz częścią większości ważniejszych dystrybucji,
włączając Red Hat, Caldera, Slackware, Yggdrasil, Craftworks oraz
Nascent Technology.
22..1100.. DDllaacczzeeggoo tteenn ppaakkiieett jjeesstt ttaakkii wwiieellkkii ??
No cóż, po pierwsze, to on wcale nie jest taki wielki. Wszystkie
moduły sterowników razem wzięte zajmują jakieś 200k. Programy
narzędziowe dodają jeszcze jakieś 70k, a rzeczy w /etc/pcmcia zajmują
jakieś 30k. Podczas działania, rdzeń modułów PCMCIA zabiera około 48k
pamięci systemowej. Demon cardmgr z reguły jest wyswapowywany oprócz
momentów kiedy karty są wsadzane lub wyjmowane. Całkowita objętość
pakietu nie wiele różni się od implementacji Card Services pod DOS-a.
W porównaniu z DOS-owymi "włącznikami", może się to wydawać trochę
przesadzone, szczególnie dla ludzi, którzy nie planują używać tych
wszystkich zalet jakie posiada PCMCIA, jak np. zarzÄ…dzanie zasilaniem
czy "gorące wymiany". "Włączniki" mogą być malutkie ponieważ
generalnie obsługują one ograniczoną ilość kontrolerów PCMCIA. Jeśli
ktoś miałby napisać autentycznie "ogólny" "włącznik" do modemu,
skońyczłoby się na tym, że pojawiłaby się tam większość funkcji z Card
Services, aby obsłużyć karty od różnych sprzedawców oraz pełny zakres
różnych wariantów kontrolerów PCMCIA.
33.. SSttoossoowwaanniiee ii zzaalleettyy..
33..11.. NNaarrzzęęddzziiaa ddoo mmoonniittoorroowwaanniiaa uurrzząąddzzeeńń PPCCMMCCIIAA..
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".
33..22.. PPrrzzeegglląądd sskkrryyppttóóww kkoonnffiigguurraaccyyjjnnyycchh PPCCMMCCIIAA..
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.
33..33.. AAddaapptteerryy ssiieecciioowwee PPCCMMCCIIAA..
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 _n_o_a_u_t_o.
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.
33..33..11.. WWyybbóórr ttrraannsscceeiivveerr--aa..
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
33..33..22.. KKoommeennttaarrzzee nnaa tteemmaatt kkoonnkkrreettnnyycchh kkaarrtt..
· 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.
33..33..33.. DDiiaaggnnoozzoowwaanniiee pprroobblleemmóóww zz kkaarrttaammii ssiieecciioowwyymmii..
· 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ą.
33..44.. UUrrzzÄ…Ä…ddzzeenniiaa sszzeerreeggoowwee ii mmooddeemmyy PPCCMMCCIIAA..
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"
33..44..11.. DDiiaaggnnoozzoowwaanniiee pprroobblleemmóóww zz uurrzząąddzzeenniiaammii sszzeerreeggoowwyymmii..
· 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 "_p_o_l_l_e_d" 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.
33..55.. AAddaapptteerryy PPCCMMCCIIAA SSCCSSII..
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 "_t_o_p_-_l_e_v_e_l" (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 "_t_o_p_-_l_e_v_e_l" 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
33..55..11.. DDiiaaggnnoozzoowwaanniiee pprroobblleemmóóww zz kkaarrttaammii SSCCSSII..
· 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.
33..66.. KKaarrttyy ppaammiięęccii PPCCMMCCIIAA..
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.
33..66..11.. UUżżyywwaanniiee kkaarrtt ppaammiięęccii ""ffllaasshh""..
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.
33..77.. KKaarrttyy PPCCMMCCIIAA nnaappęęddóóww AATTAA//IIDDEE..
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
33..77..11.. DDiiaaggnnoozzoowwaanniiee pprroobblleemmóóww zz aaddaapptteerraammii AATTAA//IIDDEE..
· Niektóre napedy IDE zaburzajÄ… specyfikacjÄ™ PCMCIA przez żądanie
dłuższego czasu na "_r_o_z_k_r_ę_c_e_n_i_e _s_i_ę" 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Ä….
33..88.. KKaarrttyy wwiieellooffuunnkkccyyjjnnee..
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.
33..99.. KKiieeddyy mmoożżnnaa bbeezzppiieecczznniiee wwłłoożżyyćć aallbboo wwyyjjąąćć kkaarrttęę PPCCMMCCIIAA ??
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.
33..1100.. CCaarrdd SSeerrvviicceess ii AAddvvaanncceedd PPoowweerr MMaannaaggeemmeenntt..
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 (_f_a_i_t_h_@_c_s_._u_n_c_._e_d_u), 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.
33..1111.. JJaakk mmaamm wwyyłłąącczzyyćć kkaarrttęę PPCCMMCCIIAA bbeezz wwyyjjmmoowwaanniiaa jjeejj ??
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.
33..1122.. JJaakk uussuuwwaamm sstteerroowwnniikkii PPCCMMCCIIAA zz ppaammiięęccii ??
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.
44.. ZZaaaawwaannssoowwaannee tteemmaattyy..
44..11.. AAllookkooaaccjjaa zzaassoobbóóww ddllaa uurrzząąddzzeeńń PPCCMMCCIIAA..
Teoretycznie nie powinno mieć znaczenia które przerwanie jest
alokowane dla którego urządzenia tak długo jak dwa urządzenia nie są
skonfigurowane, aby używać tego samego przerwania. W pliku
/etc/pcmcia/config.opts znajdziesz miejsce na wyłączenie przerwań,
które są używane przez inne urządzenia niż PCMCIA.
Podobnie, nie ma sposobu, aby bezpośrednio podać adresy IO, które mają
byc używane przez karty PCMCIA. Plik /etc/pcmcia/config.opts pozwala
na podanie obszaru portów dostępnego dla wszystkich sterowników
PCMCIA, albo wyłączyć obszary, które powodują konflikty.
Po zmodyfikowaniu pliku /etc/pcmcia/config.opts możesz zrestartować
cardmgr poleceniem "kill -HUP".
Przerwanie używane do monitorowania statusu zmian karty jest wybierane
przez moduł sterownika niskiego poziomu (i82365 lub tcic) przed
zinterpretowaniem pliku /etc/pcmcia/config przez cardmgr, więc plik
ten nie ma wpływu na wybór tego właśnie przerwania. Aby ustawić to
przerwanie użyj opcji cs_irq= podczas ładowania sterownika gniazd,
przez ustawienie zmiennej PCIC_OPTS w pliku /etc/rc.d/rc.pcmcia.
Wszystkie sterowniki kart klientów mają parametr irq_list do
podawania, które przerwania mogą próbować one zaalokować. Te opcje
powinny być ustawione w pliku /etc/pcmcia/config. Np.:
device "serial_cs"
module "serial_cs" opts "irq_list=8,12"
...
wymusiłoby użycie tylko przerwań IRQ 8 i 12. Nie zależnie od usatwień
irq_list, Card Services nigdy nie zaalokuje przerwania, które jest już
używane przez inne urządzenie albo przerwania, które jest wyłączone w
pliku konfiguracyjnym.
44..22.. JJaakk zzrroobbiićć ddwwiiee rróóżżnnee kkoonnffiigguurraaccjjee uurrzząąddzzeeńń ddoo ddoommuu ii pprraaccyy ??
Jest to całkiem proste używając schematów PCMCIA.
Użyj dwóch schematów konfiguracyjnych o nazwie "dom" i "praca". Oto
przykład skryptu network.opts z konkretnymi ustawieniami dla różnych
schematów:
case "$ADDRESS" in
praca,*,*,*)
# definicje dla kart sieciowych w pracy
...
;;
dom,*,*,*|default,*,*,*)
# definicje dla kart sieciowych w domu
...
;;
esac
Pierwszą częścią adresu urządzenia PCMCIA jest zawsze schemat
konfiguracyjny. W tym przykładzie, drugi przypadek w "case" wybierze
oba schematy: domowy i domyślny. Więc jeśli schemat nie jest
ustawiony, domyślnym będzie schemat domowy.
Teraz, aby wybrać pomiędzy tymi dwoma ustawieniami uruchom albo:
cardctl scheme dom
albo
cardctl scheme praca
Polecenie cardctl wyłącza wszystkie twoje karty i inicjuje je
ponownie. Polecenie to może być bezpiecznie używane, nie zależnie od
tego czy system PCMCIA jest załadowany czy nie, ale polecenie to może
się nie powieść jeśli używasz innych urządzeń PCMCIA w tym samym
czasie (nawet jeśli ich konfiguracje nie różnią się wyraźnie od
ustawień schematów).
Aby zobaczyć bieżące ustawienia schematu PCMCIA uruchom:
cardctl scheme
44..33.. SSttaarrttoowwaanniiee zz uurrzzÄ…Ä…ddzzeenniiaa PPCCMMCCIIAA..
Posiadanie głównego systemu plików na urządzeniu PCMCIA jest trochę
kłopotliwe, bo system PCMCIA na Linux-a nie został przystosowany do
włączenia do jądra. Główne składniki, ładowalne moduły i uruchamiany w
trybie użytkownika demon cardmgr, zależą od już działającego systemu.
Możliwość startu przy pomocy "initrd" pozwala obejść ten problem
pozwalając Linux-owi wystartować używając tymczasowego ramdysku jako
minimalnego obrazu katalogu głównego, załadować sterowniki i potem
ponownie zamontować inny system plików jako katalog główny. Tymczasowy
katalog główny może skonfigurować urządzenia PCMCIA i potem zamontować
urządzenie PCMCIA jako katalog główny.
Niektóre dystrybucje Linux-a pozwalają na instalację na urządzeniu
podłączonym do kontrolera SCSI PCMCIA, jako niezamierzony skutek
uboczny możliwości instalacji z CD-ROM-ów podłączonych do SCSI PCMCIA.
Aczkolwiej w tej chwili żadne narzędzie instalacyjne dla Linux-a nie
pozwala na konfigurację odpowiedniego "initrd" do startu z głównym
systemem plików na PCMCIA. Dlatego też konfiguracja takiego systemu
wymaga użycia drugiego Linux-a, aby stworzyć obraz "initrd". Jeśli nie
masz dostępu do drugiego Linux-a, to inną możliwością jest tymczasowe
zainstalowanie minimalnego Linux-a na napędzie nie będącym urządzeniem
PCMCIA, stworzenie obrazu initrd i zainstalowanie na PCMCIA.
W Bootdisk-HOWTO znajdują się ogólne informacje jak zrobić dyskietki
startowe, ale nic konkretnego na temat initrd. Główny dokument
opisujący initrd zawarty jest w ostatnich źródłach jądra Linux-a w
katalogu linux/Documentation/initrd.txt. Zanim zaczniesz powinieneÅ› to
przeczytać. Pomocna jest też znajomość lilo. Użycie initrd wymaga
także włączonych opcji CONFIG_BLK_DEV_RAM i CONFIG_BLK_DEV_INITRD w
jÄ…drze.
44..33..11.. SSkkrryypptt--ppoommooccnniikk ppcciinniittrrdd..
Skrypt pcinitrd tworzy podstawowy obraz initrd do startowania z
głównej partycji na PCMCIA. W obrazie tym zawarte są: minimalna
struktura katalogów, potrzebne pliki urządzeń, kilka programów,
biblioteki dzielone i zbiór sterowników-modułów PCMCIA. Podczas
uruchamiania pcinitrd podajesz sterowniki-moduły, które mają być
zawarte w obrazie. Główne składniki PCMCIA, pcmcia_core i ds są
dołączane automatycznie.
Na przykład powiedzmy, że twój laptop używa kontrolera PCMCIA
kompatybilnego z i82365 i chcesz startować Linux-a z głównym systemem
plików na dysku twardym przyłączonym do kontrolera Adpatec SlimSCSI.
Możesz stworzyć odpowiedni obraz przy pomocy;
pcinitrd -v initrd pcmcia/i82365.o pcmcia/aha152x_cs.o
Aby ustawić sobie start initrd wedle swojego uznania, możesz
zamontować obraz używając urządzenia "loopback" poleceniem:
mount -o loop -t ext2 initrd /mnt
i potem zmodyfikuj skrypt linuxrc. Pliki konfiguracyjne PCMCIA zostanÄ…
zainstalowane w obrazie w katalogu /etc i także mogą być ustawione
wedle własnego uznania. Więcej informacji znajdziesz w podręczniku
'man pcinitrd'.
44..33..22.. TTwwoorrzzeenniiee ddyysskkiieettkkii ssttaarrttoowweejj zz iinniittrrdd..
Po stworzeniu obrazu skryptem pcinitrd, możesz stworzyć dyskietkę
startowÄ… kopiujÄ…c jÄ…dro, skompresowany obraz initrd i kilka
pomocniczych programów dla lilo na czystą dyskietkę. W następującym
przykładzie zakładamy, że główny system plików znajduje się na
/dev/sda1:
mke2fs /dev/fd0
mount /dev/fd0 /mnt
mkdir /mnt/etc /mnt/boot /mnt/dev
cp -a /dev/fd0 /dev/sda1 /mnt/dev
cp [jÄ…dro] /mnt/vmlinuz
gzip < [obraz-initrd] > /mnt/initrd
Stwórz /mnt/etc/lilo.conf z taką zawartością:
boot=/dev/fd0
compact
image=/vmlinuz
label=linux
initrd=/initrd
read-only
root=/dev/sda1
Na końcu uruchom:
lilo -r /mnt
Jeśli lilo uruchomione jest z parametrem -r, wszystkie akcje
wykonywane są z podanym katalogiem jako główny system plików. Powodem
utworzenia plików urządzeń w /mnt/dev było to, że lilo nie będzie w
stanie użyć plików w /dev kiedy będzie uruchomione z alternatywnym
katalogiem głównym.
44..33..33.. IInnssttaallaaccjjaa oobbrraazzuu iinniittrrdd nnaa nnaappęęddaacchh bbeezz LLiinnuuxx--aa..
Jednym z popularnych zastosowań initrd są systemy gdzie wewnętrzny
dysk twardy jest dedykowany dla innego systemu operacyjnego. JÄ…dro
Linux-a i obraz initrd mogą zostać umieszczone na partycji bez Linux-a
a lilo lub LOADLIN mogą zostać skonfigurowane, aby ładowały Linux-a z
tych obrazów.
Zakłądając, że twoje jądro jest skonfigurowane na odpowiednie
urządzenie z głównym systemem plików i masz stworzony obraz initrd na
innym Linux-ie, najprostszym sposobem aby zacząć, to wystartowanie
Linux-a używając LOADLIN-a w ten sposób:
LOADLIN initrd=
Jak już możesz wystartować Linux-a na swojej maszynie, możesz wtedy
zainstalować lilo aby umożliwić startowanie Linux-a bezpośrednio.
Na przykład powiedzmy, że /dev/hda1 jest partycją bez Linux-a i /mnt
można użyć jako katalog do montowania. najpierw utwórz podkatalog na
partycji docelowej dla plików Linux-a:
mount /dev/hda1 /mnt
mkdir /mnt/linux
cp [obraz-jÄ…dra] /mnt/linux/vmlinuz
cp [obraz-initrd] /mnt/linux/initrd
W tym przykładzie, powiedzmy, że /dev/sda1 jest partycją na której ma
się znaleźć główny system plików, dysk twardy SCSI zamontowany przez
kontroler SCSI PCMCIA. Aby zainstalować lilo, stwórz plik lilo.conf z
taką zawartością:
boot=/dev/hda
map=/mnt/linux/map
compact
image=/mnt/linux/vmlinuz
label=linux
root=/dev/sda1
initrd=/mnt/linux/initrd
read-only
other=/dev/hda1
table=/dev/hda
label=windows
Linia boot= informuje, żeby zainstalować program ładujący system do
Master Boot Record podanego urzÄ…dzenia. Linia root= identyfikuje
konkretny główny system plików, który ma zostać użyty po załadowaniu
obrazu initrd, parametr ten może być niepotrzebny jeśli jądro jest już
skonfigurowane w ten sposób. Sekcja other= używana jest do opisania
innego systemu operacyjnego zainstalowanego na /dev/hda1.
Aby zainstalować lilo w tym przypadku użyj:
lilo -C lilo.conf
Zauważ, że w tym przypadku plik lilo.conf używa scieżek absolutnych,
które zawierają /mnt. Zrobiłem tak w przykładzie ponieważ docelowy
system plików może nie umieć tworzyć urządzeń Linux-a dla parametrów
boot= i root=.
55.. JJaakk rraaddzziićć ssoobbiiee zz nniieeoobbssłłuuggiiwwaannyymmii kkaarrttaammii..
55..11.. KKoonnffiigguurraaccjjaa nniieeoobbssłłuuggiiwwaannyycchh kkaarrtt..
Zakładając, że twoja karta jest obsługiwana przez istniejący
sterownik, wszystko co trzeba zrobić, to dodać pozycję do
/etc/pcmcia/config, która poinformuje cardmgr jak zidentyfikować kartę
i który(e) sterownik(i) dołączyć do tej karty. Więcej informacji na
temat formatu pliku konfiguracyjnego na stronie podręcznika "man" na
temat pcmcia. Jeśli włożysz nieznaną kartę, to cardmgr z reguły
zapisze trochę informacji identyfikacyjnych w logu systemowym, który
może zostać użyty do konfiguracji.
Oto przykład raportu cardmgr w /usr/adm/messages na temat nieznanej
karty:
cardmgr[460]: unsupported card in socket 1
cardmgr[460]: version info: "MEGAHERTZ", "XJ2288", "V.34 PCMCIA
MODEM"
Odpowiadająca pozycja konfiguracyjna w /etc/pcmcia/config wyglądałoby
tak:
card "Megahertz XJ2288 V.34 Fax Modem"
version "MEGAHERTZ", "XJ2288", "V.34 PCMCIA MODEM"
bind "serial_cs"
Możesz użyć "*", aby oznaczyć łańcuchy, które nie muszą się dokładnie
zgadzać, jak np. numery wersji. Kiedy robisz nową pozycję
konfiguracyjną, zwróć uwagę na to, żeby dokładnie skopiować łańcuchy,
zachowując wszelkie duże i małe litery oraz przerwy (spacje). Upewnij
się także, że pozycja konfiguracyjna ma taką samą ilość łańcuchów jak
to stwierdzono w logach.
Po tym jak zmodyfikujesz /etc/pcmcia/config, możesz poinformować
cardmgr, aby przeładował plik konfiguracyjny:
kill -HUP `cat /var/run/cardmgr.pid`
Jeśli uda ci się ustawić jakąś pozycję konfiguracyjną dla nowej karty,
przyślij mi kopię proszę, tak żebym mógł ją dołączyć do standardowego
pliku konfiguracyjnego.
55..22.. JJaakk mmaamm ddooddaaćć oobbssłłuuggęę ddllaa kkaarrttyy kkoommppaattyybbiillnneejj zz NNEE22000000 ??
Najpierw sprawdź, czy karta nie została już rozpoznana przez cardmgr.
Niektóre karty nie wymienione w SUPPORTED.CARDS są wersjami OEM kart
obsługiwanych. Jeśli znajdziesz taka kartę, daj mi znać, żebym mógł ją
dodać do listy.
Jeśli twoja karta nie została rozpoznana, postępuj zgodnie z
instrukcjami w sekcji ``3.6'', aby stworzyć pozycję konfiguracyjną dla
twojej karty oraz powiąż swoją kartę ze sterownikiem pcnet_cs.
Zrestartuj cardmgr, aby użyć nowego zaktualizowanego pliku
konfiguracyjnego.
Jeśli sterownik pcnet_cs twierdzi, że nie może określić adresu
sprzętowego twojej karty ethernet-owej, to zmodyfikuj nowy plik
konfiguracyjny, aby powiązać kartę ze sterownikiem karty pamięci -
memory_cs. Zrestartuj cardmgr, aby użyć nowego zaktualizowanego pliku
konfiguracyjnego. Będziesz musiał znać adres sprzętowy swojej karty
sieciowej. Adres ten jest seriÄ… dwucyfrowych szesnastkowych liczb,
często wydrukowanych na karcie. Jeśli go tam nie ma, możesz użyć
sterownika DOS-owego, aby go wyświetlić. W każdym razie, jak go już
znasz to uruchom:
dd if=/dev/mem0a count=20 | od -Ax -t x1
i poszukaj linijki z twoim adresem. Tylko parzyste bajty sÄ…
zdefiniowane, wiec zignoruj bajty nieparzyste w wyniku. Zapisz
szesnastkowy offset pierwszego bajtu adresu. Teraz wyedytuj
modules/pcnet_cs.c i znajdź strukturę hw_info. Będziesz musiał
utworzyć nową pozycję dla twojej karty. Pierwsze pole jest offsetem
pamięci. Następne trzy pola to pierwsze trzy bajty adresu sprzętowego.
Ostatnie pole zawiera flagi dla konkretnych cech karty; na poczÄ…tek
spróbuj ustawić tu 0.
Po edycji pcnet_cs.c, skompiluj i zainstaluj nowy moduł. Zmodyfikuj
jeszcze raz /etc/pcmcia/config i zmień powiązania karty z memory_cs na
pcnet_cs. Postępuj zgodnie z instrukacjami dla przeładowywania pliku
konfiguracyjnego i wszystko powinno być ustawione. Przyślij mi proszę
kopie twoich nowych pozycji konfiguracyjnych i hw_info.
Jeśli nie możesz znaleźć adresu sprzętowego swojej karty w formie
szesnastkowej, ostateczną metodą może okazać się jawne podanie adresu
w czasie inicjacji modułu pcnet_cs. Popraw plik /etc/pcmcia/config
dodajÄ…c opcjÄ™ hw_addr=:
module "pcnet_cs" opts "hw_addr=0x00,0x80,0xc8,0x01,0x02,0x03"
Oczywiście zamiast podanego adresu podaj adres swojej karty w
odpowiednim miejscu.
55..33.. IInntteerrffeejjss PPCCMMCCIIAA ddoo ddyysskkiieetteekk..
Pakiet ten nie obsługuje jeszcze interfejsów używanych przez Compaq
Aero i kilka innych laptop-ów. Kruczkiem w obsłudze dyskietek w Aero
jest to, że Aero wydaje się używać ustawianego kontrolera PCMCIA, aby
obsługiwać DMA dla dyskietek. Nie wiedząc jak to jest dokładnie
robione, nie ma sposobu, aby zaimplementować to w Linux-ie.
Jeśli kontroler dyskietek jest obecny podczas startowania Aero, BIOS
Aero skonfiguruje kartÄ™ i Linux zidentyfikuje jÄ… jako normalnÄ… stacjÄ™
dyskietek. Kiedy załadowane są sterowniki Linux-owe PCMCIA, zauważą,
że karta jest już skonfigurowana i skojarzona ze sterownikiem Linux-
owym i zostawią to gniazdo w spokoju. Tak więc napęd może być używany
jeśli jest obecny podczas startu, ale nie może być wymieniany podczas
pracy (hot swapping).
55..44.. CCoo jjeesstt zz oobbssłłuuggąą kkaarrtt XXiirrccoomm ??
Dzięki pracy Wernera Kocha w aktualnej wersji pakietu PCMCIA zawarty
jest sterownik do kart ethernetowej i ethernet/modem firmy Xircom.
Specjalnie dla dyskusji na temat rozwoju sterownika Xircom ustawiłem
forum HyperNews pod adresem
hyper.stanford.edu/HyperNews/get/pcmcia/xircom.html
.
Przez długi czas karty Xircom nie były obsługiwane ponieważ Xircom
miał taką zasadę, żeby nie ujawniać technicznych informacji o swoich
kartach. Jednak trochÄ™ zmienili zasady i teraz rozprowadzajÄ…
informacje o sterowniku.
66.. WWsskkaazzóówwkkii ddoo śślleeddzzeenniiaa ((ddeebbuuggggiinngg)) ii iinnffoorrmmaaccjjee ddoo pprrooggrraammoowwaanniiaa..
66..11.. JJaakk mmooggęę wwyyssłłaaćć ppoommooccnnyy lliisstt oo bbłłęęddzziiee ??
Najlepszym sposobem na zgłaszanie błędów jest użycie listy
komunikatowej na HyperNews-ach na stronie dotyczÄ…cej PCMCIA na Linux-
ie. W ten sposób inni także mogą śledzić bieżące problemy (i poprawki
czy obejścia jeśli są dostępne).
Oto rzeczy, które powinny być zawarte w każdym liście na temat błędu:
· Typ twojego systemu i wynik polecenia probe.
· Jakich kart PCMCIA używasz.
· Wersja twojego jÄ…dra i wersja PCMCIA.
· Jakiekolwiek zmiany, jakie zrobiÅ‚eÅ› w pliku /etc/pcmcia albo
rc.pcmcia.
· Wszystko co jest zwiÄ…zane z kartami PCMCIA z log-ów systemowych.
Przed wysłaniem listu o błędzie, upewnij się proszę, że używasz
najnowszej wersji sterowników do PCMCIA. Szczerze powiem, że czytanie
o czymś, co już naprawiłem nie jest najbardziej konstruktywnym
sposobem na spędzanie czasu.
Jeśli twój problem związany jest także z nagłym przerwaniem działania
jądra, podczas którego wyświetlane są zawartości rejestrów, to
zawartość ta jest przydatna tylko wtedy jeśli możesz wskazać adres
EIP. Jeśli jest on w głównym jądrze, sprawdź ten adres w System.map,
aby zidentyfikować funkcję, która była w tym momencie wykonywana.
Jeśli przerwa nastąpiła podczas działania jakiegoś modułu ładowalnego,
jest to trochę trudniejsze do prześledzenia. W bieżącej wersji
narzędzi do modułów program ksyms -m wyświetli adres podstawowy
każdego modułu. Weź moduł, który zawiera podane EIP, i odejmij jego
adres podstawowy od EIP, aby otrzymać w ten sposób offset w module.
Uruchom wtedy gdb z tym modułem jako parametr i sprawdź otrzymany
offset poleceniem list. Zadziała to tylko wtedy kiedy dany moduł był
skompilowany z opcjÄ… -g, czyli z informacjami dla debugger-a.
Jeśli nie masz dostępu do WWW, informacje o błędach można wysyłać do
mnie na adres dhinds@hyper.stanford.edu. Chociaż wolę, aby informacje
takie były wysyłane na mojej stronie WWW, tak żeby inni także mogli je
widzieć.
66..22.. IInnffoorrmmaaccjjee nnaa tteemmaatt nniisskkooppoozziioommoowweeggoo śślleeddzzeenniiaa PPCCMMCCIIAA..
Moduły PCMCIA zawierają dużo warunkowo skompilowanego kodu śledzenia.
Większość tego kodu jest pod kontrolą definicji preprocesora
PCMCIA_DEBUG. Jeśli jest to niezdefiniowane, to kod do śledzenia nie
zostanie wkompilowany. Jeśli jest utawione na 0, kod ten jest
wkompilowany, ale nieaktywny. Im większe poziomy tym więcej
informacji. Każdy moduł stworzony ze zdefiniowanym symbolem
PCMCIA_DEBUG będzie miał parametr typu _I_n_t_e_g_e_r, pc_debug, który
kontroluje ilość pojawiających się informacji. Może to być ustawiane
wtedy, kiedy moduł jest ładowany, tak więc wyjście może być
kontrolowane, na zasadzie "dla każdego modułu" bez potrzeby
przekompilowywania.
Jest kilka narzędzi do śledzenia w podkatalogu debug_tools/ w
dystrybucji PCMCIA. Narzędzia dump_tcic i dump_i365 generują kompletny
zrzut rejestrów kontrolera PCMCIA i dekodują dużo informacji z
rejestrów. Są najbardziej pożyteczne wtedy, gdy masz dostęp do
schematu danych konkretnego układu scalonego kontrolera. Narzędzie
dump_tuples wyświetla CIS-y (Card Information Structure) danej karty i
dekoduje niektóre z najważniejszych bitów. A narzędzie dump_cisreg
wyświetla rejestry lokalnej konfiguracji karty.
Sterownik memory_cs do karty pamięci jest także czasami przydatny do
śledzenia. Może on zostać powiązany z każdą kartą PCMCIA i nie wpływa
to negatywnie na inne sterowniki. Może on zostać użyty do
bezpośredniego dostępu do pamięci atrybutowej karty albo zwykłej
pamięci.
66..33.. JJaakk mmaamm nnaappiissaaćć sstteerroowwnniikk CCaarrdd SSeerrvviicceess ddllaa nnoowweejj kkaarrttyy ??
NajlepszÄ… dokumentacjÄ… dla interfejsu PCMCIA dla Linux-a jest "The
Linux PCMCIA Programmer's Guide". Najnowsza wersja jest zawsze
dostępna z hyper.stanford.edu albo na WWW -
hyper.stanford.edu/HyperNews/get/pcmcia/home.html
.
Dla urządzeń, które są względnie podobne do normalnych urządzeń kart
ISA, będziesz mógł przypuszczalnie użyć fragmentów sterowników Linux-
a, które już istnieją. W niektórych przypadkach, największym problem
będzie takie przerobienie już istniejącego sterownika, aby mógł on
sobie poradzić z wkładaniem i wyjmowaniem danej karty. W bieżącej
wersji, sterownik do karty pamięci jest jedynym sterownikiem, który
nie zależy od żadnej części innego sterownika, który wykonywałby za
niego brudnÄ… robotÄ™.
Napisałem szkielet sterownika z dużą ilością komentarzy, które
wyjaśniają jak sterownik się komunikuje z Card Sevices; znajdziesz ten
szkielet w dystrybucji źródłowej PCMCIA w podkatalogu
modules/skeleton.c.
66..44.. WWsskkaazzóówwkkii ddllaa aauuttoorróóww sstteerroowwnniikkóóww kklliieennttóóww PPCCMMCCIIAA..
Zdecydowałem, że nie jest rozsądne dla mnie, abym rozprowadzał
wszystkie sterowniki klientów PCMCIA jako część pakietu PCMCIA. Każdy
nowy sterownik czyni główny pakiet trudniejszym do utrzymania i, co
można było przewidzieć, dołączenie sterownika przenosi trochę pracy
opiekuna z autora na mnie. W zamian za to, zdecydujÄ™ osobno dla
każdego przypadku (case by case) czy włączyć czy nie sterowniki pisane
przez osoby trzecie, w zależności od żądań użytkowników jak i
możliwości utrzymywania. Sugeruję, żeby autorzy sterowników, które nie
dostały się do głównego pakietu, zaadoptowali następujący schemat przy
przygotowywaniu ich sterowników do dystrybucji.
Pliki sterownika powinny być ułożone w takiej samej strukturze
katalogów jak w głównej dystrybucji, tak, żeby można było rozpakować
sterownik ten w głównym katalogu źródeł głównej dystrybucji. Sterownik
powinien posiadać pliki źródłowe (w Katalog główny powinien zawierać
także plik README.
W katalogu głównym powinien się także znajdować makefile, ustawiony w
taki sposób, że "make -f ... all" i "make -f ... install" skompiluje
sterownik i zainstaluje wszystkie potrzebne pliki. Jeśli plik ten
posiada rozszerzenie .mk, to zostanie on automatycznie wykonany przez
główny pliku Makefile dla celów all i install.
Oto przykład jak taki plik mógłby być skonstruowany.
# Przykładowy Makefile dla sterowników pisanych przez osoby trzecie
FILES = sample_cs.mk README.sample_cs \
modules/sample_cs.c modules/sample_cs.h \
etc/sample etc/sample.opts man/sample_cs.4
all:
$(MAKE) -C modules MODULES=sample_cs.o
install:
$(MAKE) -C modules install-modules MODULES=sample_cs.o
$(MAKE) -C etc install-clients CLIENTS=sample
$(MAKE) -C man install-man4 MAN4=sample_cs.4
dist:
tar czvf sample_cs.tar.gz $(FILES)
Plik ten używa celów install zdefiniowanych w pakiecie PCMCIA 2.9.10 i
późniejszych. Zawiera on także cel "dist" dla wygody autora
sterownika. Przypuszczalnie będziesz chciał dodać numer wersji do
ostatecznego pakietu (np. sample_cs-1.5.tar.gz). Pełna dystrybucja
mogłaby wyglądać tak:
sample_cs.mk
README.sample_cs
modules/sample_cs.c
modules/sample_cs.h
etc/sample
etc/sample.opts
man/sample_cs.4
Z takim układem katalogów, po rozpakowaniu sterownik staje się częścią
głównej dystrybucji. Może korzystać z plików nagłówkowych PCMCIA, tak
jak i z możliwości sprawdzania konfiguracji systemu użytkownika i
automatycznego sprawdzania zależności tak samo jak "normalny"
sterownik klienta.
Będę akceptował sterowniki przygotowane zgodnie z tą specyfikacją i
umieszczał je w katalogu /pub/pcmcia/contrib na moim serwerze FTP -
hyper.stanford.edu. Plik README w tym katalogu będzie opisywał jak
rozpakować sterownik pisany przez trzecią osobę.
Interfejs sterownika PCMCIA nie zmienił się wiele przez ten czas i
prawie zawsze zachowywał wsteczną kompatybilność. Sterownik klienta
nie będzie musiał być aktualizowany dla pobocznych wersji w pakiecie
głównym PCMCIA. Spróbuję powiadamiać autorów sterowników o zmianach,
które wymagają uaktualnienia ich sterowników.
66..55.. OOdd ttłłuummaacczzaa..
TÅ‚umaczenie to jest chronione prawami autorskimi © Bartosza
Maruszewskiego. Dozwolone jest rozprowadzanie i dystrybucja na
prawach takich samych jak dokument oryginalny.
Jeśli znalazłeś jakieś rażące błędy ortograficzne, gramatyczne,
składniowe, techniczne to pisz do mnie:
B.Maruszewski@jtz.org.pl A możesz tu znaleźć dość dużo może nie
błędów, ale konstrukcji, które nie są podobne do języka polskiego. Ale
to wszystko dlatego, że jest trochę ciężko przetłumaczyć zdanko z
angielskiego jeśli jest obok siebie 4 czy czasami nawet 6 rzeczowników
;) Jeśli zauważysz taki stwór i wpadniesz na lepsze określenie,
napisz. Jeśli będzie to w miarę sensowne, to napewno tego nie
zignorujÄ™.
Oficjalną stroną tłumaczeń HOWTO jest http://www.jtz.org.pl/
Aktualne wersje przetłumaczonych dokumentów znajdują się na tejże
stronie. Dostępne są także poprzez anonimowe ftp pod adresem
ftp.jtz.org.pl w katalogu /JTZ/.
Przetłumaczone przeze mnie dokumenty znajdują się także na mojej
stronie WWW. SÄ… tam
też odwołania do Polskiej Strony Tłumaczeniowej.
Kontakt z naszą grupą, grupą tłumaczy możesz uzyskać poprzez listę
dyskusyjną jtz@ippt.gov.pl. Jeśli chcesz sie na nią zapisać, to wyślij
list o treści subscribe jtz Imię Nazwisko na adres
listproc@ippt.gov.pl
Zmiany w tym dokumencie wprowadzone przez tłumacza to odwołania do
polskich serwerów ftp.
Wyszukiwarka
Podobne podstrony:
PCMCIA HOWTO pl 5 (2)
PCMCIA HOWTO pl 1 (2)
PCMCIA HOWTO pl (2)
pcmcia howto pl 3
PCMCIA HOWTO pl 4 (2)
pcmcia howto pl 2
PCMCIA HOWTO pl (3)
PCMCIA HOWTO pl 6 (2)
bootdisk howto pl 8
PPP HOWTO pl 6 (2)
NIS HOWTO pl 1 (2)
cdrom howto pl 1
jtz howto pl 5
Keystroke HOWTO pl (2)
PostgreSQL HOWTO pl 14
printing howto pl 5
debian apt howto pl
Kernel HOWTO pl 12 (2)
XFree86 HOWTO pl (3)
więcej podobnych podstron