/usr/share/doc/HOWTO/de-html/DE-PCMCIA-HOWTO-5.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 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.65">
<TITLE>Linux PCMCIA HOWTO: Anspruchsvollere Themen</TITLE>
<LINK HREF="DE-PCMCIA-HOWTO-6.html" REL=next>
<LINK HREF="DE-PCMCIA-HOWTO-4.html" REL=previous>
<LINK HREF="DE-PCMCIA-HOWTO.html#toc5" REL=contents>
</HEAD>
<BODY>
<A HREF="DE-PCMCIA-HOWTO-6.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-PCMCIA-HOWTO-4.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-PCMCIA-HOWTO.html#toc5"><IMG SRC="toc.png" ALT="Inhalt"></A>
<HR>
<H2><A NAME="s5">5.</A> <A HREF="DE-PCMCIA-HOWTO.html#toc5">Anspruchsvollere Themen</A></H2>
<H2><A NAME="ss5.1">5.1</A> <A HREF="DE-PCMCIA-HOWTO.html#toc5.1">Bereitstellung der benötigten Ressourcen für PCMCIA-Geräte </A>
<!--PCMCIA!Ports--> <!--PCMCIA!Interrupts--></H2>
<P>Theoretisch sollte es egal sein, welcher Interrupt von welchem
Gerät verwendet wird, solange nicht zwei Geräte so
konfiguriert sind, daß sie den gleichen verwenden. In der Datei
<CODE>/etc/pcmcia/config.opts</CODE> können bestimmte Interrupts, die
bei nicht-PCMCIA-Geräten Verwendung finden, ausgeschlossen
werden.</P>
<P>Es ist nicht möglich, eine PCMCIA-Karte anzuweisen, eine bestimmte
I/O-Adresse zu verwenden. Vielmehr erlaubt die Datei
<CODE>/etc/pcmcia/config.opts</CODE> einem, einen Bereich von
verfügbaren Adressen für den Gebrauch durch PCMCIA-Geräte
anzugeben oder einen Bereich vom Gebrauch auszuschließen.</P>
<P>Nach der Modifizierung der Datei <CODE>/etc/pcmcia/config.opts</CODE> kann
<CODE>cardmgr</CODE> mit dem Befehl
<BLOCKQUOTE><CODE>
kill -HUP
</CODE></BLOCKQUOTE>
neu gestartet
werden.</P>
<P>Der Interrrupt, der verwendet wird, um den Kartenstatus zu
überwachen, wird von dem Grundmodul (<CODE>i82365</CODE> oder
<CODE>tcic</CODE>) ausgewählt, bevor <CODE>cardmgr</CODE> die Datei
<CODE>/etc/pcmcia/config</CODE> durchforstet, so daß diese
Einstellungen durch diese Datei nicht beeinflußt werden.
Um diesen Interrupt zu setzen, muß die <CODE>cs_irq=</CODE> Option
verwendet werden, wenn der Slottreiber geladen wird. Dies wird durch
Setzen der Variable <CODE>PCIC_OPTS=</CODE> im Startskript
<CODE>rc.pcmcia</CODE> erreicht.</P>
<P>Alle darauf aufbauenden Kartentreiber haben einen Parameter, der
<CODE>irq_mask=</CODE> genannt wird und mit dem die Interrupts festgelegt
werden, die von dem Treiber verwendet werden können. Jedes Bit
von <CODE>irq_mask</CODE> entspricht einem Interrupt: Bit 0 ist IRQ0,
Bit 1 IRQ1 und so weiter. Eine Maske von 0x1200 würde den
Interrupts 9 und 12 entsprechen. Um einen Treiber derart
einzuschränken, daß dieser nur einen Interrupt verwendet,
darf lediglich ein Bit gesetzt werden. Diese Treiberoptionen
sollten in der Datei <CODE>/etc/pcmcia/config</CODE> angegeben werden. Zum
Beispiel
<BLOCKQUOTE><CODE>
<PRE>
device "serial_cs"
module "serial_cs" opts "irq_mask=0x1100"
...
</PRE>
</CODE></BLOCKQUOTE>
würde bedeuten, daß nur die Interrupts 8 und 12 verwendet
werden dürfen. Unabhängig von der Einstellung der Variablen
<CODE>irq_mask</CODE> wird Card Services niemals einen Interrupt
verwenden, der bereits von einem anderen Gerät benutzt oder durch
die Datei <CODE>config</CODE> ausgeschlossen wird.</P>
<H2><A NAME="ss5.2">5.2</A> <A HREF="DE-PCMCIA-HOWTO.html#toc5.2">Wie können verschiedene Geräteeinstellungen für zu Hause und fürs Büro verwendet werden? </A>
<!--PCMCIA!Schemata--></H2>
<P>Dies ist wirklich eine einfache Anwendung der Unterstützung von
PCMCIA-<EM>Schemata</EM>. Dazu verwendet man am besten zwei
Konfigurationsschemata, genannt <EM>Arbeit</EM> und <EM>Heim</EM>. Hier
ist ein Beispiel eines <CODE>network.opts</CODE> Skriptes mit
schemaspezifischen Einstellungen:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
case "$ADDRESS" in
Arbeit,*,*,*)
# Definition der Netzwerkkarte im Arbeit Schema
...
;;
Heim,*,*,*|default,*,*,*)
# Definition der Netzwerkkarte im zu Hause Schema
...
;;
esac
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Der erste Teil einer PCMCIA-Geräteadresse ist immer das
Konfigurationsschema. In diesem Beispiel wird der zweite Fall sowohl
für das <EM>Heim</EM>, als auch für das <EM>default</EM> Schema
verwendet. Wenn also das Schema aus irgendeinem Grund nicht gesetzt
ist, wird automatisch das <EM>Heim</EM> Schema verwendet.</P>
<P>Um jetzt zwischen diesen beiden Sätzen von Einstellungen zu
wählen, kann man eines dieser Kommandos starten:</P>
<P>
<!--
PCMCIA!cardctl!scheme
-->
<!--
cardctl!scheme
-->
</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
cardctl scheme home
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>oder</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
cardctl scheme work
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Das Kommando <CODE>cardctl</CODE> fährt alle Karten herunter und
startet diese neu. Dieses Kommando kann sicher verwendet werden,
unabhängig davon, ob das PCMCIA-System geladen ist. Es kann aber
fehlschlagen, wenn zur gleichen Zeit andere Geräte verwendet
werden. Dies ist unabhängig davon, ob diese Geräte von der
Einstellung des aktuellen Schemas abhängen oder nicht.</P>
<P>Um das gerade eingestellte Schema herauszufinden, kann dieses Kommando
verwendet werden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
cardctl scheme
</PRE>
</CODE></BLOCKQUOTE>
</P>
<H2><A NAME="ss5.3">5.3</A> <A HREF="DE-PCMCIA-HOWTO.html#toc5.3">Booten von einem PCMCIA-Gerät </A>
<!--PCMCIA!Booten--> <!--PCMCIA!initrd--> <!--initrd--></H2>
<P>Das Root-Dateisystem auf einem PCMCIA-Gerät zu haben, ist
trickreich, da das PCMCIA-System von Linux nicht dazu gedacht ist, in
den Kernel fest eingebunden zu werden. Die Kernkomponenten,
die ladbaren Kernelmodule und der <CODE>cardmgr</CODE> Daemon hängen von
einem bereits laufenden System ab. Die <CODE>initrd</CODE> Möglichkeit des Kernels
umgeht diese Voraussetzungen dadurch, daß Linux erlaubt wird,
vorübergehend ein RAM-Laufwerk als minimales Root-Dateisystem zu verwenden,
die Treiber zu laden und dann ein anderes Root-Dateisystem an dessen
Stelle zu mounten. Das temporäre Root-Dateisystem kann dazu verwendet werden,
PCMCIA zu konfigurieren und dann ein PCMCIA-Gerät als
Root-Dateisystem einzurichten.</P>
<P>Einige Linuxdistributionen erlauben eine direkte Installation auf
Geräten, die direkt an einem PCMCIA-SCSI-Controller hängen,
als unbeabsichtigten Nebeneffekt der Unterstützung der
Installation von einem PCMCIA-SCSI-CD-ROM-Laufwerk. Kein
Installationsprogramm unterstützt die Konfiguration von
<CODE>initrd</CODE>, um Linux mit einem PCMCIA-Root-Dateisystem zu
booten. Um so ein System einzurichten, benötigt man ein anderes
Linuxsystem, um ein <CODE>initrd</CODE> Startprogramm zu erzeugen. Wenn ein
anderes Linuxsystem nicht verügbar ist, kann eine andere Option
die temporäre Installation eines minimalen Linuxsystems auf einem
Nicht-PCMCIA-Laufwerk, die Erzeugung eines <CODE>initrd</CODE> Startprogramms
und dann die Neuinstallation auf einem PCMCIA-Laufwerk sein.</P>
<P>Das Linux <EM>
<A HREF="http://metalab.unc.edu/LDP/HOWTO/Bootdisk-HOWTO.html">Bootdisk HOWTO</A></EM> enthält einige generelle
Hinweise zur Erstellung von Bootdisketten aber nichts spezielles
zu <CODE>initrd</CODE>. Die Hauptdokumentation zu <CODE>initrd</CODE> ist im
Quellcode aktueller Kernelversionen in der Datei
<CODE>linux/Documentation/initrd.txt</CODE> enthalten. Bevor man
anfängt, sollte man diese Dokumentation lesen. Eine Vertrautheit
mit LILO ist ebenfalls hilfreich. Die Verwendung von
<CODE>initrd</CODE> erfordert, daß der Kernel mit den aktivierten
Optionen <CODE>CONFIG_BLK_DEV_RAM</CODE> und <CODE>CONFIG_BLK_DEV_INITRD</CODE>
übersetzt wurde.</P>
<H3>Das Hilfsskript pcinitrd <!--PCMCIA!pcinitrd--> <!--pcinitrd--></H3>
<P>Das Skript <CODE>pcinitrd</CODE> erzeugt ein <CODE>initrd</CODE>
Grundstartprogramm zum Booten mit einem PCMCIA-Root-Dateisystem.
Dies enthält eine minimale Verzeichnishierarchie, ein
paar Gerätedateien, einige ausführbare Programme, Bibliotheken
und einen Satz von PCMCIA-Treibermodulen. Wenn
<CODE>pcinitrd</CODE> aufgerufen wird, müssen die Treibermodule
angegeben werden, die verwendet werden sollen. Die
Kern-PCMCIA-Komponenten, <CODE>pcmcia_core</CODE> und <CODE>ds</CODE>, sind
automatisch enthalten. </P>
<P>Als ein Beispiel für den Fall, daß das Notebook einen
<CODE>i82365</CODE>-kompatiblen PCMCIA-Controller besitzt und Linux mit
dem Root-Dateisystem auf einer Festplatte installiert werden
soll, die an einem <EM>Adaptec SlimSCSI</EM> Controller angeschlossen
ist, würde man folgenden Befehl verwenden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
pcinitrd -v initrd pcmcia/i82365.o pcmcia/aha152x_cs.o
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Um die Startsequenz von <CODE>initrd</CODE> anzupassen, kann das
Dateisystem mittels des <CODE>loopback</CODE> Gerätes eingefügt
werden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
mount -o loop -t ext2 initrd /mnt
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Danach sollte das Skript <CODE>linuxrc</CODE> editiert werden. Die
PCMCIA-Konfigurationsdateien werden hierauf im Verzeichnis <CODE>/etc</CODE>
installiert und können ebenfalls angepaßt werden. Dazu
sollte die Manual Page von <CODE>pcinitrd</CODE> für weitere Informationen
gelesen werden.</P>
<H3>Erstellen einer initrd Bootdiskette</H3>
<P>Nach der Erstellung durch <CODE>pcinitrd</CODE> kann durch Kopieren des
Kernels, des gepackten <CODE>initrd</CODE> Startprogramms und einiger
Hilfsdateien für LILO auf eine leere Diskette eine
Bootdiskette erstellt werden. Im folgenden Beispiel nehmen wir an,
daß das benötigte PCMCIA-Root-Dateisystem auf
<CODE>/dev/sda1</CODE> liegen soll:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
mke2fs /dev/fd0
mount /dev/fd0 /mnt
mkdir /mnt/etc /mnt/boot /mnt/dev
cp -a /dev/fd0 /dev/sda1 /mnt/dev
cp [kernel-image] /mnt/vmlinuz
gzip < [initrd-image] > /mnt/initrd
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Erzeuge dann <CODE>/mnt/etc/lilo.conf</CODE> mit diesem Inhalt:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
boot=/dev/fd0
compact
image=/vmlinuz
label=linux
initrd=/initrd
read-only
root=/dev/sda1
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Zum Schluß muß <CODE>lilo</CODE> aufgerufen werden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
/sbin/lilo -r /mnt
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Wenn <CODE>lilo</CODE> mit der Option <CODE>-r</CODE> aufgerufen wird, so wird
es alle Aktionen relativ zu dem alternativ angegebenen
Root-Dateisystem durchführen. Der Grund für das Erzeugen der
Dateien unter <CODE>/mnt/dev</CODE> ist der, daß <CODE>lilo</CODE> nicht
in der Lage ist, die Dateien in <CODE>/dev</CODE> zu verwenden, wenn es in
diesem alternativen <EM>root</EM> Modus läuft.</P>
<H3>Installierung eines initrd Startprogramms auf einem Nicht-Linux-Laufwerk</H3>
<P>Eine häufige Verwendung der <CODE>initrd</CODE> Möglichkeit ist
der Gebrauch auf Systemen, wo die eingebaute Festplatte einem anderen
Betriebssystem gewidmet ist. Der Linux-Kernel und das <CODE>initrd</CODE>
Startprogramm können auf einer Nicht-Linux-Partition
untergebracht werden und LILO oder LOADLIN
können so konfiguriert werden, daß sie Linux von dort
starten können.</P>
<P>Ausgehend von der Annahme, daß der Kernel für das
entsprechende Root-Laufwerk konfiguriert wurde und das
<CODE>initrd</CODE> Startprogramm auf einem anderen System erstellt wurde,
ist der einfachste Weg, Linux mit LOADLIN zu starten: </P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
LOADLIN <kernel> initrd=<initrd-image>
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Wenn Linux erst einmal auf der Zielmaschine gestartet wurde,
dann kann LILO installiert werden, um Linux direkt zu starten.
Als Beispiel sei <CODE>/dev/hda1</CODE> die Nicht-Linux-Zielpartition und
<CODE>/mnt</CODE> ein freies Verzeichnis zum Mounten der Partition.
Als erstes muß ein Unterverzeichnis für Linux auf dieser
Partition geschaffen werden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
mount /dev/hda1 /mnt
mkdir /mnt/linux
cp [kernel-image] /mnt/linux/vmlinuz
cp [initrd-image] /mnt/linux/initrd
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Wenn in diesem Beispiel <CODE>/dev/sda1</CODE>, ein SCSI-Laufwerk, auf welches
über einen PCMCIA-Controller zugegriffen wird, die
Root-Partition von Linux enthalten soll, so muß zur Installation von
LILO eine Datei <CODE>lilo.conf</CODE> mit folgendem Inhalt
erstellt werden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
boot=/dev/hda
map=/mnt/linux/map
compact
image=/mnt/linux/vmlinuz
label=linux
root=/dev/sda1
initrd=/mnt/linux/initrd
read-only
other=/dev/hda1
table=/dev/hda
label=windows
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Die <CODE>boot=</CODE> Zeile besagt, daß LILO im <EM>Master
Boot Record</EM> (MBR) des angegebenen Gerätes installiert werden soll. Die
<CODE>root=</CODE> Zeile kennzeichnet das gewünschte
Root-Dateisystem, welches später für den Gebrauch des
<CODE>initrd</CODE> Startprogramms verwendet werden soll, und kann
überflüssig sein, wenn der Kernel schon entsprechend
konfiguriert worden ist. Der <CODE>other=</CODE> Abschnitt beschreibt das
andere Betriebssystem, das auf <CODE>/dev/hda1</CODE> liegt.</P>
<P>Um LILO in diesem Fall zu installieren, sollte dies verwendet
werden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
lilo -C lilo.conf
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Beachten Sie, daß in diesem Fall die Datei <CODE>lilo.conf</CODE>
absolute Pfadnamen verwendet, die <CODE>/mnt</CODE> enthalten. David tat
dies in diesem Beispiel, da das Zieldateisystem eventuell die
Einrichtung von Linux Gerätedateien für die <CODE>boot=</CODE>
und <CODE>root=</CODE> Optionen nicht unterstützt.</P>
<HR>
<A HREF="DE-PCMCIA-HOWTO-6.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-PCMCIA-HOWTO-4.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-PCMCIA-HOWTO.html#toc5"><IMG SRC="toc.png" ALT="Inhalt"></A>
</BODY>
</HTML>
|