Inhalt

6. Bootparameter für SCSI-Peripheriegeräte

Dieser Abschnitt enthält eine Beschreibung der Bootparameter, die zur Weitergabe von Informationen über die installierten SCSI-Host-Adapter und SCSI-Geräte verwendet werden.

6.1 Parameter für Mid-Level-Treiber

Das SCSI-System von Linux gliedert sich in zwei Teile. Für jeden SCSI-Adapter gibt es einen speziellen Low-Level-Treiber, der dessen Funktionalität über eine definierte Schnittstelle den Mid-Level-Treibern zugänglich macht. Für jeden SCSI-Gerätetyp wie z.B. Festplatten, CD-ROMs oder Streamer gibt es einen speziellen Mid-Level-Treiber.

Maximale Anzahl überprüfter LUNs (»max_scsi_luns=«)

Jedes SCSI-Gerät kann eine Reihe von »Sub-Geräten« enthalten. Das beste Beispiel dafür sind die CD-ROM-Wechsler. Jede CD in diesem Wechsler wird als »Logical Unit Number« (LUN) dieses bestimmten Gerätes angesprochen. Die meisten Geräte jedoch, wie z.B. Festplatten, Bandlaufwerke u.ä. bestehen nur aus einer Geräteeinheit und erhalten LUN Null.

Ein Problem ergibt sich bei einigen Geräten mit einer einzigen LUN. Diese Geräte, alte, aber leider auch neue, besitzen eine schlechte Firmware, die mit der Überprüfung für LUNs ungleich null nicht umgehen kann. Als Reaktion auf die Überprüfung hängen sich die Geräte auf und blockieren im schlimmsten Fall sogar den gesamten SCSI-Bus, so daß auch andere Geräte nicht mehr angesprochen werden können.

Neuere Kernel verfügen über eine Konfigurations-Option, die es ermöglicht, die maximale Anzahl von geprüften LUNs festzulegen. Standardmäßig untersucht man nur LUN Null, um das oben erwähnte Problem zu vermeiden.

Zur Bestimmung der Anzahl von geprüften LUNs beim Booten gibt man max_scsi_luns=n als Bootparameter ein, wobei n eine Zahl zwischen 1 und 8 ist. Um oben genannte Probleme zu vermeiden, würde man n=1 verwenden, um solche defekten Geräte nicht zu verwirren.

SCSI Logging (»scsi_logging=«)

Durch Übergabe eines von Null verschiedenen Wertes an diesen Parameter wird das Logging von allen SCSI-Ereignissen (error, scan, mlqueue, mlcomplete, llqueue, llcomplete, hlqueue und hlcomplete) eingeschaltet. Hierbei sollte man beachten, daß über das /proc/scsi/scsi Interface besser kontrollieren werden kann, welche Ereignisse protokolliert werden sollen. Diese zweite Lösung kann allerdings nur Ereignisse protokollieren, die nach dem Mounten des /proc Dateisystems auftreten.

Parameter für den SCSI-Tape-Treiber (»st=«)

Ein Teil der Boot-Konfiguration des Treibers für SCSI-Bandlaufwerke kann mit folgendem Kommando erfolgen:

st=buf_größe[,schreib_grenzwert[,max_bufs]]

Die ersten zwei Zahlen werden in kB-Einheiten angegeben. Der Standardwert für buf_größe ist 32 kB und die maximal zu bestimmende Größe sind lächerliche 16384 kB. schreib_grenzwert ist der Grenzwert, bei dem der Puffer an das Laufwerk weitergegeben wird. Standardwert hierbei sind 30 kB. Die maximale Anzahl von Puffern ändert sich je nach der Zahl der erkannten Laufwerke. Standardwert ist 2. Hier eine Beispielverwendung:

st=32,30,2

Umfassende Details findet man in der Datei README.st im Verzeichnis scsi des Kernel-Quell-Baums.

6.2 Parameter für SCSI-Host-Adapter

Allgemeine Anmerkungen zu diesem Abschnitt:

iobase

Der erste I/O Port, der vom SCSI-Host belegt wird. Er wird in der Hexadezimalschreibweise angegeben und liegt für gewöhnlich zwischen 0x200 und 0x3ff.

irq

Der Hardware-Interrupt, den die Karte per Konfiguration verwendet. Die gültigen Werte sind abhängig von der fraglichen Karte. Normalerweise gelten die Werte 5, 7, 9, 10, 11, 12 und 15. Die anderen Werte werden normalerweise für übliche Peripheriegeräte wie IDE-Festplatten, Disketten, serielle Anschlüsse etc. verwendet.

dma

Der von der Karte verwendete DMA-Kanal (Direct Memory Access). Dies gilt typischerweise nur für Busmaster-Karten. PCI und VLB Karten benötigen keinen ISA-DMA-Kanal.

scsi-id

Die ID, die der Host-Adapter verwendet, um sich auf dem SCSI-Bus zu identifizieren. Nur einige Host-Adapter erlauben die Änderung dieses Werts, da er bei den meisten intern fest eingestellt ist. Gewöhnlich ist der Standardwert ID 7. Die Seagate und Future Domain TMC-950-Boards jedoch verwenden ID 6.

parity

Legt fest, ob der SCSI Host-Adapter von den angeschlossenen Geräten erwartet, daß sie für alle ausgetauschten Informationen einen Paritätswert zur Verfügung stellen. Der Wert 1 aktiviert den Paritäts-Check und 0 schaltet ihn ab. Auch hier gilt, daß nicht alle Adapter die Auswahl eines Paritätsverhaltens als Bootparameter unterstützen.

Adaptec aha151x, aha152x, aic6260, aic6360, SB16-SCSI (»aha152x=«)

Die aha-Zahlen beziehen sich auf Karten und die aic-Zahlen beziehen sich auf den tatsächlichen SCSI-Chip auf diesem Kartentyp, Soundblaster-16 SCSI eingeschlossen.

Die automatische Hardwareerkennung des Treibers für diesen SCSI Host schaut nach einem installierten BIOS. Falls keines vorhanden ist, wird die Karte nicht gefunden. Für diesen Fall wird man einen Bootparameter folgender Form verwenden müssen:

aha152x=iobase[,irq[,scsi-id[,reconnect[,parity]]]]

Wurde der Treiber mit aktiviertem Debugging kompiliert, dann kann ein sechster Wert zur Bestimmung des Debug-Levels gesetzt werden.

Alle Parameter verhalten sich wie eingangs dieses Abschnitts beschrieben. Ein reconnect Wert ungleich null erlaubt Geräten die Verwendung von Disconnect/Reconnect. Hier eine Beispielverwendung:

aha152x=0x340,11,7,1

Man beachte, daß die Angabe der Parameter einer bestimmten Reihenfolge folgen muß, d.h. wenn man eine Paritätseinstellung angeben will, dann muß man auch einen iobase-, einen irq-, einen scsi-id- und einen reconnect-Wert angeben.

Adaptec aha154x (»aha1542=«)

Dies sind die Karten aus der aha154x-Serie. Die Karten aus der aha1542-Serie verfügen über einen i82077 Floppy-Kontroller, die Karten der Serie aha1540 hingegen nicht. Diese sind Busmaster-Karten und haben Parameter zur Festlegung der »Fairness«, die dazu verwendet wird, den Bus mit anderen Geräten zu teilen. Der Bootparameter sieht folgendermaßen aus:

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

Gewöhnlich ist einer der folgenden iobase Werte gültig: 0x130, 0x134, 0x230, 0x234, 0x330 oder 0x334. Clone-Karten lassen möglicherweise andere Werte zu.

Die buson, busoff Werte beziehen sich auf die Anzahl von Mikrosekunden, in denen die Karte den ISA-Bus beherrscht. Die Standardwerte sind 11 µs an und 4 µs aus, so daß andere Karten wie z.B. eine ISA LANCE Ethernetkarte eine Chance haben, auf den ISA-Bus zuzugreifen.

Der Wert dmaspeed bezieht sich auf die Geschwindigkeit (in MB/s) in der der DMA-Transfer erfolgt. Der Standardwert ist 5 MB/s. Karten einer neueren Revision ermöglichen die Auswahl dieses Werts als Teil der Konfiguration per Software, ältere Karten verwenden Jumper. Man kann Werte bis 10 MB/s benutzen, vorausgesetzt, das Motherboard kann damit umgehen. Bei der Verwendung von Werten über 5 MB/s sollte man vorsichtig vorgehen.

Adaptec aha274x, aha284x, aic7xxx (»aic7xxx=«)

Diese Boards können einen Parameter folgender Form annehmen:

aic7xxx=extended,no_reset

Der Wert extended, falls ungleich Null, besagt, daß die erweiterte Übersetzung für große Platten eingeschaltet ist. Der Wert no_reset, falls ungleich Null, teilt dem Treiber mit, keinen Reset auf dem SCSI-Bus auszuführen, wenn der Host-Adapter beim Booten initialisiert wird.

AdvanSys SCSI Host-Adapter (»advansys=«)

Der AdvanSys-Treiber akzeptiert bis zu 4 I/O Adressen, unter denen der Treiber eine AdvanSys SCSI-Karte sucht. Man beachte, daß diese Werte überhaupt keinen Einfluß auf die EISA- oder PCI-Karten haben. Sie werden nur für die Überprüfung von ISA- und VLB-Karten eingesetzt. Wurde der Treiber mit eingeschaltetem Debugging kompiliert, kann durch Hinzufügen des Parameters 0xdeb[0-f] bestimmt werden, bis zu welchem Grad Debugging-Meldungen ausgegeben werden sollen. 0-f ermöglicht die Festlegung des Levels der Debugging-Meldungen auf jeden der 16 Level.

Always IN2000-Host-Adapter (»in2000=«)

Im Gegensatz zu den Bootparametern der anderen SCSI Host-Adapter verwendet der IN2000-Treiber für die meisten seiner Integer-Parameter ASCII-Strings als Präfix. Hier eine Liste von unterstützten Parametern:

ioport:addr

Wobei addr die I/O-Adresse einer Karte ist, die gewöhnlich kein ROM besitzt.

noreset

Verhindert einen Reset des SCSI-Busses beim Booten. Diesem Parameter können keine optionalen Argumente übergeben werden.

nosync:x

x ist eine Bitmaske, wobei die ersten 7 Bit mit den 7 möglichen SCSI-Geräten übereinstimmen (Bit 0 für das Gerät mit ID0, etc). Um die Sync-Übertragung auf ein Gerät zu verhindern, setzt man dessen Bit. Standardmäßig ist Sync für alle Geräte ausgeschaltet.

period:ns

ns ist die minimale # von Nanosekunden für einen SCSI-Datentransfer. Standard ist 500; erlaubte Werte sind 250 bis 1000.

disconnect:x

x = 0 verhindert grundsätzlich Disconnects; x = 2 erlaubt immer Disconnects. x = 1 führt »adaptive« Disconnects durch. Dieses ist der Standard und wohl allgemein die beste Wahl.

debug:x

Ist »DEBUGGING_ON« angegeben, dann ist x eine Bitmaske, durch die verschiedene Arten von Debug-Ausgaben ein- oder ausgeschaltet werden; siehe hierzu die Definition der DB_xxx Konstanten in in2000.h.

proc:x

Ist »PROC_INTERFACE« angegeben, dann ist x eine Bitmaske, die festlegt, wie die /proc-Schnittstelle funktioniert und was sie macht; siehe hierzu die Definition der PR_xxx Konstanten in in2000.h.

Hier einige Anwendungs-Beispiele :

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

AMD AM53C974-basierte Hardware (»AM53C974=«)

Im Gegensatz zu anderen Treibern verwendet dieser keine Bootparameter, um I/O-, IRQ- oder DMA-Kanäle festzulegen. Da der AM53C974 ein PCI-Gerät ist, sollte dafür auch kein Grund bestehen. Statt dessen teilen die Parameter für gewöhnlich die Transfermodi und Transferraten mit, die zwischen dem Host- und dem Zielgerät verwendet werden sollen. Dies läßt sich am besten anhand eines Beispiels beschreiben:

AM53C974=7,2,8,15

Dies würde folgendermaßen interpretiert werden: Für die Kommunikation zwischen dem SCSI-Kontroller mit ID7 und dem SCSI-Gerät mit ID2 soll eine Transferrate von 8 MHz im Synchronmodus mit max. 15 Bytes Offset ausgehandelt werden. Weitere Informationen findet man in der Datei linux/drivers/scsi/README.AM53C974

BusLogic SCSI-Hosts mit v1.2.x Kerneln (»buslogic=«)

In älteren Kerneln akzeptiert der buslogic-Treiber nur einen Parameter, und zwar die iobase. Folgende Werte sind zulässig: 0x130, 0x134, 0x230, 0x234, 0x330 und 0x334.

BusLogic SCSI-Hosts mit v2.x Kerneln (»BusLogic=«)

Bei v2.x Kerneln akzeptiert der BusLogic-Treiber viele Parameter. Man beachte die neue Schreibweise des Parameters im Vergleich zu den alten Kernels. Dieser Parameter kennt zu viele Option, als das man diese hier alle auflisten könnte. Eine komplette Beschreibung der Optionen ist in der Datei linux/drivers/scsi/BusLogic.c zu finden, wenn man nach der Zeichenkette BusLogic= sucht.

EATA SCSI-Karten (»eata=«)

Seit den späten Kernelversionen v2.0 akzeptieren die EATA-Treiber die Überprüfung eines Bootparameters, der die iobase(s) bestimmt. Dieses sieht folgendermaßen aus:

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

Der Treiber überprüft die Adressen in der Reihenfolge, in der sie aufgelistet sind.

Future Domain TMC-8xx, TMC-950 (»tmc8xx=«)

Der Überprüfungscode für diese SCSI-Hosts schaut nach einem installierten BIOS; falls keines vorhanden ist, wird die Karte nicht gefunden werden. Auch wenn der Signatur-String des BIOS nicht erkannt wurde, wird die Karte nicht gefunden. In jedem der beiden Fälle wird man dann einen Bootparameter folgender Form verwenden:

tmc8xx=mem_base,irq

Der Wert mem_base ist der Wert des in den Speicher eingeblendeten I/O-Bereichs, den die Karte verwendet. Dieser ist für gewöhnlich einer der folgenden Werte: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000 oder 0xde000.

Future Domain TMC-16xx, TMC-3260, AHA-2920 (»fdomain=«)

Der Treiber erkennt diese Karten entsprechend einer Liste von bekannten BIOS ROM-Signaturen. Eine komplette Liste bekannter BIOS-Ausgaben erhält man in der Datei linux/drivers/scsi/fdomain.c. Diese wird mit einer Fülle von Informationen eingeleitet. Ist das BIOS dem Treiber nicht bekannt, dann kann man dies folgendermaßen überbrücken:

fdomain=iobase,irq[,scsi_id]

IOMEGA Parallel Port ZIP-Laufwerk (»ppa=«)

Dieses ist ein Treiber für den IOMEGA Parallel Port SCSI Adapter, welcher in den IOMEGA ZIP-Laufwerken enthalten ist. Er könnte auch mit dem original IOMEGA PPA3-Gerät funktionieren. Der Bootparameter für diesen Treiber sieht folgendermaßen aus:

ppa=iobase,speed_high,speed_low,nybble

Alle außer iobase sind optional festlegbare Werte. Will man einen der optionalen Parameter verändern, dann sollte man einen Blick in die Datei linux/drivers/scsi/README.ppa werfen. Dort findet man genaue Informationen darüber, was von diesen Parametern kontrolliert wird.

NCR5380-basierte Kontroller (»ncr5380=«)

Je nach Board kann der 5380 entweder über I/O-Ports oder einen eingeblendeten Speicherbereich angesprochen werden. Eine Adresse unter 0x400 ist für gewöhnlich ein I/O-Port. PCI- und EISA-Hardware verwenden jedoch I/O-Adressen über 0x3ff. In jedem Fall gibt man die Adresse, den Wert des Interrupts und des DMA-Kanals an. Hier ein Beispiel einer I/O-Karte: ncr5380=0x350,5,3. Verwendet die Karte keine Interrupts, dann können mit einem IRQ-Wert von 255 (0xff) Interrupts deaktiviert werden. Ein IRQ-Wert von 254 bedeutet eine automatische Hardwareerkennung. Weitere Informationen findet man in der Datei linux/drivers/scsi/README.g_NCR5380.

NCR53c400-basierte Kontroller (»ncr53c400=«)

Die generische 53c400-Unterstützung erfolgt mit demselben Treiber wie für die oben erwähnte generische 5380-Unterstützung. Der Bootparameter ist identisch zum obig genannten, mit der Ausnahme, daß vom 53c400 kein DMA-Kanal verwendet wird.

NCR53c406a-basierte Kontroller (»ncr53c406a=«)

Dieser Treiber verwendet einen Bootparameter folgender Form

ncr53c406a=PORTBASE,IRQ,FASTPIO

wobei die IRQ- und FASTPIO-Parameter optional sind. Ein Interrupt-Wert von 0 schaltet die Verwendung von Interrupts aus. Der Wert 1 für den FASTPIO-Parameter aktiviert die Verwendung von insl- und outsl-Anweisungen statt den aus einem einzigen Byte bestehenden inb- und outb-Anweisungen. Während der Kompilierung eines neuen Kernels steht DMA als Option zur Verfügung.

Pro Audio Spectrum (»pas16=«)

PAS16 verwendet einen NCR5380 SCSI-Chip und neuere Modelle unterstützen die Konfiguration ohne Jumper. Der Bootparameter sieht folgendermaßen aus:

pas16=iobase,irq

Der einzige Unterschied besteht darin, daß man einen IRQ-Wert von 255 verwenden kann, welcher dem Treiber mitteilt, ohne die Verwendung von Interrupts zu arbeiten, was jedoch Geschwindigkeitsverluste mit sich bringt. Die iobase ist gewöhnlich 0x388.

Seagate ST-0x (»st0x=«)

Der Code zur Überprüfung für diese SCSI-Hosts sucht nach einem installierten BIOS. Ist keines vorhanden, wird die Karte nicht gefunden. Auch wenn die Signatur-Zeichenkette des BIOS nicht erkannt wird, wird die Karte nicht gefunden. In jedem Fall wird man einen Bootparameter folgender Form verwenden:

st0x=mem_base,irq

Der Wert mem_base ist der Wert der in den Speicher eingeblendeten I/O-Region, den die Karte verwendet. Dieser wird für gewöhnlich einer der folgenden Werte sein: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000 oder 0xde000.

Trantor T128 (»t128=«)

Diese Karten basieren ebenfalls auf dem NCR5380-Chip und verstehen folgende Optionen:

t128=mem_base,irq

Gültige Werte für mem_base sind: 0xcc000, 0xc8000, 0xdc000 und 0xd8000.

Ultrastor SCSI-Karten (»u14-34f=«)

Man beachte, daß es anscheinend zwei unabhängige Treiber für diese Karte gibt, nämlich CONFIG_SCSI_U14_34F, der u14-34f.c benutzt, und CONFIG_SCSI_ULTRASTOR, der ultrastor.c verwendet. u14-34f ist derjenige, der seit den späten Kernelversionen v2.0 einen Bootparameter folgender Form akzeptiert:

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

Der Treiber überprüft die Adressen in der Reihenfolge, wie sie aufgelistet sind.

Western Digital WD7000-Karten (»wd7000=«)

Die automatische Erkennung für wd7000 sucht nach einer bekannten BIOS ROM-Zeichenkette und kennt einige Standardeinstellungen. Werden die korrekten Werte für die eigene Karte nicht geliefert oder hat man eine nicht erkannte BIOS-Version, dann kann man einen Bootparameter folgender Form verwenden:

wd7000=irq,dma,iobase

6.3 SCSI-Host-Adapter, die keine Bootparameter akzeptieren

Zur Zeit verwenden die Treiber folgender SCSI-Karten keine Bootparameter. In einigen Fällen kann man Werte »hartkodieren«, indem man, falls nötig, den Treiber selbst editiert.


Inhalt