This file is indexed.

/usr/share/doc/HOWTO/de-html/DE-SCSI-Programmierung-HOWTO-3.html is in doc-linux-de 2003.10-5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.65">
 <TITLE>Das Linux SCSI Programmier HOWTO: Was sind die notwendigen Voraussetzungen?</TITLE>
 <LINK HREF="DE-SCSI-Programmierung-HOWTO-4.html" REL=next>
 <LINK HREF="DE-SCSI-Programmierung-HOWTO-2.html" REL=previous>
 <LINK HREF="DE-SCSI-Programmierung-HOWTO.html#toc3" REL=contents>
</HEAD>
<BODY>
<A HREF="DE-SCSI-Programmierung-HOWTO-4.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-SCSI-Programmierung-HOWTO-2.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-SCSI-Programmierung-HOWTO.html#toc3"><IMG SRC="toc.png" ALT="Inhalt"></A>
<HR>
<H2><A NAME="s3">3.</A> <A HREF="DE-SCSI-Programmierung-HOWTO.html#toc3">Was sind die notwendigen Voraussetzungen?</A></H2>


<H2><A NAME="ss3.1">3.1</A> <A HREF="DE-SCSI-Programmierung-HOWTO.html#toc3.1">Kernel Konfiguration</A>
</H2>

<P>Nat&uuml;rlich mu&szlig; ein unterst&uuml;tzter SCSI Kontroller vorhanden sein.
Au&szlig;erdem mu&szlig; der Kernel noch Treiber f&uuml;r SCSI, den/die 
SCSI-Hostadapter und das generische Interface beinhalten.</P>
<P>Die Kernelkonfiguration (mittels <CODE>make config</CODE> unter 
<CODE>/usr/src/linux</CODE>) sieht typischerweise so aus:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
...
*
* SCSI support
*
SCSI support? (CONFIG_SCSI) [n] y
*
* SCSI support type (disk, tape, CDrom)
*
...
Scsi generic support (CONFIG_CHR_DEV_SG) [n] y
*
* SCSI low-level drivers
*
...
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Falls Module m&ouml;glich sind, k&ouml;nnen diese nat&uuml;rlich auch 
stattdessen
verwendet werden.</P>

<H2><A NAME="ss3.2">3.2</A> <A HREF="DE-SCSI-Programmierung-HOWTO.html#toc3.2">Device Deskriptoren</A>
</H2>

<P>Das generische SCSI Interface verwendet eigene Devicedeskriptoren, also
nicht die der anderen SCSI Ger&auml;tetreiber. Das Skript <CODE>MAKEDEV</CODE>
(zu finden im <CODE>/dev</CODE> Verzeichnis) kann die Eintr&auml;ge erzeugen.
Der Aufruf <CODE>MAKEDEV sg</CODE> erzeugt diese Eintr&auml;ge:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
crw-------   1 root     system    21,   0 Aug 20 20:09 /dev/sga
crw-------   1 root     system    21,   1 Aug 20 20:09 /dev/sgb
crw-------   1 root     system    21,   2 Aug 20 20:09 /dev/sgc
crw-------   1 root     system    21,   3 Aug 20 20:09 /dev/sgd
crw-------   1 root     system    21,   4 Aug 20 20:09 /dev/sge
crw-------   1 root     system    21,   5 Aug 20 20:09 /dev/sgf
crw-------   1 root     system    21,   6 Aug 20 20:09 /dev/sgg
crw-------   1 root     system    21,   7 Aug 20 20:09 /dev/sgh
                                   |    |
                               Major,   Minor Device Nummern
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Es f&auml;llt auf, da&szlig; dies Character-Deviceeintr&auml;ge f&uuml;r 
Lowlevelzugriff sind.</P>

<P>Hinweis: Auf manchen Systemen m&ouml;gen die Namen auch 
<CODE>/dev/{sg0,sg1,...}</CODE> lauten,
die folgenden Beispiele m&uuml;ssen dann entsprechend angepa&szlig;t werden.</P>

<H2><A NAME="ss3.3">3.3</A> <A HREF="DE-SCSI-Programmierung-HOWTO.html#toc3.3">Abbildung der SCSI-Ger&auml;te auf Deskriptoren</A>
</H2>

<P>Diese Deskriptoren werden dynamisch auf die aktiven SCSI ID/LUNs der
SCSI-Busse abgebildet (LUN bedeutet logische Einheit von logical unit).
Die Zuordnung (beim SCSI-Busscan) weist der Reihe nach alle LUNs von
allen IDs von allen SCSI-Bussen zu. Begonnen wird bei der kleinsten
LUN der kleinsten ID des ersten SCSI-Busses. Bei mehreren SCSI-Kontrollern
schlie&szlig;en sich die folgenden Busse ohne L&uuml;cken an. Dieser Schritt 
findet
beim Initialisieren des SCSI-Hosttreibers statt (also zum Zeitpunkt des
Bootens oder beim Einf&uuml;gen des Hosttreibermoduls).</P>
<P>Ein Beispiel:
Nehmen wir an, es gibt drei angeschlossene SCSI Ger&auml;te mit den Ids 1,
3 und 5 auf dem ersten SCSI-Bus (jedes belegt eine LUN). Dann w&uuml;rde
sich die folgende Zuordnung ergeben:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
/dev/sga -> SCSI Id 1
/dev/sgb -> SCSI Id 3
/dev/sgc -> SCSI Id 5
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Falls jetzt ein weiteres Ger&auml;t mit ID 4 dazukommt, ver&auml;ndert sich die 
Zuodnung
(nach erneutem Busscan) zu:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
/dev/sga -> SCSI Id 1
/dev/sgb -> SCSI Id 3
/dev/sgc -> SCSI Id 4
/dev/sgd -> SCSI Id 5
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Beachte die &Auml;nderung bei Id 5 -- das entsprechende Ger&auml;t ist nicht 
mehr
<CODE>/dev/sgc</CODE> zugeordnet, sondern erscheint als <CODE>/dev/sgd</CODE>.</P>
<P>Zum Gl&uuml;ck gibt es bei modernen Kerneln eine M&ouml;glichkeit, darauf 
Einflu&szlig;
zu nehmen.</P>

<H3>Dynamisches Einf&uuml;gen und L&ouml;schen von SCSI Ger&auml;ten</H3>

<P>Wenn alls ein neuerer Kernel und das <CODE>/proc</CODE> Filesystem l&auml;uft,
k&ouml;nnen Ger&auml;te, die gerade nicht benutzt werden, mitten im Betrieb
ausgetragen und neu angemeldet werden. Dazu sind nat&uuml;rlich Superuser-
privilegien erforderlich.</P>
<P>Zum Austragen eines angemeldeten SCSI-Ger&auml;tes wird
<BLOCKQUOTE><CODE>
<PRE>
echo "scsi remove-single-device a b c d" > /proc/scsi/scsi
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>und &auml;hnlich zum Anmelden
<BLOCKQUOTE><CODE>
<PRE>
echo "scsi add-single-device a b c d" > /proc/scsi/scsi
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>verwendet, dabei ist</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
'a' die Hostadapter Id (die erste ist 0)
'b' der SCSI-Bus des Hostadapters (der erste ist 0)
'c' die ID
'd' die LUN (die erste ist 0)
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Um also die Zuordnungen der beiden Ger&auml;te <CODE>/dev/sgc</CODE> und
<CODE>/dev/sgd</CODE> zu vertauschen (siehe letztes Beispiel),
geben wir Folgendes ein:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
echo "scsi remove-single-device 0 0 4 0" > /proc/scsi/scsi
echo "scsi remove-single-device 0 0 5 0" > /proc/scsi/scsi
echo "scsi add-single-device 0 0 5 0" > /proc/scsi/scsi
echo "scsi add-single-device 0 0 4 0" > /proc/scsi/scsi
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Das klappt, weil die Ger&auml;tezuordnung nach Anmeldereihenfolge erfolgt.</P>
<P>Beim Anmelden neuer SCSI-Ger&auml;te ist zu beachten, da&szlig; nur eine 
begrenzte
Anzahl von freien Eintr&auml;gen zur Verf&uuml;gung steht. Der Speicher ist zur
Bootzeit reserviert worden und erlaubt zwei weitere Ger&auml;tezuordnungen.</P>

<HR>
<A HREF="DE-SCSI-Programmierung-HOWTO-4.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-SCSI-Programmierung-HOWTO-2.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-SCSI-Programmierung-HOWTO.html#toc3"><IMG SRC="toc.png" ALT="Inhalt"></A>
</BODY>
</HTML>