# Jakie argumenty można przekazać do jądra podczas startu.

## Autor: Paul Gortmaker, gpg109@rsphy1.anu.edu.au
v1.14, 1 Lutego 1998
Wersja polska: Bartosz Maruszewski, B.Maruszewski@jtz.org.pl
v1.4, 16 Sierpnia 1998

Dokument ten jest zestawieniem wszystkich możliwych argumentów podawanych w czasie startu systemu (Boot prompt). Dotyczy to wszystkich parametrów jądra jak i sterowników urządzeń. Zawarte są tutaj także opisy jak jądro sortuje te argumenty oraz najpopularniejszego oprogramowania służącego do startu jądra. Dokument ten został napisany w standardzie ISO-8859-2. Wersja oryginalna tego dokumentu znajduje się pod adresem ftp.icm.edu.pl w katalogu `/pub/Linux/sunsite/docs/HOWTO`.

## 1. Wprowadzenie

Jądro ma ograniczoną możliwość przyjmowania informacji podczas startu w formie poleceń wydawanych z wiersza poleceń, podobnych do listy argumentów jakie podałbyś do zwykłego programu. W ogólności stosuje się to do przekazywania pewnych informacji do jądra na temat przyłączonych urządzeń, których ono samo nie mogłoby wykryć, lub w celu zmiany ustawień, tych urządzeń.

Jeśli skopiujesz jądro bezpośrednio na dyskietkę, (np. `cp zImage dev/fd0`) wtedy nie masz możliwosci przekazania żadnych argumentów do tego jądra. Dlatego większość użytkowników Linux-a używa specjalnych programów takich jak LILO czy loadlin służących do przekazywania tych argumentów do jądra i do ładowania go.

WAŻNA UWAGA DLA UŻYTKOWNIKÓW MODUŁÓW: Argumenty podczas ładowania jądra odnoszą się zwykle do sterowników sprzętowych wkompilowanych w jądro na stałe. Nie odnoszą one żadnego skutku w stosunku do sterowników łądownych jako moduły. Większość dystrybucji używa modułów. Jeśli nie jesteś pewien, to spójrz do `man depmod` i `man nmodprobe` jak również do `/etc/conf/modules`.

Bieżąca wersja tego dokumentu dotyczy jądra do wersji 2.0.33 włącznie oraz wersji rozwojowych do 2.1.84.

Dokument ten został pierwotnie napisany i opiekuje się nim:

> Paul Gortmaker, gpg109@rsphy1.anu.edu.au

***** UWAGA !!!!! *****
Argumenty jądra nie dotyczące urządzeń i portów specyficznych dla maszyn
typu i386 (szczególnie Atari/Amiga) nie są obecnie udokumentowane.
***********************

## 1.1 Disclaimer i Prawa autorskie.

Dokument ten nie jest idealny i najlepszy. Aczkolwiek jest on przypuszczalnie najświeższym, i zawiera najświeższe dane, które będziesz w stanie znaleźć. Nikt nie jest odpowiedzialny za to co stanie się z twoimi urządzeniami poza tobą. Jeśli twój komputer zacznie się palić (... co jest raczej niemożliwe!) ja nie biorę odpowiedzialności, tzn: AUTOR NIE JEST ODPOWIEDZIALNY ZA JAKIEKOLWIEK ZNISZCZENIA POWSTAŁE NA SKUTEK PODJĘTYCH DZIAŁAŃ NA PODSTAWIE TEGO DOKUMENTU. (Tłumacz też nie ; )) )

Dokument ten jest chroniony prawami autorskimi (C) 1995-1998 Paula Gortmakera.

Dokument ten może być kopiowany zgodnie z warunkami licencji GNU, v2, która jest tu zawarta poprzez odwołanie się do niej. Więcej na temat szczegółów znajdziesz w pliku `linux/COPYING`, który jest zawarty w dystrybucji źródeł jądra.

Jeśli zamierzasz wydać ten dokument jako pracę drukowaną, skontaktuj się z autorem, a on postara się sprawdzić czy masz najświeższe dostępne informacje. W przeszłości publikowane były przestarzałe dokumenty, które powodowały zasypywanie programistów pytaniami, które zostały już rozwiązane w najnowszych dokumentach.

## 1.2 Dokumenty związane z poniższym.

Najświeższą dokumentacją będzie zawsze wersja źródłowa jądra. Ale poczekaj, nie uciekaj ! Nie musisz znać żadnego języka programowania, aby czytać komentarze zawarte w źródłach. Na przykład jeśli szukasz jakie argumenty mogą być przekazane do sterownika AHA1542 SCSI, zajrzyj do katalogu `linux/drivers/scsi` i pliku `aha1542.c` - a w pierwszych 100 liniach znajdziesz czysty tekst w języku angielskim (niestety, ale nie ma fizycznej możliwosci na tłumaczenie tych tekstów) opisujący argumenty, których szukasz.

Następnymi najlepszymi dokumentami będą te, dystrybuowane ze źródłami jądra. Jest tam ich teraz nawet całkiem sporo, a większość z nich znajduje się w podkatalogu `Documentation` i jego dalszych podkatalogach. Źródła jądra znajdują się zwykle w katalogu `/usr/src/linux`. Czasami można znaleźć pliki `README.xx` w odpowiednich podkatalogach.

Jeśli już wiesz jakich parametrów chcesz używać i chcesz teraz wiedzieć jak przekazać je do jądra to spójrz na dokumentację, która przychodzi razem z oprogramowaniem, którego będziesz używał, aby załadować jądro (najczęściej jest to `LILO` lub `loadlin`). Krótki przegląd znajduje się poniżej, ale nie zastępuje on dokumentacji dostarczanej wraz z danym oprogramowaniem.

## 1.3 Grupy dyskusyjne dotyczące Linux-a.

Jeśli masz jakieś pytania dotyczące przekazywania parametrów do jądra, PRZECZYTAJ najpierw ten dokument. Jeśli ten i związane z nim wymienione wcześniej dokumenty nie odpowiedzą na twoje pytania wtedy możesz spróbować poczytać grupy dyskusyjne. Jednak zanim zaczniesz na ślepo wysyłać listy najpierw poczytaj przez kilka dni daną grupę, bo może akurat ktoś już zaczął ten temat, a może nawet twoje pytanie zalicza się do często zadawanych pytań (Frequently Asked Questions - FAQ). Szybkie przejrzenie jakiegoś dokumentu FAQ może być dobrym pomysłem zanim zaczniesz wysyłać pytania do grup dyskusyjnych.

Ogólne pytania jak skonfigurować swój system kieruj na grupę pl.comp.os.linux. Przestrzegaj poprzedniego paragrafu oraz nie wysyłaj pytań do wielu grup na raz ponieważ z reguły czytają je te same osoby.

## 1.4 Nowe wersje tego dokumentu.

Nowe wersje będą się znajdować pod adresem ftp.icm.edu.pl w katalogu `/pub/Linux/sunsite/docs/HOWTO`. Będą one sukcesywnie uaktualniane jak tylko będą się pojawiać nowe sterowniki bądź informacje.

Dokument ten został stworzony przy pomocy systemu SGML, który został przygotowany specjalnie dla projektu Linux HOWTO. Dzięki temu dostępne są różne wersje tego dokumentu takie jak: postscript, dvi, ascii, html a wkrótce także Texinfo.

Wszystkie te wersje są dostępne na `ftp.icm.edu.pl` w katalogu `/pub/Linux/sunsite/doc/HOWTO`. Zalecałbym przeglądanie tego dokumentu jako html lub postscript, gdyż jest tu wiele odwołań, których brakuje w zwykłym tekście.

## 2. Przegląd argumentów podawanych w czasie startu systemu.

Ta sekcja podaje kilka przykładów oprogramowania, które może być użyte do przekazywania argumentów do jądra i do ładowania go. Podaje także sposób interpretacji argumentów, jakie są na nie ograniczenia i jak są filtrowane dla odpowiedniego urządzenia. Ważne jest aby NIE używać odstępów w argumentach, tylko pomiędzy nimi. Wartości jakie mają być przekazane mają być oddzielone przecinkami bez żadnych odstępów. Spójrz na następujący przykład:

            ether=9,0x300,0xd0000,0xd4000,eth0  root=/dev/hda1               *DOBRZE*
            ether = 9, 0x300, 0xd0000, 0xd4000, eth0  root = /dev/hda1       *ŹLE*

## 2.1 LILO. (LInux LOader)

Najczęściej używanym programem służącym do ładowania Linux-a jest LILO (LInux LOader), napisany przez Wernera Amesbergera. Ma możliwość ładowania różnych jąder (jak i systemów) a swoją konfigurację zapisuje w pliku tekstowym. Większość dystrybucji jest rozprowadzana z LILO jako domyślnym programem ładującym. LILO umie załadować DOS-a, OS/2, Linux-a, FreeBSD i wiele innych systemów bez żadnych trudności i jest dość elastyczny. W typowej konfiguracji LILO zatrzyma się krótko po włączeniu komputera i wyświetli LILO:. Przez następnych kilka sekund będzie czekać na podanie ewentualnych argumentów a następnie zacznie ładować domyślny system. Typowymi etykietami opisującymi systemy i używanymi w LILO są `linux, backup, linux-old, old, dos, msdos`. Jeśli chcesz wpisać jakieś argumenty, wpisujesz je zaraz po nazwie systemu jaki chcesz załadować, tak jak w przykładzie poniżej:

            LILO: linux root=/dev/hda1

Bardzo przydatne jest polecenie `append=` jeśli ktoś chce dodać jakiś argument na stałe. Tak więc aby nie wpisywać go za każdym razem wystarczy po prostu dodać linijkę `append = "xxx=yyy" do plik /etc/lilo.conf`. Może być ona dodana albo na początku pliku, wtedy będzie się odnosić do wszystkich sekcji, albo w danej sekcji `image`, tak aby odnosiła się tylko do niej. Zajrzyj do dokumentacji LILO aby dowiedzieć się więcej szczegółów.

## 2.2 LoadLin.

Innym często używanym programem do ładowania Linux-a jest loadlin.exe. Jest to DOS-owy program, który potrafi załadować jądro (wraz z argumentami startowymi) z wiersza poleceń DOS-a zakładając, że są dostępne pewne zasoby. Jest to dobre rozwiązanie dla tych, którzy używają DOS-a i chcą się z niego szybko (lub niekoniecznie) przełączyć na Linux-a.

Jest on także bardzo przydatny jeśli masz jakieś urządzenie, które aby było przydatne do użycia musi zostać ustawione przez sterownik DOS-owy. Dobrym przykładem mogą być tutaj karty kompatybilne z SoundBlaster, które muszą mieć ustawione kilka rejestrów przez sterownik DOS-owy aby ustawić je w tryb kompatybilności z SoundBlaster. Ładowanie DOS-a wraz ze sterownikiem, a potem ładowanie Linux-a z wiersza poleceń DOS-a programem `LOADLIN.EXE` zapobiega zresetowaniu karty, co miałoby miejsce gdybyśmy zresetowali komputer, aby uruchomić Linux-a. W ten sposób karta zostaje w trybie kompatybilności z SoundBlaster i jest przydatna do użycia pod Linux-em.

Są także inne programy służące do ładowania Linux-a. Aby poznać kompletną listę takich programów zajrzyj do swojego lokalnego serwera ftp do katalogu `system/Linux-boot`.

## 2.3 Narzędzie "rdev".

Jest kilka argumentów startowych, których wartości domyślne są zapisane w różnych bajtach w samym jądrze. Jest narzędzie zwane `rdev` zainstalowane na większości systemów, które wie gdzie te bajty się znajdują i jak je zmienić. Potrafi ono także zmienić różne rzeczy, które nie mają swoich argumentów startowych, jak na przykład domyślny tryb wyświetlania.

Narzędzie rdev może być zwykle zastąpione przez `swapdev, ramsize, vidmode i rootflags`. Jest to pięć rzeczy, które rdev potrafi zmienić: główny system plików (katalog "/"), urządzenie swap, parametry RAM-dysku, domyślny tryb graficzny i ustawienia głównego systemu plików jako tylko-do-odczytu bądź w tryb odczytu-zapisu.

Więcej informacji na temat `rdev` można znaleźć pisząc w wierszu poleceń `rdev -h` bądź w podręczniku systemowym `man`.

## 2.4 Jak jądro sortuje argumenty.

Większość argumentów startowych ma następującą składnię:

            nazwa=[wartość_1][,wartość_2]...[,wartość_11]

gdzie "nazwa" jest unikalnym słowem kluczowym identyfikującym część jądra, do którego odnoszą się podane wartości. Większa ilość argumentów startowych to lista powyższych wywołań oddzielonych od siebie odstępem. Zauważ, że maksymalna ilość wartości to 11. Jądro rzeczywiście rozpoznaje tylko 11 elementów oddzielonych przecinkami przy danym słowie kluczowym. (Chociaż możesz użyć ponownie tego samego słowa kluczowego z dodatkowymi 11 argumentami w jakichś niezwykle skomplikowanych sytuacjach, zakładając, że dane funkcja ustawiająca (patrz niżej) to dopuszcza). Zwróć uwagę na fakt, iż jądro dzieli tę listę na maksimum 10 argumentów typu integer, i następujący po nich łańcuch, więc tak naprawdę nie możesz podać 11 argumentów typu integer o ile nie przerobisz sterownika tak, aby sam sobie zamienił ten 11 element na liczbę typu integer.

Wiekszość sortowania odbywa się w `linux/init/main.c`. Najpierw jądro sprawdza czy argument jest jednym ze specjalnych argumentów: `root=, ro, rw, debug`. Znaczenie tych parametrów jest opisane dalej w tym dokumencie.

Następnie sprawdza listę argumentów zawartych w tablicy `bootsetups` czy podany łańcuch nie został przypisany którejś z funkcji ustawiającej konkretne urządzenie bądź część jądra. Jeśli przekazałeś do jądra linię `xxx=3,4,5,6,yyy` wtedy jądro przeszukałoby tablicę `bootsetups` aby zobaczyć czy xxx jest tam wymienione. Jeśli byłoby wymienione wtedy uruchomiłoby funkcję związaną z xxx i przekazałoby jej argumenty typu integer: `3,4,5,6` oraz ostatni łańcuch `yyy`.

## 2.5 Ustawianie zmiennych środowiskowych.

Wszystko w formie "xxx=yyy", co nie jest funkcją ustawiającą opisaną powyżej jest interpretowane jako zmienna środowiskowa, mająca być ustawiona. (bezużytecznym?) Przykładem mogłoby być użycie `TERM=vt100` jako argumentu startowego.

## 2.6 Przekazywanie argumentów do programu "init".

Wszystkie pozostałe argumenty startowe, które nie zostały rozpoznane jako funkcje ustawiające, czy zmienne środowiskowe są przekazywane do procesu o numerze 1, którym zazwyczaj jest `init`. Najczęstszym przekazywanym argumentem do programu `init` jest słowo `single` oznaczające uruchomienie systemu w trybie jednego użytkownika nie uruchamiając demonów, które zwykle są uruchamiane. Sprawdź w podręczniku `man` jaką masz wersję programu "init" i jakie argumenty możesz mu przekazać.

## 3. Ogólne argumenty nie dotyczące sterowników.

Są to argumenty nie dotyczące żadnych konkretnych sterowników czy urządzeń peryferyjnych. Odnoszą się natomiast do wewnętrznych parametrów jądra, takich jak: obsługa pamięci, obsługa RAM-dysku, obsługa głównego systemu plików itd.

## 3.1 Argumenty dotyczące głównego systemu plików.

Następujące argumenty mają wpływ na to jak jądro będzie obsługiwać główny system plików:

### Argument "root=".

Poprzez ten argument możemy przekazać do jądra które urządzenie ma być użyte jako główny system plików. Domyślnym ustawieniem jest tutaj urządzenie, na którym był główny system plików, podczas tworzenia (kompilacji) jądra. Na przykład jeśli dane jądro było utworzone na systemie, w którym główny system plików był na urządzeniu `/dev/hda1` wtedy domyślnym ustawieniem będzie "/dev/hda1". Aby to zmienić i ustawić drugą stację dyskietek jako główny system plików trzeba użyć argumentu `root=` w następujący sposób:

       root=/dev/fd1

Główny system plików może być zamontowany na następujących urządzeniach:

(1) /dev/hdaN do /dev/hddN, gdzie N jest numerem partycji na dysku pierwszym, drugim, trzecim lub czwartym kompatybilnym z ST-506.
(2) /dev/sdaN do /dev/sdeN, gdzie N jest numerem partycji na dysku pierwszym, drugim, trzecim, czwartym lub piątym kompatybilnym z SCSI.
(3) /dev/xdaN do /dev/xdbN, gdzie N jest numerem partycji na dysku pierwszym lub drugim kompatybilnym z XT.
(4) /dev/fdN, gdzie N jest numerem stacji dyskietek (N=0 - A:, N=1 - B:)
(5) /dev/nfs, co raczej nie jest urządzeniem a argumentem, który mówi, żeby zamontować główny system plików poprzez sieć.

Inna znacznie bardziej kłopotliwa i skomplikowana metoda przekazania, na którym urządzeniu ma być główny system plików jest podanie liczby głównej i pobocznej (np. /dev/sda3 to liczba główna - 8, liczba poboczna - 3 a więc mógłbyś napisać `root=0x803`.

To jest jeden z kilku argumentów startowych, który ma zapisaną domyślną wartość w jądrze, i który przez to może być zmieniany za pomocą `rdev`.

### Argument "ro".

Kiedy jądro ładuje system, potrzebuje głównego systemu plików, aby odczytać z niego podstawowe informacje. To jest główny system plików montowany podczas ładowania. Chociaż, jeśli system ten jest zamontowany z możliwoscią zapisu, nie możesz dokładnie sprawdzić jego integralności (poprawności) jeśli akurat trwa zapis pliku. Argument `ro` przekazuje do jądra informację, aby zamontować główny system plików jako tylko-do-odczytu, tak więc jakikolwiek program sprawdzający poprawność systemu plików może założyć, że nie ma żadnych częściowo zapisanych plików podczas sprawdzania. Żaden program ani proces nie może zapisać niczego do pliku dopóki system plików nie zostanie przemontowany w tryb odczytu-zapisu (read-write).

To jest jeden z kilku argumentów startowych, który ma zapisaną domyślną wartość w jądrze, i który przez to może być zmieniany za pomocą `rdev`.

### Argument "rw".

To jest dokładną odwrotnością poprzedniego argumentu, czyli przekazuje do jądra, aby zamontować główny system plików z możliwoscią zapisu. Tak czy inaczej ostatecznie chcemy mieć możliwość zapisu na głównym systemie plików. Ale pamiętaj, aby nie uruchamiać żadnych programów testujących (typu `fsck`) system plików kiedy jest on zamontowany z możliwością zapisu.

Ta sama wartość zapisana w jądrze wspomniana wyżej jest używana do tego argumentu, dostępna przez `rdev`.

## 3.2 Argumenty dotyczące RAM-dysku.

Następujące argumenty są związane z tym jak jądro obsługuje RAM-dysk, który jest zwykle używany do bootstrappingu podczas instalacji lub na maszynach ze sterownikami w postaci modułów, które muszą być zainstalowane aby mieć dostęp do głównego systemu plików.

### Argument "ramdisk_start=".

Aby pozwolić obrazowi jądra na przebywanie na dyskietce wraz ze skompresowanym obrazem RAM-dysku dodany został argument `ramdisk_start=<offset>'. Jądro nie może być zawarte w skompresowanym obrazie głównego systemu plików na RAM-dysku, ponieważ musi ono być zapisane poczynając od bloku 0, tak aby BIOS mógł załadować `bootsektor` i wtedy jądro może zacząć się ładować.

Uwaga: Jeśli używasz rozpakowanego obrazu RAM-dysku, wtedy jądro może być częścią obrazu głównego systemu plików, który jest ładowany do RAM-dysku i system może wystartować z tej dyskietki, albo obraz głównego systemu plików i jądro mogą być dwiema oddzielnymi dyskietkami, tak jak w przypadku skompresowanego obrazu.

Jeśli używasz dwóch dyskietek (bootdysk z jądrem i rootdysk z obraze RAM-dysku) wtedy RAM-dysk zaczyna się od bloku 0 i jako `offset` w naszym przykładzie trzeba wpisać 0. Ponieważ jest to domyślna wartość nie musisz w tym przypadku używać tego argumentu.

### Argument "load_ramdisk=".

Ten argument informuje jądro czy ma ono ładować RAM-dysk czy nie. Pisząc `load_ramdisk=1` informujesz jądro, aby załadować zawartość dyskietki do RAM-dysku. Domyślną wartością jest 0, czyli jądro nie ma ładować zawartości dyskietki do RAM-dysku.

Dokładny opis argumentów startowych dotyczących RAM-dysku znajdziesz w `linux/Documentation/ramdiskt.txt`. Jest tam także opisane w jaki sposób można zapisać w jądrze wartość tego parametru poleceniem `rdev`.

### Argument "prompt_ramdisk=".

Ten argument informuje jądro czy wypisywać prośbę o włożenie dyskietki z zawartością RAM-dysku czy nie. W konfiguracji z jedną dyskietką zawartość RAM-dysku jest na tej samej dyskietce co jądro, które się właśnie przestało ładować, a więc prośba nie jest potrzebna. W tym wypadku można użyć `prompt_ramdisk=0`. W konfiguracji z dwiema dyskietkami potrzebujesz czasu na zamianę dyskietek a więc należy użyć `prompt_ramdisk=1`. Ponieważ to jest wartość domyślna nie trzeba tego pisać.
(Uwaga historyczna: Co sprytniejsi używali opcji LILO `vga=ask`, aby na chwilę przerwać start systemu i zamienić dyskietki.)

Dokładny opis argumentów startowych dotyczących RAM-dysku znajdziesz w `linux/Documentation/ramdiskt.txt`. Jest tam także opisane w jaki sposób można zapisać w jądrze wartość tego parametru poleceniem `rdev`.

### Argument "ramdisk_size=".

Ponieważ prawdą jest, że zawartość RAM-dysku rośnie dynamicznie wraz z coraz nowszymi wersjami systemu, jest górne ograniczenie jego rozmiaru, tak aby nie zabrał całej pamięci RAM i nie zostawił nas na lodzie. Domyślną wartością jest 4096 (czyli 4MB), która powinna być wystarczająco duża dla większości potrzeb. Możesz zmienić tę wartość zależnie od potrzeb na mniejszą lub większą przy pomocy tego argumentu.

Dokładny opis argumentów startowych dotyczących RAM-dysku znajdziesz w `linux/Documentation/ramdiskt.txt`. Jest tam także opisane w jaki sposób można zapisać w jądrze wartość tego parametru poleceniem `rdev`.

### Argument "ramdisk=".

(UWAGA: Ten argument jest przestarzały i nie powinien być używany z jądrami w wersji wyższej niż 1.3.47. Argumenty, których należy używać zostały opisane powyżej.)

Argument ten określa rozmiar RAM-dysku w kB. Na przykład jeśli ktoś chciałby mieć główny system plików na dyskietce 1.44MB załadowanej do RAM-dysku użyłby następującego argumentu:

            ramdisk=1440

To jest jeden z kilku argumentów startowych, który ma zapisaną domyślną wartość w jądrze, i który przez to może być zmieniany za pomocą `rdev`.

### Argument "noinitrd".

Jądra w wersji 2.x i wyższej mają możliwość wykonywania `/linuxrc` z zawartości RAM-dysku. Możliwość ta jest zwykle wykorzystywana, aby umożliwić ładowanie modułów potrzebnych do zamontowania rzeczywistego głównego systemu plików (np. załaduj sterownik SCSI zapisany w RAM-dysku, a potem zamontuj rzeczywisty główny system plików znajdujący się na dysku SCSI.)

Właściwy argument "noinitrd" określa co dzieje się z danymi initrd po tym jak jądro się załadowało. Jeśli podamy ten argument dane te staną się dostępne poprzez urządzenie specjalne `/dev/initrd`, które może być czytane zanim pamięć RAM zostanie przywrócona systemowi, zamiast być zapisanymi do RAM-dysku. Odnośnie szczegółów dotyczących używania startowego RAM-dysku, przeczytaj `linux/Documentation/initrd.txt`. Najnowsza wersja `LILO` oraz `loadlin.exe` powinna mieć także dodatkowe informacje na ten temat.

## 3.3 . Argumenty dotyczące obsługi pamięci.

Następujące argumenty określają jak Linux wykrywa i obsługuje pamięć fizyczną i wirtualną w twoim systemie.

### Argument "mem=".

Ten argument ma dwa przeznaczenia: Pierwotnym założeniem było określenie ilości zainstalowanej pamięci (lub wartość mniejsza jeśli chciałeś użyć mniej pamięci niż masz w rzeczywistości). Drugim (prawie wcale nie używanym) przeznaczeniem jest podanie `mem=nopentium` co informuje jądro, aby nie używało stron pamięci o rozmiarze 4MB.

Oryginalne odwołanie do BIOS-u w specyfikacji PC, które zwraca ilość zainstalowanej pamięci zostało tak zaprojektowane, że było w stanie zwrócić co najwyżej 64MB. (Tak! Następny przykład na brak patrzenia w przyszłość, zupełnie tak samo jak w przypadku ilości cylindrów dysku ograniczonej do 1024... eh). Linux używa tego odwołania BIOS-u podczas startu, aby określić ilość zainstalowanej pamięci. Jeśli masz więcej niż 64MB RAM-u, możesz użyć tego argumentu, aby poinformować jądro, ile rzeczywiście masz pamięci RAM. Oto cytat Linusa na temat jak używać tego argumentu:

"Jądro zaakceptuje jakikolwiek argument "mem=xx" jaki mu podasz, a jeśli stwierdzi, że je okłamałeś, wywali się z wielkim hukiem wcześniej czy później. Argument ten określa najwyższy dostępny adres pamięci RAM, więc `mem=0x1000000` znaczy, że masz 16MB RAM-u na przykład. Dla maszyny z 96MB RAM-u byłoby to: `mem=0x6000000`.

UWAGA UWAGA UWAGA: niektóre maszyny mogą używać najwyższych adresów do cache'owania BIOS-u czy czegoś podobnego, więc mógłbyś nie mieć pełnych 96MB RAM-u dostępnego. I na odwrót: niektóre procesory odwzorowują pamięć fizyczną, która jest zakryta przez BIOS tuż za najwyższym dostępnym adresem, tak więc ten najwyższy adres mógłby być np: 96MB + 384kB. Jeśli poinformujesz Linux-a, że ma więcej pamięci niż w rzeczywistości, będą się dziać złe rzeczy: może nie od razu, ale kiedyś na pewno."

Zauważ, że wartość tego argumentu nie musi być podana szesnastkowo a przyrostki "k" i "M" (wielkość liter nie ważna) mogą być użyte do określenia odpowiednio kilobajtów i Megabajtów. ("k" spowoduje przesunięcie 10 bitowe podanej wartości, a "M" - 20 bitowe) Powyższe ostrzeżenie jest wciąż ważne, ponieważ maszyna z 96MB pamięci może działać z argumentem `mem=97920k` ale może nie działać z `mem=98304k lub mem=96M`.

### Argument "swap=".

Argument ten pozwala użytkownikowi podać kilka parametrów pamięci wirtualnej, które są związane z pamięcią swap. Można tu podać następujące parametry:

            MAX_PAGE_AGE
            PAGE_ADVANCE
            PAGE_DECLINE
            PAGE_INITIAL_AGE
            AGE_CLUSTER_FRACT
            AGE_CLUSTER_MIN
            PAGEOUT_WEIGHT
            BUFFEROUT_WEIGHT

Zainteresowani hackerzy proszeni są o przeczytanie `linux/mm/swap.c` a także `/proc/sys/vm`.

### Argument "buff=".

Podobnie do argumentu "swap=" ten pozwala użytkownikowi podać kilka parametrów związanych z obsługą pamięci buforowej. Akceptuje następujące parametry:

            MAX_BUFF_AGE
            BUFF_ADVANCE
            BUFF_DECLINE
            BUFF_INITIAL_AGE
            BUFFEROUT_WEIGHT
            BUFFERMEM_GRACE

Zainteresowani hackerzy proszeni są o przeczytanie `linux/mm/swap.c` a także `/proc/sys/vm`.

## 3.4 Argumenty dotyczące głównego systemu plików montowanego poprzez NFS.

Linux obsługuje bezdyskowe stacje robocze, które mają zamontowany główny system plików jako NFS (Network File System). Argumenty te używane są, aby przekazać systemowi z jakiego komputera ma sobie zamontować główny system plików. Zauważ także, że wymagany jest w tym przypadku argument `root=/dev/nfs`. Szczegóły na temat używania głównego systemu plików zamontowanego jako NFS znajdują się w pliku `linux/Documentation/nfsroot.txt`. Powinieneś go przeczytać, gdyż ten paragraf jest tylko streszczeniem tamtego pliku.

### Argument "nfsroot=".

Argument ten informuje jądro jakiej maszyny użyć, jakiego katalogu na niej i jakich opcji NFS podczas montowania głównego systemu plików. Argument ten ma następującą postać:

            nfsroot=[<serwer-ip>:]<gł.sys.pl.>[,<opcje-nfs>]

Jeśli argument `nfsroot` nie jest podany wtedy użyte zostanie "/tftpboot/%s". Kolejne opcje tego argumentu oznaczają:

<serwer-ip> - Określa adres IP serwera NFS. Jeśli to pole nie jest podane, użyta zostanie wartość zmiennej nfsaddrs (patrz poniżej). Jedną z możliwości użycia tego parametru jest na przykład pozwolenie na użycie różnych serwerów dla RARP i NFS. Zwykle możesz zostawić ten parametr pusty.

<gł.sys.pl.> - Nazwa katalogu na serwerze, który ma być zamontowany jako główny system plików. Jeśli użyty jest znak "%s", zostanie on zamieniony na znakową reprezentację numeru IP klienta.

<opcje-nfs> - Standardowe opcje NFS. Wszystkie opcje są oddzielone od siebie przecinkami. Jeśli pole "opcje-nfs" nie jest podane, zostaną użyte następujące wartości domyślne:

            port            = podany przez demona "portmap" z serwera
            rsize           = 1024
            wsize           = 1024
            timeo           = 7
            retrans         = 3
            acregmin        = 3
            acregmax        = 60
            acdirmin        = 30
            acdirmax        = 60
            flags           = hard, nointr, noposix, cto, ac

### Argument "nfsaddrs=".

Ten argument ustawia różne adresy interfejsu sieciowego, które są wymagane do komunikacji przez sieć. Jeśli argument ten nie jest podany, wtedy jądro próbuje użyć protokołów RARP bądź BOOTP, aby znaleźć te parametry. Argument ten ma następująca postać:

            nfsaddrs=<mój-ip>:<serw-ip>:<r-ip>:<netmask>:<nazwa>:<urz>:<auto>

<mój-ip> - Adres IP klienta. Jeśli jest on pusty, zostanie wykryty przy pomocy RARP albo BOOTP. Jaki protokół jest używany, zależy od tego co zostało udostępnione podczas kompilacji jądra i od parametru <auto>. Jeśli parametr ten nie jest pusty, ani RARP ani BOOTP nie zostanie użyty.

<serw-ip> - Adres IP serwera NFS. Jeśli RARP został użyty do wykrycia adresu klienta i parametr ten nie jest pusty akceptowane będą odpowiedzi tylko z wyspecyfikowanego serwera. Aby użyć różnych serwerów RARP i NFS, podaj swój serwer RARP tutaj (lub zostaw pusty), a serwer NFS podaj w argumencie nfsroot (patrz wyżej). Jeśli parametr ten jest pusty, użyty jest adres serwera, który odpowiedział na pytanie RARP lub BOOTP.

<r-ip> - Adres IP rutera jeśli serwer jest w innej podsieci. Jeśli opcja ta jest pusta żaden ruter nie jest używany i przyjmowane jest, że serwer znajduje się w sieci lokalnej, o ile nie odebrano wartości poprzez BOOTP.

<netmask> - Maska sieci dla lokalnego interfejsu sieciowego. Jeśli opcja ta jest pusta, maska jest wyprowadzana z numeru IP klienta, o ile nie otrzymano wartości poprzez BOOTP.

<nazwa> - Nazwa klienta. Jeśli opcja ta jest pusta, adres IP klienta używany jest w notacji znakowej lub wartość otrzymana poprzez BOOTP.

<urz> - Nazwa urządzenia sieciowego, które ma zostać użyte. Jeśli opcja ta jest pusta, wszystkie urządzenia są używane do żądań RARP, a pierwsze znalezione dla BOOTP. Dla NFS używane jest to urządzenie, dla którego zostały otrzymane odpowiedzi RARP lub BOOTP. Jeśli masz tylko jedno urządzenie możesz spokojnie zostawić tę opcję pustą.

<auto> - Metoda, która ma być użyta do autokonfiguracji. Jeśli jest to "rarp" lub "bootp" używany jest podany protokół. Jeśli wartością jest "both" lub opcja ta jest pusta, oba protokoły są używane jeśli tylko są wkompilowane w jądrze. Używając "none" informujesz, aby nie używać autokonfiguracji. W tym przypadku musisz podać wszystkie potrzebne wartości poprzednich pól.

Parametr <auto> może pojawić się samotnie jako wartość argumentu "nfsaddrs" (bez tych wszystkich ":" znaków przedtem) wtedy używana jest autokonfiguracja. Aczkolwiek wartość "none" nie jest dostępna w tym przypadku.

## 3.5 Inne argumenty.

Te różne argumenty startowe pozwalają użytkownikowi ustawić pewne wewnętrzne parametry jądra.

### Argument "debug".

Jądro podaje ważne (i mniej ważne) informacje do użytkownika poprzez funkcję `printk()`. Jeśli informacja jest rozpoznawana jako ważna, funkcja `printk()` umieści kopię na bieżącej konsoli jak również przekaże ją do demona `klogd` tak aby wiadomość ta została zapisana na dysk. Powód, dla którego informacje te są wysyłane na konsolę jak i zapisywane na dysk jest taki, że w pewnych nieszczęśliwych warunkach (np: awaria dysku) informacje te mogą nie dotrzeć na dysk i zostałyby stracone.

Próg, wg. którego informacja jest uważana za ważną lub nie ustawiany jest przez zmienną `console_loglevel`. Wartością domyślną jest zapisywanie wszystkiego ważniejszego (o mniejszym poziomie, a tym samym większym priorytecie) niż `DEBUG` (poziom 7) na konsolę. (poziomy te zdefiniowane są w pliku nagłówkowym `kernel.h`). Podanie argumentu startowego `debug` ustawi poziom logowania na konsolę na 10, tak, że wszystkie informacje z jądra pojawią się na konsoli.

Poziom logowania na konsolę może zwykle być ustawiony także podczas normalnej pracy systemu poprzez opcję programu `klogd`. Sprawdź w systemie pomocy "man" jak to zrobić.

### Argument "init=".

Jądro standardowo po załadowaniu się uruchamia program "init", który następnie zajmuje się przygotowaniem systemu dla użytkownika poprzez uruchomienie programów getty, skryptów "rc" itp. Jądro najpierw szuka `/sbin/init`, następnie `/etc/init` a na końcu spróbuje użyć `/bin/sh` (możliwie w `/etc/rc`). Jeśli na przykład twój program init popsuł się i nie jest możliwy restart systemu, możesz użyć argumentu `init=/bin/sh`, który spowoduje uruchomienie shell-a natychmiast po załadowaniu jądra, umożliwiając ci zamianę popsutego programu na dobry.

### Argument "no387".

Niektóre koprocesory i387 mają błędy, które pojawiają się jeśli używamy 32-bitowego trybu chronionego. Na przykład niektóre wczesne procesory ULSI-387 mogą powodować poważne zawieszenia podczas używania operacji zmiennoprzecinkowych, widocznie z powodu błędu w instrukcjach FRSAV/FRRESTOR. Użycie argumentu startowego "no387" spowoduje ignorowanie koprocesora przez Linux-a nawet jeśli go masz. Oczywiście musisz mieć wkompilowaną emulację koprocesora w jądrze! Może to być także przydatne jeśli masz jedną z tych naprawdę starych maszyn 386, które mogą używać 80287 FPU, a Linux nie umie tego używać.

### Argument "no-hlt".

Rodzina procesorów i386 (a co za tym idzie i nowsze) mają instrukcję "hlt", która informuje procesor, że nic się nie stanie dopóki jakieś zewnętrzne urządzenie (klawiatura, modem, dysk, itp.) nie zażąda jakiejś akcji. To pozwala na użycie trybu "low-power", który powoduje, że procesor siedzi jak zombi i czeka aż coś zażąda jakiejś akcji (zwykle poprzez przerwanie), co powoduje mniejsze zużycie prądu. Niektóre z wczesnych procesorów i486DX-100 miały problem z tą instrukcją, przez co nie mogły niezawodnie powrócić do trybu działania po użyciu tej instrukcji. Używając argumentu "no-hlt" informujesz Linux-a, aby po prostu robił sobie nieskończoną pętlę jeśli nie ma nic mądrzejszego do roboty, a nie zatrzymywał procesora jeśli nic się nie dzieje. To pozwala ludziom z tymi popsutymi procesorami używać Linux-a, chociaż lepiej, żeby spróbowali wymienić ten procesor.

### Argument "no-scroll".

Użycie tego argumentu startowego powoduje wyłączenie możliwości scrolowania, która powoduje utrudnienie użycia terminali Braille'a.

### Argument "panic=".

W nieprawdopodobnym przypadku paniki jądra (tj. wewnętrznego błędu, który został wykryty przez jądro, i który jądro decyduje się uważać na tyle poważnie, aby głośno jęknąć i wszystko zatrzymać) domyślnym zachowaniem się jądra jest po prostu siedzieć i czekać aż ktoś przyjdzie i zauważy informację o panice i zresetuje maszynę. Aczkolwiek jeśli maszyna jest rzadko odwiedzana, sensowny jest automatyczny reset. Na przykład używając "`panic=30`" podczas startu informujemy jądro aby po 30 sekundach spróbowało zresetować maszynę. Wartość 0 powoduje zachowanie domyślne.

Zauważ, że wartość ta może być także podana poprzez funkcję `sysctl` wywołaną na interfejsie `/proc/sys/kernel/panic`.

### Argument "profile=".

Ci, którzy chcą ingerować w wewnętrzne działanie jądra, mogą podać argument, który pozwala na określenie jak i gdzie jądro ma spędzać cykle procesora, aby doprowadzić do maksymalnego wykorzystania jego możliwości. Ten argument pozwala ustawić licznik przesunięć podczas startu. Typowo ustawiony jest on na dwa. Możesz także skompilować jądro z domyślnie ustawioną możliwością profilowania. W każdym z tych przypadków potrzebujesz takiego narzędzia jak `readprofile.c`, które umie używać `/proc/profile`.

### Argument "reboot=".

Opcja ta kontroluje sposób w jaki Linux restartuje komputer (typowo poprzez `/sbin/init`, który obsługuje kombinację klawiszy Control-Alt-Delete). Domyślnym zachowaniem co do późnych jąder jest tzw. "zimny" restart (tzn. pełen restart, wraz ze sprawdzaniem pamięci przez BIOS itp.) zamiast "ciepłego" restartu (tj. niepełen restart, bez testowania pamięci). Wartość domyślną zmieniono na "zimny" ponieważ taki restart, w przeciwieństwie do "ciepłego", wydaje się działać na tanim/popsutym sprzęcie. Aby przywrócić dawne zachowanie (tj. "ciepły" restart) użyj `reboot=w` albo właściwie jakiekolwiek słowo zaczynające się na `w` zadziała.

Po co zawracać sobie głowę? Niektóre kontrolery dysków z własną pamięcią cache może wykrywać "ciepły" restart, i zapisywać wszystkie dane z pamięci cache na dysk. Podczas "zimnego" restartu, karta może zostać zrestartowana i wszystkie dane z cache'u zostaną stracone. Inni raportowali systemy, którym sprawdzanie pamięci zabierało dużo czasu czy dłuższy czas inicjalizacji BIOS-ów SCSI.

### Argument "reserve=".

Argument ten jest używany do ochrony obszarów portów I/O przed przeszukiwaniem.

            reserve=iobase,extent[,iobase,extent]...

W niektórych maszynach może być konieczne, aby powstrzymać sterowniki urządzeń przed automatyczną próbą wykrycią urządzenia w konkretnych obszarach. Może to być spowodowane źle zrobionymi urządzeniami, które powodują zawieszanie podczas startu (tak jak niektóre karty Ethernetowe), urządzeniami błędnie rozpoznanymi, urządzeniami, których stan został zmieniony podczas wcześniejszej próby wykrycia, albo po prostu tym, że nie chcesz aby jakieś urządzenie zostało wykryte.

Argument startowy `reserve` eliminuje te problemy przez podanie obszaru adresów I/O, który nie ma być sprawdzany. Obszar ten jest oznaczany w tablicy rejestracyjnej portów jądra tak jakby jakieś urządzenie zostało już w tym obszarze wykryte (słowem `reserved`). Zauważ, że ten proceder nie jest konieczny na wszystkich maszynach. Tylko jeśli występuje problem lub sytuacja wyjątkowa, wymagająca użycia tego argumentu.

Porty I/O w podanym obszarze są chronione przed próbą automatycznego wykrywania, która używa funkcji `check_region()` przed wykrywaniem na ślepo w pewnym regionie adresów I/O. Argument ten wprowadzono, aby używać go kiedy jakiś sterownik wisi na karcie NE2000 lub identyfikuje jakieś inne urządzenie jako swoje. Poprawny sterownik nie powinien przeszukiwać zarezerwowanego obszaru, o ile inny argument startowy nie poinformuje go wyraźnie, że ma to zrobić. Wynika z tego, że argument `reserve` jest najczęściej używany w konfiguracji z innymi argumentami startowymi. Tak więc jeśli podasz jakiś obszar, aby chronić jakieś urządzenie, musisz zwykle podać wyraźnie port tego urządzenia. Większość sterowników ignoruje tablicę rejestracji portów jeśli mają podany konkretny adres. Na przykład poniższa linia:

            reserve=0x300,32 bla=0x300

powstrzymuje wszystkie sterowniki poza sterownikiem do urządzenia bla przed przeszukiwaniem adresu `0x300-0x31F`.

Jako zwykły argument startowy argument reserve ma limit na ilość parametrów (11), tak więc możesz podać tylko 5 obszarów zarezerwowanych przez każdy argument `reserve`. Jeśli masz powód, aby użyć więcej argumentów reserve możesz to zrobić.

### Argument "vga=".

Zauważ, że tak naprawdę to nie jest argument startowy. Jest to opcja, która jest interpretowana przez LILO, a nie przez jądro, tak jak wszystkie inne argumenty startowe. Jednak jej użycie stało się tak popularne, że wymaga ona tutaj wzmianki. Można to także ustawić przy pomocy `rdev -v` albo równoważnie `vidmode` w pliku vmlinuz.

Argument ten pozwala na zmianę trybu wyświetlania poprzez BIOS jeszcze przed załadowaniem jądra. Typowe tryby to 80x50, 132x44 itd. Najlepszym sposobem jest użycie tego argumentu w postaci `vga=ask`. Wyświetli on wtedy listę dostępnych trybów i będzie czekał na podanie jednego z nich. Później, jak już będziesz znał numer trybu jaki chcesz używać możesz go wpisać zamiast słowa "ask". Jeśli chcesz wiedzieć więcej zajrzyj do pliku `linux/Documentation/svga.txt`, który przychodzi wraz ze źródłami jądra.

Zauważ, że nowsze jądra (v2.1 i nowsze) mają kod ustawiania, który zmienia tryb video jako opcję, pokazaną jako Video mode selection support więc musisz włączyć tę opcję jeśli chcesz używać tej właściwości.

## 4. Argumenty startowe dla urządzeń peryferyjnych SCSI.

Sekcja ta zawiera opis argumentów startowych używanych do przekazywania informacji na temat dołączonych adapterów i urządzeń SCSI.

## 4.1 Argumenty dla sterowników średniego poziomu.

Sterowniki średniego poziomu obsługują takie rzeczy jak dyski, CD-ROM-y i taśmy bez wdawania się w szczegóły kontrolerów.

### Maksymalna liczba sprawdzanych urządzeń LUN. ("max_scsi_luns=")

Każde urządzenie SCSI może mieć pewną ilość "pod-urządzeń" zawartych w nim. Najpopularniejszym przykładem może być tutaj jeden z nowych CD-ROM-ów SCSI, który obsługuje więcej niż jeden dysk na raz. Każdy z tych dysków jest adresowany numerem logicznej jednostki (ang. Logical Unit Number LUN) danego urządzenia. Ale większość urządzeń takich jak dyski twarde, taśmy to pojedyncze urządzenia a zatem ich numer logicznej jednostki będzie wynosił 0.

Problem powstaje przy pojedynczych źle wykonanych urządzeniach LUN. Niektóre źle zaprojektowane urządzenia SCSI (stare i niestety nowe) zawieszają się gdy przeszukuje się je w celu znalezienia urządzenia o numerze LUN różnym od zera, a czasami zawieszają także całą szynę SCSI.

Nowsze jądra mają argument startowy, który pozwala ci podać maksymalny numer urządzenia LUN, które będzie szukane. Domyślny numer szukanego urządzenia to 0, aby zapobiec problemowi opisanemu powyżej.

Aby podać ilość poszukiwanych urządzeń LUN przy starcie, podajemy jako argument startowy "max_scsi_luns=n", gdzie n jest liczbą pomiędzy 1 a 8. Aby zapobiec problemom opisanym wyżej podajemy n=1.

### Parametry dla sterownika taśm SCSI. ("st=")

Niektóre konfiguracje startowe sterownika taśm SCSI można podać w następujący sposób:

            st=rozm_buf[,próg_zap[,max_bufs]]

Pierwsze dwie liczby są podawane w kilobajtach (kB). Domyślną wartością `rozm_buf` jest 32kB, a maksymalny rozmiar jaki może być podany to śmieszne 16384kB. `próg_zap` to wartość, przy osiągnięciu której zawartość bufora zapisywana jest na taśmę. Domyślną wartością jest 30kB. Maksymalna ilość buforów różni się w zależności od ilości wykrytych napędów i ma wartość domyślną = 2. Przykładem może być:

            st=32,30,2

Szczegóły można znaleźć w pliku `README.st`, który znajduje się w podkatalogu `scsi` źródeł jądra.

## 4.2 Argumenty kontrolerów SCSI.

Uwaga ogólna dla tej sekcji:

`IOBASE` - pierwszy port I/O, który jest używany przez kontroler SCSI. Wartość ta podawana jest szesnastkowo, i zwykle mieści się w przedziale od `0x200 do 0x3FF`.

`IRQ` - przerwanie sprzętowe, na które jest skonfigurowana karta. Odpowiednie wartości są zależne od konkretnej karty, ale zwykle są to 5, 7, 9, 10, 11, 12 i 15. Pozostałe wartości są zwykle używane przez popularne urządzenia takie jak dyski twarde IDE, napędy dyskietek, porty szeregowe itp.

`dma` - kanał DMA (Direct Memory Access), którego używa karta. W zasadzie odnosi się tylko do kart bus-mastering. Karty PCI i VLB mają domyślnie tryb bus-mastering i nie wymagają kanału ISA DMA.

`SCSI-ID` - identyfikator, którego używa dany kontroler do samoidentyfikacji na szynie SCSI. Tylko niektóre kontrolery pozwalają na zmianę tej wartości, ponieważ większość ma ją zapisaną wewnątrz siebie. Standardową wartością jest 7, ale urządzenia Seagate i Future Domain TMC-950 używają 6.

`PARITY` - czy dany kontroler spodziewa się od przyłączonych urządzeń kontroli parzystości przy wymianie wszystkich informacji. 1 oznacza włączenie sprawdzania parzystości, 0 je wyłącza. I znowu nie wszystkie kontrolery pozwalają na zmianę tej wartości.

### Kontrolery aha151x, aha152x, aic6260, aic6360, SB16-SCSI (`aha152x=')

Numery aha odnoszą się do kart a numery aic do właściwego procesora SCSI na kartach tego typu, włączając kartę SoundBlaster-16 SCSI.

Podczas przeszukiwania tej karty, jądro próbuje znaleźć zainstalowany BIOS, a jeśli go nie ma, jądro nie znajdzie twojej karty. Wtedy musisz użyć argumentu startowego w postaci:

             aha152x=IOBASE[,IRQ[,SCSI-ID[,powt[,parity]]]]

Zauważ, że jeśli sterownik został skompilowany z włączoną opcją debug, możliwa jest do podania także szósta wartość ustawiająca poziom śledzenia.

Wszystkie parametry zostały opisane powyżej, a parametr `powt` pozwala na odłączenie lub ponowne podłączenie urządzenia jeśli jego wartością nie jest 0. Przykładowe użycie może być takie:

            aha152x=0x340,11,7,1

Zauważ, że parametry muszą być podane w odpowiedniej kolejności; to znaczy, że jeśli chcesz podać wartość parzystości musisz podać najpierw IOBASE, IRQ, SCSI-ID, i POWT.

### Kontroler aha154x. ("aha1542=")

To są karty serii aha154x. Seria kart aha1542 ma w sobie wbudowany kontroler stacji dyskietek i82077, a aha1540 - nie ma. Są to karty typu busmaster i mają parametry do ustawienia swojej "uczciwości", która jest używana do dzielenia się szyną z innymi urządzeniami. Odpowiedni argument startowy wygląda następująco:

            aha1542=IOBASE[,buson,busoff[,dmaspeed]]

Możliwe wartości IOBASE to: `0x130, 0x134, 0x230, 0x234, 0x330, 0x334`. Klony oryginalnych kart mogą przyjmować inne wartości.

Wartości `buson i busoff` odnoszą się do liczby mikrosekund przez jaką karta przejmuje kontrolę nad szyną ISA. Wartościami domyślnymi są: buson - 11us, busoff - 4us, tak aby inne karty (jak np. ISA LANCE Ethernet) miały szansę się dostać do szyny ISA.

Wartość `dmaspeed` odnosi się do prędkości (w MB/s), z jaką działają transfery DMA (Direct Memory Access). Wartością domyślną jest 5 MB/s. Nowe typy kart pozwalają na ustawienie tej wartości programowo, starsze - poprzez zworki. Możesz podać wartość do 10 MB/s zakładając, że twoja płyta główna to wytrzyma. Eksperymentuj ostrożnie jeśli używasz wartości większych od 5 MB/s.

### Kontrolery aha274x, aha284x, aic7xxx ("aic7xxx=")

Kontrolery te przyjmują argument w postaci:

            aic7xxx=extended,no_reset

Wartość `extended`, jeśli jest różna od zera, określa czy tłumaczenie geometrii dużych dysków jest włączone czy nie. Argument `no_reset`, jeśli jest różny od zera, informuje sterownik, aby nie resetować szyny SCSI podczas ustawiania kontrolera.

### Kontroler SCSI AdvanSys. ("advansys=")

Sterownik AdvanSys przyjmuje do czterech adresów I/O, które będą przeszukiwane w celu znalezienia karty SCSI AdvanSys. Zauważ, że wartości te (jeśli są używane) nie wpływają w żaden sposób na wykrywanie EISA czy PCI. Mają znaczenie tylko w przypadku kart ISA i VLB. Dodatkowo, jeśli sterownik został skompilowany z włączoną opcją śledzenia, poziom śledzenia może być ustawiony poprzez dodanie parametru `0xdeb[0-F]`. Znaki `0-F` pozwalają na ustawienie poziomu śledzenia na jeden z 16 poziomów.

### Kontroler Always IN2000. ("in2000=")

W przeciwieństwie do innych adapterów SCSI, ten adapter używa przedrostków w postaci łańcuchów ASCII dla swoich wartości liczbowych. Oto lista jego parametrów:

IOPORT:ADDR - gdzie ADDR jest adresem I/O karty (zwykle bez ROM-u).

NORESET - Nie ma dodatkowych parametrów. Zapobiega zresetowaniu szyny SCSI podczas startu.

NOSYNC:X - X jest maską bitów, gdzie pierwsze siedem bitów odpowiada siedmiu możliwym sterownikom SCSI (bit 0 - urządzeniu #0, itd). Ustaw dany bit, aby zapobiec synchronicznym negocjacjom na tym urządzeniu. Standardowo synchroniczne negocjacje są wyłączone w sterowniku dla wszystkich urządzeń.

PERIOD:NS - NS jest minimalną ilością nanosekund w cyklu transferu danych SCSI. Domyślną wartością jest 500; inne akceptowane wartości to 250 i 1000.

DISCONNECT:X - X=0 - nie pozwalaj na odłączenia, X=1 - rób adaptacyjne odłączenia, X=2 - zawsze pozwalaj na odłączenia.

DEBUG:X - jeśli zdefiniowano symbol "DEBUGGING_ON" X jest maską bitów, która ustawia różne sposoby wydruku śledzenia - odnośnie konkretnych wartości zajrzyj do pliku `/linux/drivers/scsi/in2000.h`.

PROC:X - jeśli zdefiniowano symbol "PROC_INTERFACE", X jest maską bitów, która określa jak działa interfejs /proc i co robi - odnośnie konkretnych wartości zajrzyj do pliku `/linux/drivers/scsi/in2000.h`.

Oto niektóre przykładowe użycia tego argumentu:

            in2000=ioport:0x220,noreset
            in2000=period:250,disconnect:2,nosync:0x03
            in2000=debug:0x1e
            in2000=proc:3

### Sprzęt na podstawie AMD AM53C974. ("AM53C974=")

W przeciwieństwie do innych sterowników ten nie przyjmuje parametrów I/O, IRQ, czy DMA. (Ponieważ AM53C974 jest urządzeniem PCI, nie ma potrzeby tego robić) W zamian za to, podawane parametry używane są do ustawiania trybów i prędkości transferu, które mają być używane pomiędzy adapterem a urządzeniem docelowym. Najlepiej opisać to przykładem:

            AM53C974=7,2,8,15

Linijka ta zostałaby zinterpretowana następująco: Do komunikacji pomiędzy kontrolerem o numerze SCSI-ID 7 a urządzeniem o numerze SCSI-ID 2 mają być użyte: transfer - 8MHz w trybie synchronicznym z maksimum 15-bajtowym offsetem. Więcej szczegółów znajduje się w pliku `linux/drivers/scsi/README.AM53C974`.

### Kontrolery SCSI BusLogic z jądrem w wersji 1.2. ("buslogic=")

W starszych wersjach jądra, sterownik buslogic akceptuje tylko jeden parametr, który jest adresem I/O. Ma to być jedna z następujących wartości: `0x130, 0x134, 0x230, 0x234, 0x330, 0x334`.

### Kontroler SCSI BusLogic z jądrem w wersji 2.x. ("BusLogic=")

W wersjach jądra 2.x, sterownik BusLogic przyjmuje wiele parametrów. (!!! Uważaj na wielkość liter w argumencie !!!). Następujący opis jest wzięty bezpośrednio ze sterownika Leonarda N. Zubkoffa ze źródeł jądra 2.x.

Argumentem startowym dla tego sterownika jest jego nazwa "BusLogic=" (jeszcze raz przypominam o zachowaniu wielkości liter), po której następuje lista parametrów liczbowych oddzielonych przecinkami oraz ewentualnie lista parametrów łańcuchowych także oddzielonych przecinkami. Większa ilość argumentów "BusLogic=" może być użyta w systemach z większą ilością adapterów BusLogic.

Pierwsza liczba określa adres I/O, pod którym znajduje się kontroler. Jeśli nie jest podana, wartością domyślną jest 0, co oznacza aby resztę wartości odnieść do pierwszego znalezionego kontrolera BusLogic. Jeśli podane zostaną jakiekolwiek parametry adresowe I/O wtedy standardowe przeszukiwanie nie odbywa się.

Druga liczba określa głębokość kolejki (Tagged Queue), która ma być użyta dla urządzenia docelowego, które obsługuje kolejkowanie. Głębokość kolejki jest ilością poleceń SCSI jaka jest możliwa do umieszczenia w kolejce poleceń do wykonania. Jeśli parametr ten nie jest podany, wartością domyślną jest 0, co oznacza użycie wartości wykrytej automatycznie opartej na całkowitej głębokości kolejki adaptera i numerze, typie, prędkości oraz możliwościach wykrytego urządzenia docelowego. Dla kontrolerów wymagających buforów bounce ISA, głębokość kolejki jest automatycznie ustawiana na BusLogic_TaggedQueueDepth_B, aby uniknąć nadmiernej prealokacji pamięci na bufory bounce DMA. Urządzenia docelowe, które nie obsługują kolejkowania, używają głębokości kolejki BusLogic_UntaggedQueueDepth.

Trzecia liczba określa czas stabilizacji szyny w sekundach. Jest to ilość czasu do odczekania pomiędzy twardym resetem kontrolera, który inicjuje reset szyny SCSI a wykonaniem polecenia SCSI. Jeśli nie jest ona podana, wartością domyślną jest 0, co oznacza użycie BusLogic_DefaultBusSettleTime.

Czwarta liczba określa opcje lokalne. Jeśli nie jest ona podana, wartością domyślną jest 0. Zauważ, że opcje lokalne odnoszą się tylko do specyficznych kontrolerów.

Piąta liczba określa opcje globalne. Jeśli nie jest ona podana, wartością domyślna jest 0. Zauważ, że opcje globalne odnoszą się do wszystkich kontrolerów.

Parametry łańcuchowe podaje się w celu kontrolowania kolejkowania, naprawy błędów i wyszukiwania kontrolera.

Parametr odnośnie kolejkowania zaczyna się od "TQ:" i pozwala na wyraźne podanie czy kolejkowanie jest dopuszczone na urządzeniu docelowym, które je obsługuje. Następujące opcje tego parametru są dozwolone:

TQ:Default - kolejkowanie będzie dopuszczone i oparte na firmowej wersji kontrolera BusLogic i na tym czy wartość głębokości kolejki pozwala na kolejkowanie poleceń.

TQ:Enable - kolejkowanie będzie dozwolone dla wszystkich urządzeń docelowych na danym kontrolerze zamazując wszelkie limity, które wynikałyby z ustawień firmowych.

TQ:Disable - kolejkowanie będzie niedozwolone dla wszystkich urządzeń docelowych na danym adapterze.

TQ:<Per-Target-Spec> - kolejkowanie będzie kontrolowane indywidualnie dla każdego urządzenia docelowego. <Per-Target-Spec> - ciąg znaków "N" i "X". "Y" zezwala na kolejkowanie, "N" nie pozwala na nie, a "X" używa wartości domyślnej opartej na wersji firmowej. Pierwszy znak odnosi się do urządzenia 0, drugi - do urządzenia 1 itd. Jeśli ciąg znaków "Y", "N" i "X" nie pokrywa wszystkich urządzeń docelowych, dla urządzeń nie pokrytych używany jest znak "X" czyli wartość domyślna.

Zauważ, że wyraźne żądanie kolejkowania może prowadzić do problemów; możliwość ta została wprowadzona, aby wyłączać kolejkowanie dla urządzeń docelowych, które nie obsługują go poprawnie.

Parametr odnośnie naprawy błędów zaczyna się od "ER:" i pozwala na wyraźne zezwolenie uruchamiania sekwencji naprawy błędów kiedy wywołane zostanie polecenie ResetCommand z powodu niepowodzenia wykonania jakiegoś polecenia SCSI. Dostępne są następujące opcje dla tego parametru:

ER:Default - sekwencja naprawy błędów wybierze pomiędzy twardym resetem a resetem szyny w zależności od zaleceń podsystemu SCSI.

ER:HardReset - sekwencja naprawy błędów zainicjuje twardy reset adaptera, który także spowoduje reset szyny SCSI.

ER:BusDeviceReset - sekwencja naprawy błędów wyśle do urządzenia docelowego powodującego błąd polecenie resetujące szynę. Jeśli sekwencja naprawy błędów jest ponownie inicjowana dla tego urządzenia docelowego i żadne polecenie SCSI do tego urządzenia nie wykonało się poprawnie od momentu wysłania polecenia resetującego, wtedy zostanie zainicjowany twardy reset.

ER:None - sekwencja naprawy błędów zostanie zatrzymana. Opcja ta powinna być podana tylko jeśli reset szyny SCSI i reset szyny powodują całkowite i nieodwracalne zawieszenie urządzenia docelowego.

ER:<Per-Target-Spec> - sekwencja naprawy błędów będzie kontrolowana indywidualnie dla każdego urządzenia docelowego. <Per-Target-Spec> jest ciągiem znaków "H", "B" i "N". "D" powoduje zachowanie domyślne, "H" - twardy reset, "B" - reset szyny, "N" - zatrzymanie sekwencji naprawy błędów. Pierwszy znak odnosi się do urządzenia 1, drugi - do drugiego, itd. Jeśli ciąg znaków nie pokrywa wszystkich urządzeń docelowych, wtedy dla urządzeń nie pokrytych przyjmuje się "D" czyli zachowanie domyślne.

Parametry odnośnie przeszukiwania adaptera są następujące:

NoProbe - nie przeprowadzać żadnego przeszukiwania - żadne kontrolery BusLogic nie zostaną znalezione.

NoProbeISA - nie przeprowadzać standardowego przeszukiwania adresów I/O ISA - wykryte zostaną tylko kontrolery PCI.

NoSortPCI - kontrolery PCI zostaną ponumerowane wg. porządku ustalonego przez PCI BIOS, ignorując jakiekolwiek ustawienia opcji AutoSCSI "Use Bus and Device # For PCI Scanning Seq.".

### Karty EATA SCSI. ("eata=")

Od późnych wersji 2.0 jądra, sterownik EATA przyjmuje argument startowy, który specyfikuje adres bazowy I/O, który ma być przeszukiwany. Forma tego argumentu to:

            eata=iobase1[,iobase2][,iobase3]...[,iobaseN]

Sterownik będzie przeszukiwał adresy w takiej kolejności w jakiej zostały podane.

### Future Domain TMC-8xx, TMC-950. ("tmc8xx=")

Algorytm wyszukujący dla tych urządzeń SCSI szuka zainstalowanego BIOS-u, a jeśli taki nie jest zainstalowany, karta nie zostanie znaleziona. Albo jeśli sygnatura twojego BIOS-u nie zostanie rozpoznana wtedy karta także nie zostanie znaleziona. W tych przypadkach będziesz musiał użyć argumentu startowego w formie:

            tmc8xx=mem_base,irq

Wartość `mem_base` określa ilość pamięci przeznaczonej na odwzorowanie obszaru I/O używanego przez daną kartę. Zwykle jest to jedna z poniższych wartości:
`0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000`.n

### Future Domain TMC-16xx, TMC-3260, AHA-2920. ("fdomain=")

Sterownik wykrywa te karty na podstawie znanych sygnatur ROM BIOS-ów. Pełną listę znanych BIOS-ów znajdziesz w pliku `linux/drivers/scsi/fdomain.c`, jak i wiele innych informacji. Jeśli twój BIOS nie jest znany, to możesz podać parametry bezpośrednio w formie:

            fdomain=iobase,irq[,scsi_id]

### Port równoległy IOMEGA / sterownik ZIP. ("ppa=")

Ten argument przeznaczony jest dla kontrolera SCSI portu równoległego SCSI, który jest wbudowany w sterownik IOMEGA ZIP. Może także działać z oryginalnym urządzeniem IOMEGA PPA3. Argument startowy dla tego sterownika ma formę:

            ppa=iobase,speed_high,speed_low,nybble

Wszystkie wartości oprócz IOBASE są opcjonalne. Jeśli chcesz zmieniać którąś z tych trzech opcjonalnych wartości lepiej przeczytaj plik `linux/drivers/scsi/README.ppa`.

### Kontrolery oparte na NCR5380. ("ncr5380=")

W zależności od twojej karty, 5380 może odwzorowywać albo porty I/O albo pamięć. (Adres poniżej 0x400 zwykle oznacza odwzorowywanie adresów I/O, ale PCI i EISA używają adresów I/O powyżej 0x3FF.) W każdym z przypadków podajesz adres, numer IRQ i numer kanału DMA. Przykładem dla karty z odwzorowywaniem portów I/O może być:

          ncr5380=0x350,5,3

Jeśli karta nie używa IRQ, wtedy podajemy 255 (0xFF) jako numer IRQ. Wartość 254 (0xFE) oznacza automatyczne wykrycie numeru przerwania. Więcej szczegółów znajdziesz w pliku `linux/drivers/scsi/README.g_NCR5380`.

### Kontrolery oparte na NCR53c400. ("ncr53c400=")

Kontroler ten jest obsługiwany przez ten sam sterownik co opisany wyżej 5380. Argument startowy przyjmuje identyczne wartości za wyjątkiem DMA, którego 53c400 nie używa.

### Kontrolery oparte na NCR53c406a. ("ncr53c406a=")

Argument startowy tego sterownika ma formę:

            ncr53c406a=PORTBASE,IRQ,FASTPIO

gdzie IRQ i FASTPIO są parametrami opcjonalnymi. Wartość przerwania = 0, wyłącza użycie przerwania. Wartość FASTPIO = 1 włącza użycie instrukcji `insl i outsl` zamiast instrukcji jedno-bajtowych `inb i outb`. Sterownik może także przyjmować DMA jako opcję podczas kompilacji.

### Pro Audio Spectrum. ("pas=16")

PAS16 używa układu SCSI NCR5380, a nowsze modele obsługują konfigurację bezzworkową. Argument startowy ma postać:

            pas16=iobase,irq

Jedyną różnicą jest to, że możesz podać numer przerwania 255 (0xFF), które poinformuje sterownik, żeby pracował bez używania przerwania, aczkolwiek przy utracie jakości. IOBASE ma zwykle wartość 0x388.

### Seagate ST-0x ("st0x=")

Algorytm wyszukiwania dla tych kontrolerów szuka zainstalowanego BIOS-u, a jeśli takiego nie znajdzie, lub jeśli sygnatura w BIOS-ie nie zostanie rozpoznana, karta nie zostanie zidentyfikowana. W takich przypadkach musisz użyć argumentu startowego w formie:

            st0x=mem_base,irq

Wartość `mem_base` określa obszar adresów I/O odwzorowywany, którego używa karta. Jest to zwykle jedna z poniższych wartości: `0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000`.

### Trantor T128. ("t128=")

Te karty są także oparte na układzie NCR5280 i akceptują następujące parametry:

            t128=mem_base,irq

Wartości dla `mem_base` to z reguły:
`0xcc000, 0xc8000, 0xdc000, 0xd8000`.

### Karta Ultrastor SCSI. ("u14-34f=")

Zauważ, że zdaje się, że są dwa niezależne sterowniki dla tej karty, tj. `CONFIG_SCSI_U14_34F`, który używa `u14-34f.c` i `CONFIG_SCSI_ULTRASTOR`, który używa `ultrastor.c`. u14-34f jest tym (w późnych jądrach 2.0), który przyjmuje argument startowy w formie:

            u14-34f=iobase1[,iobase2][,iobase3]...[,iobaseN]

Sterownik będzie przeszukiwał adresy w podanej kolejności.

### Karty Western Digital WD7000. ("wd7000=")

Sterownik dla wd7000 szuka znanego łańcucha BIOS ROM i zna kilka standardowych ustawień konfiguracji. Jeśli ustawienia te nie są poprawne albo masz nierozpoznaną wersję BIOS-u, możesz użyć argumentu startowego w formie:

            wd7000=irq,dma,iobase

## 4.3 Kontrolery SCSI nie przyjmujące parametrów.

Obecnie następujące karty nie przyjmują żadnych argumentów startowych. W niektórych wypadkach możesz na siłę zmienić wartości, edytując kod źródłowy sterownika, jeśli już musisz.

            Adaptec aha1740 (próbkowanie EISA),
            NCR53c7xx,8xx (PCI, oba sterowniki),
            Qlogic Fast (0x230, 0x330),
            Qlogic ISP (PCI)

## 5. Dyski twarde.

Ta sekcja wymienia wszystkie argumenty startowe związane ze standardowymi dyskami twardymi takimi jak: MFM/RLL, ST-506, XT i IDE. Zauważ, że oba sterowniki IDE jak i ST-506 akceptują ten sam argument: "hd=".

## 5.1 Parametry dla dysków i CD-ROM-ów IDE.

Sterownik IDE akceptuje wiele parametrów, od określenia geometrii dysku do obsługi zaawansowanych, czy źle wykonanych układów kontrolerów. Poniżej wymienione są wszystkie możliwe argumenty startowe. Aby dowiedzieć się więcej na temat szczegółowego opisu naprawdę powinienieś zajrzeć do pliku `linux/Documentation/ide.txt`, z którego to streszczenie zostało wyciągnięte.

          "hdx=" - jest rozpoznawalny przez wszystkie "x" od "a" do "h",
          jak np. "hdc".

          "idex=" - jest rozpoznawalny przez wszystkie "x" od "0" do "3",
          jak np. "ide1".

          "hdx=noprobe" - napęd może być, ale go nie szukaj,
          "hdx=none" - napędu nie ma, zignoruj CMOS i nie szukaj go,
          "hdx=nowerr" - zignoruj bit WRERR_STAT w tym napędzie,
          "hdx=cdrom" - napęd jest obecny i jest CD-ROM-em,
          "hdx=cyl,head,sect" - napęd jest obecny z podaną geometrią,
          "hdx=autotune" - sterownik będzie próbował ustawić prędkość
            interfejsu na najszybsze obsługiwane PIO jeśli jest to możliwe
            tylko dla tego napędu. Nie jest to obsługiwane przez wszystkie
            układy, i całkiem prawdopodobne, że będzie sprawiało kłopoty
            przy starszych/dziwnych napędach IDE.

          "idex=noprobe" - nie próbuj używać tego interfejsu,
          "idex=base" - szukaj interfejsu w podanym adresie, gdzie base
            to przeważnie 0x1F0 lub 0x170 a "ctl" to "base"+0x206,
          "idex=base,ctl" - określenie base i ctl,
          "idex=base,ctl,irq - określenie base, ctl i irq,
          "idex=autotune" - sterownik będzie próbował ustawić prędkość
            interfejsu na najszybsze obsługiwane PIO, dla wszystkich
            napędów na tym interfejsie. Nie jest to obsługiwane przez wszystkie
            układy, i całkiem prawdopodobne, że będzie sprawiało kłopoty
            przy starszych/dziwnych napędach IDE,
          "idex=noautotune" - sterownik nie będzie próbował ustawić
            prędkości interfejsu. Jest to zachowanie standardowe
            większości układów oprócz cmd640.
          "idex=serialize" - nie nakładaj operacji na idex i ide(x^1).

Następujące parametry są ważne TYLKO dla ide0, a wartości domyślnych dla portów base i ctl nie wolno zmieniać.

            "ide0=dtc2278"          : szukaj/obsługuj interfejs DTC2278,
            "ide0=ht6560b"          : szukaj/obsługuj interfejs HT6560B,
            "ide0=cmd640_vlb"       : *WYMAGANE* dla kart VLB z układem CMD640,
                              (nie dla PCI - wykrywane automatycznie)
            "ide0=qd6580"           : szukaj/obsługuj interfejs qd6580,
            "ide0=ali14xx"          : szukaj/obsługuj układy ali14xx (ALI M1439/M1445),
            "ide0=umc8672"          : szukaj/obsługuj układy umc8672,

Wszystko inne jest odrzucane z informacją "BAD OPTION" (czyli "zła opcja").

## 5.2 Parametry standardowego sterownika ST-506. ("hd=")

Standardowy sterownik dysku może zaakceptować parametry dotyczące geometrii dysków podobnych do sterownika IDE. Aczkolwiek zauważ, że spodziewa się on tylko trzech wartości (C/H/S) - jedna mniej lub więcej i po cichutku cię zignoruje. Akceptuje on tylko argument "hd=", tak, że "hda=", "hdb=" itd. nie są brane pod uwagę. Format tego argumentu to:

            hd=cyls,heads,sects

gdzie cyls to ilość cylindrów, heads - głowic; sects - sektorów. Jeśli są zainstalowane dwa dyski, należy powyższe powtórzyć z geometrią dysku drugiego.

## 5.3 Parametry sterownika dysku XT. ("xd=")

Jeśli jesteś na tak nieszczęśliwym miejscu i używasz jednej z tych starych kart, które przenoszą dane z zabójczą prędkością dochodzącą w porywach do 125kB/s WYRZUĆ JĄ NATYCHMIAT I KUP NOWĄ !!! A poważnie. Algorytm wyszukiwania dla tych kart szuka zainstalowanego BIOS-u, a jeśli takiego nie znajdzie, lub jeśli sygnatura w BIOS-ie nie zostanie rozpoznana, karta nie zostanie zidentyfikowana. W takich przypadkach musisz użyć argumentu startowego w formie:

            xd=type,irq,iobase,dma_chan

Wartość `type` określa konkretnego wykonawcę karty, i jest jedną z: 0=generic; 1=DTC; 2,3,4=Western Digital, 5,6,7=Seagate; 8=OMTI. Jedyną różnicą pomiędzy różnymi typami tego samego wykonawcy jest łańcuch w BIOS-ie używany do autodetekcji, który nie jest używany jeśli jest podany typ.

Funkcja `xd_setup()` nie sprawdza wartości, i przyjmuje, że wpisałeś wszystkie cztery. Nie załamuj się. Tutaj jest przykład dla kontrolera WD1002 z wyłączonym/usuniętym BIOS-em, używającym domyślnych parametrów kontrolera XT:

            xd=2,5,0x320,3

## 6. CD-ROM-y (Napędy inne niż SCSI/ATAPI/IDE).

Ta sekcja wymienia wszystkie możliwe argumenty startowe odnoszące się do CD-ROM-ów. Zauważ, że nie zawierają się tutaj CD-ROM-y typu SCSI czy IDE/ATAPI. Przeczytaj odpowiednią sekcję dla tych CD-ROM-ów.

Zauważ też, że większość z tych CD-ROM-ów ma pliki z dokumentacją, które powinieneś przeczytać. Wszystkie są w katalogu `linux/Documentation/cdrom`.

## 6.1 Interfejs Aztech. ("aztcd=")

Składnia argumentu dla tej karty to:

            aztcd=iobase[,magic_number]

Jeśli ustawisz parametr `magic_number` na 0x79 sterownik będzie próbował się uruchomić i uruchomi się w przypadku nieznanego typu urządzenia firmowego. Wszystkie inne wartości są ignorowane.

## 6.2 Interfejs Sony CDU-31A i CDU-33A. ("cdu31a=")

Ten interfejs CD-ROM-u znajduje się na niektórych kartach dźwiękowych Pro Audio Spectrum i innych kartach obsługujących interfejs Sony. Składnia tego argumentu to:

            cdu31a=iobase,[irq[,is_pas_card]]

Podając wartość IRQ = 0 informujesz sterownik, że przerwania sprzętowe nie są obsługiwane (jak na niektórych kartach PAS). Jeśli twoja karta obsługuje przerwania, powinieneś ich użyć ponieważ zmniejszają użycie procesora na karcie.

Jeśli używasz karty Pro Audio Spectrum podaj parametr "is_pas_card" jako PAS, a jeśli nie to nie powinieneś go wcale podawać.

## 6.3 Interfejs Sony CDU-535. ("sonycd535=")

Składnia argumentu dla tego interfejsu to:

            sonycd535=iobase[,irq]

Zero może być użyte dla wartości iobase jako "znak zajmujący miejsce" (bez żadnego znaczenia dla sterownika) jeśli ktoś chce podać wartość IRQ.

## 6.4 Interfejs GoldStar. ("gscd=")

Składnia argumentu dla tego interfejsu to:

            gscd=iobase

gdzie iobase jest adresem I/O.

## 6.5 Interfejs ISP16. ("isp16=")

Składnia argumentu dla tego interfejsu to:

            isp16=[port[,irq[,dma]]][[,]drive_type]

Podając 0 dla `IRQ lub DMA` informujesz sterownik, że nie będą one używane. Wartość parametru `drive_type` to jedna z: `noisp16, Sanyo, Panasonic, Sony i Mitsumi`. Podanie wartości `noisp16` wyłączy sterownik zupełnie.

## 6.6 Interfejs Mitsumi Standard. ("mcd=")

Składnia argumentu dla tego interfejsu to:

            mcd=iobase,[irq[,wait_value]]

Wartość `wait_value` jest używana jako wewnętrzna wartość timeout dla tych, którzy mają problemy ze swoimi napędami i może, ale nie musi być zaimplementowana. Zależy to od definicji odpowiedniego symbolu podczas kompilacji.

## 6.7 Interface Mitsumi XA/MultiSession. ("mcdx=")

Obecnie ten "eksperymentalny" sterownik ma funkcję ustawiającą, ale nie przyjmuje ona jeszcze żadnych parametrów (1.3.15). (Od tłumacza: W wersji jądra 2.0.18 także nie przyjmuje.) Odnosi się on do tego samego sprzętu co powyżej tyle, że ma trochę rozszerzone możliwości.

## 6.8 Optics Storage Interface. ("optcd=")

Składnia argumentu dla tej karty to:

            optcd=iobase

## 6.9 Interfejs Philips CM206. ("cm206=")

Składnia argumentu dla tej karty to:

            cm206=[iobase][,irq]

Sterownik zakłada, że liczby między 3 a 11 to numery przerwań IRQ, a liczby pomiędzy 0x300 a 0x370 to porty I/O, tak więc możesz podać jeden lub oba argumenty w jakimkolwiek porządku. Można także podać `cm206=auto`, aby sterownik sam znalazł kartę.

## 6.10 Interfejs Sanyo. ("sjcd=")

Składania argumentu dla tej karty to:

            sjcd=iobase[,irq[,dma_channel]]

## 6.11 Interfejs SoundBlaster Pro. ("sbpcd=")

Składnia argumentu dla tej karty to:

            sbpcd=iobase,type

gdzie `type` jest jednym z łańcuchów: SounBlaster, LaserMate lub SPEA. (Wielkość liter jest ważna !!!). I/O base jest adresem I/O interfejsu CD-ROM-u, a nie interfejsu dźwiękowego.

## 7. Inne urządzenia.

Wszelkie urządzenia, które nie zaliczają się do wyżej wymienionych zostały wrzucone tutaj.

## 7.1 Urządzenia Ethernet. ("ether=")

Różne sterowniki przyjmują różne parametry, ale wszystkie przyjmują przynajmniej nazwę, IRQ oraz adres I/O. W najbardziej ogólnej postaci wyglądą to mniej więcej tak:

            ether=irq,iobase[,param_1[,param_2,...param_8]]],name

Pierwszy argument, który nie jest liczbą uznawany jest za nazwę. Wartości `param_n` zwykle mają różne znaczenie dla każdej karty czy sterownika. Typowe wartości to adres pamięci dzielonej, określenie interfejsu, kanały DMA itp.

Najpopularniejszym użyciem tego parametru jest wymuszenie szukania drugiej karty Ethernet ponieważ domyślnie szuka się tylko jednej. Tak wyglądałby przykład:

            ether=0,0,eth1

Zauważ, że wartości 0 przy IRQ i adresie I/O w powyższym przykładzie informują sterownik, aby sam ich poszukał.

WAŻNA UWAGA DLA UŻYTKOWNIKÓW MODUŁÓW: Powyższe nie wymusi poszukiwania drugiej karty jeśli używasz sterownik-a/ów jako moduł (zamiast wkompilować je w jądro). Większość dystrybucji Linux-owych jest zbudowana na bazie małego statycznego jądra i dużej ilości ładowalnych modułów. Parametr `ether=` odnosi się tylko do sterowników wkompilowanych w jądro.

Zauważ też, że Ethernet-HowTo ma pełną dokumentację na temat używania większej ilości kart i na temat parametrów dla konkretnych kart. Zainteresowani powinni zajrzeć do tamtego dokumentu, aby dowiedzieć się szczegółów na temat swojej karty.

## 7.2 Sterownik do dyskietek. ("floppy=")

Jest wiele parametrów do tego sterownika i wszystkie są wymienione w pliku `/linux/drivers/block/README.fd`. Następująca informacja została zaczerpnięta bezpośrednio stamtąd.

          floppy=mask,allowed_drive_mask

Ustawia maskę bitów dopuszczonych napędów na `mask`. Domyślnie są to kanały 0 i 1 każdego kontrolera. Jest tak, ponieważ pewne niestandardowe urządzenia (płyty główne ASUS PCI) zmieniają układ znaków na klawiaturze kiedy próbują dostać się do kanału 2 czy 3. Ten parametr jest trochę przestarzały z powodu opcji CMOS-u.

          floppy=all_drives

Ustawia maskę bitów dopuszczonych napędów na wszystkie napędy. Użyj tego jeśli masz więcej niż dwa napędy podłączone do kontrolera dyskietek.

          floppy=asus_pci

Ustawia maskę bitów, aby dopuścić tylko kanały 0 i 1. (Wartość domyślna)

          floppy=daring

Informuje sterownik, że masz "dobrze zachowujący się" kontroler do dyskietek. Pozwala to na bardziej wydajną i płynniejszą pracę, ale może się nie udać przy niektórych kontrolerach. Może to przyspieszyć pewne operacje.

          floppy=0,daring

Informuje sterownik, aby używać kontrolera ostrożnie.

          floppy=one_fdc

Informuje sterownik, że masz tylko jeden kontroler. (wartość domyślna)

          floppy=two_fdc lub floppy=address,two_fdc

Informuje sterownik, że masz dwa kontrolery do dyskietek. Drugi sterownik znajduje się pod adresem `address`. Jeśli adres ten nie jest podany - przyjmuje się wartość domyślną, tj. 0x370.

          floppy=thinkpad

Informuje sterownik, że masz kontroler Thinkpad, który używa odwrotnego oznaczenia linii zmiany dyskietek.

          floppy=0,thinkpad

Informuje sterownik, że nie masz kontrolera Thinkpad.

          floppy=drive,type,cmos

Ustawia typ CMOS-u napędu `drive` na `type`. Dodatkowo, napęd ten jest dopuszczony w masce bitów. Jest to przydatne jeśli masz więcej niż dwa napędy (w fizycznym cmos-ie można opisać tylko dwa), lub jeśli twój BIOS używa niestandardowych typów CMOS-u. Ustawienie CMOS-u na 0 dla pierwszych dwóch napędów (domyślnie) zmusza sterownik do czytania fizycznego CMOS-u dla tych napędów.

          floppy=unexpected_interrupts

Wyświetl informację ostrzegającą jeśli odebrano niespodziewane przerwanie. (zachowanie domyślne)

          floppy=no_unexpected_interrupts lub floppy=L40SX

Nie wyświetlaj informacji ostrzegającej kiedy odebrano niespodziewane przerwanie. Jest to potrzebne na niektórych laptopach IBM L40SX w pewnych trybach wyświetlania. (Wygląda na to, że jest jakaś interakcja pomiędzy grafiką a dyskietkami. Niespodziewane przerwania dotyczą wydajności i mogą być spokojnie ignorowane.)

## 7.3 Sterownik do dźwięku. ("sound=")

Sterownik dźwięku może także przyjmować parametry, które zmieniają wartości zapisane podczas kompilacji. Nie jest to zalecane ponieważ jest to operacja skomplikowana. Jest (Była?) ona opisana w pliku `linux/drivers/sound/Readme.Linux`. Forma argumentu startowego dla sterownika dźwięku to:

            sound=urz1[,urz2[,urz3...[,urz11]]]

gdzie każda wartość `urzN` ma postać `0xTaaaID`. Symbole oznaczają w tym formacie:

T - typ urządzenia: 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16, 7=SB16-MPU401,

aaa - adres I/O szesnastkowo,

I - numer IRQ szesnastkowo (tj, 10=a, 11=b, ...),

D - kanał DMA.

Jak widzisz jest tu trochę bałaganu. Także lepiej wkompiluj swoje własne wartości w sterowniku. Podanie `sound=0` spowoduje wyłączenie sterownika dźwięku zupełnie.

## 7.4 Sterownik do myszy Bus. ("bmouse=")

Ten sterownik przyjmuje tylko jeden parametr: jest to wartość IRQ.

## 7.5 Sterownik do myszy MS Bus. ("msmouse=")

Ten sterownik przyjmuje tylko jeden parametr: jest to wartość IRQ.

## 7.6 Sterownik do drukarki, ("lp=")

Co do jąder w wersji większej niż 1.3.75, możesz przekazać sterownikowi jakich portów używać a jakich nie używać. To drugie jest przydatne jeśli nie chcesz, żeby sterownik zajął wszystkie dostępne porty, aby inne sterowniki (np.: PLIP, PPA) mogły ich używać.

Forma tego argumentu to pary `adres_I/O,IRQ`. Na przykład takie wywołanie `lp=0x3BC,0,0x378,7` spowoduje użycie portu o adresie 0x3BC w trybie bezprzerwaniowym, i przerwania 7 dla portu o adresie 0x378. Port o adresie 0x278 (jeśli taki by był) nie byłby przeszukiwany, ponieważ automatyczne przeszukiwanie ma miejsce tylko jeśli nie podano argumentu "lp". Aby wyłączyć sterownik od drukarki należy podać `lp=0`.

## 7.7 Sterownik do ICN ISDN. ("icn=")

Argument startowy dla tego sterownika to:

            icn=iobase,membase,icn_id1,icn_id2

gdzie `iobase` jest adresem portu I/O karty, `membase` jest adresem pamięci dzielonej karty, a dwa ostatnie parametry są unikalnymi łańcuchami identyfikującymi.

## 7.8 Sterownik do PCBIT ISDN. ("pcbit=")

Argument ten przyjmuje pary liczb w postaci:

            pcbit=membase1,irq1[,membase2,irq2]

gdzie `membaseN` jest adresem pamięci dzielonej N-tej karty, a `irqN` jest numerem przerwania N-tej karty. Wartościami domyślnymi są: IRQ = 5, membase = 0xD0000.

## 7.9 Sterownik do Teles ISDN. ("teles=")

Argument dla tego sterownika ma postać:

            teles=iobase,irq,membase,protocol,teles_id

gdzie `iobase` jest adresem portu I/O karty, `membase` jest adresem pamięci dzielonej karty, `irq` jest kanałem przerwania używanym przez kartę, a `teles_id` jest unikalnym łańcuchem identyfikującym.

## 7.10 Sterownik do DigiBoard. ("digi")

Sterownik ten przyjmuje łańcuch sześciu oddzielonych przecinkiem identyfikatorów lub liczb. Te sześć wartości to odpowiednio:

            Włącz/wyłącz kartę. (E/D)
            Typ karty: PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3)
            Włącz/wyłącz dodatkowe ustawienie zworkami. (E/D)
            Ilość portów na tej karcie.
            Adresy portów I/O tej karty (szesnastkowo jeśli używasz
                                         identyfikatorów łańcuchowych)
            Podstawa okna pamięci (szesnastkowo jeśli używasz
                                   identyfikatorów łańcuchowych).

Oto poprawny przykład użycia tego argumentu (w obu formach: z łańcuchami i liczbami):

            digi=E,PC/Xi,D,16,200,D0000
            digi=1,0,0,16,512,851968

Wartościami domyślnymi są: adres I/O - 0x200, adres pamięci dzielonej - 0xD0000. W przypadku tego sterownika nie jest dokonywane automatyczne wyszukiwanie urządzenia. Więcej szczegółów znajdziesz w pliku `linux/Documentation/digiboard.txt`.

## 7.11 Sterownik wieloportowej karty szeregowej RISCom/8. ("riscom8=")

Jądro może obsłużyć do czterech kart podając cztery unikalne wartości dla portów I/O dla każdej indywidualnej karty. Dalsze szczegóły znajdziesz w pliku `linux/Documentation/riscom8.txt`.

## 7.12 Baycom Serial/Paralell Radio Modem. ("baycom=")

Argument dla tego sterownika ma postać:

            baycom=modem,io,irq,opcje[,modem,io,irq,opcje]

Podając modem=1 informujesz, że masz urządzenie ser12, modem=2 - urządzenie par96. Opcje=0 oznacza sprzęt DCD, opcje=1 - oprogramowanie DCD. `I/O i IRQ` są jak zwykle: adresem portów I/O i numerem IRQ. Więcej szczegółów na temat tego sterownika znajdziesz w pliku `/linux/drivers/char/README.baycom`.

## 8. Zakończenie.

Jeśli znalazłeś jakieś przestarzałe informacje, to napisz do autora tego dokumentu:

gpg109@rsphy1.anu.edu.au

## 9. Od tłumacza.

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

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/pub/Linux/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 się na nią zapisać, to wyślij list o treści `subscribe jtz Imię Nazwisko` na adres `majordomo@ippt.gov.pl`

Zmiany wprowadzone przez tłumacza w tym dokumencie to odnośniki do polskich serwerów ftp i WWW.