/usr/share/doc/HOWTO/de-html/DE-Kernel-HOWTO-9.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 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.65">
<TITLE>Linux Kernel HOWTO: Module </TITLE>
<LINK HREF="DE-Kernel-HOWTO-10.html" REL=next>
<LINK HREF="DE-Kernel-HOWTO-8.html" REL=previous>
<LINK HREF="DE-Kernel-HOWTO.html#toc9" REL=contents>
</HEAD>
<BODY>
<A HREF="DE-Kernel-HOWTO-10.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-Kernel-HOWTO-8.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-Kernel-HOWTO.html#toc9"><IMG SRC="toc.png" ALT="Inhalt"></A>
<HR>
<H2><A NAME="s9">9.</A> <A HREF="DE-Kernel-HOWTO.html#toc9">Module </A><!--Kernel!Module--> <!--Module--></H2>
<P>Ladbare Kernel-Module können Hauptspeicher sparen und vereinfachen meist
die Konfiguration eines Systems. Die neue Red Hat-Distribution hat z.B.
nur noch eine einzige Bootdiskette für alle Konfigurationen.
Inzwischen können fast alle optionalen Kernel-Teile als
Module konfiguriert werden:
Dateisysteme, Netzwerk-Karten, serielle und parallele Schnittstellen,
Bandlaufwerke, Drucker usw.</P>
<H2><A NAME="ss9.1">9.1</A> <A HREF="DE-Kernel-HOWTO.html#toc9.1">Installation der Hilfsprogramme </A>
<!--insmod--> <!--rmmod--> <!--ksyms--> <!--lsmod--> <!--genksyms--> <!--modprobe--> <!--depmod--></H2>
<P>Das Hinzufügen und Entfernen der Module zum Kernel wird von einigen
externen Programmen erledigt. Diese gehören nicht zur
Standard-Kerneldistribution und müssen extra installiert werden. Man
bekommt sie von denselben Servern wie auch den Kernel unter dem Namen
<CODE>modules-x.y.z.tar.gz</CODE>. Man sollte dabei dasjenige Paket mit
derselben oder, falls es das nicht gibt, mit der nächstkleineren
Versionsnummer wie der verwendete Kernel benutzen. Nach dem Auspacken
des Paketes mit</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# tar zxvf modules-x.y.z.tar.gz
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>findet man in dem
neu angelegten Verzeichnis <CODE>modules-x.y.z</CODE> eine
<CODE>README</CODE>-Datei, die man aufmerksam lesen sollte. Darin werden
auch Anweisungen zur Installation gegeben; dies beschränkt sich aber
eigentlich immer auf ein einfaches <CODE>make install</CODE>. Dabei sollten
die folgenden Programme im Verzeichnis <CODE>sbin</CODE> installiert werden:
<CODE>insmod</CODE>, <CODE>rmmod</CODE>, <CODE>ksyms</CODE>, <CODE>lsmod</CODE>,
<CODE>genksyms</CODE>, <CODE>modprobe</CODE> und <CODE>depmod</CODE>.</P>
<P>Im Unterverzeichnis <CODE>insmod</CODE> des Modul-Paketes ist auch ein
kleines Beispiel für einen ladbaren Treiber enthalten (<CODE>/dev/hw</CODE>).
Wer Lust hat, kann damit ein wenig herumspielen, die Datei
<CODE>INSTALL</CODE> gibt dazu ein paar Hinweise.</P>
<P><CODE>insmod</CODE> dient dazu, ein Modul in den laufenden Kernel
einzufügen. Normalerweise handelt es sich bei den Modulen um
Binärdateien mit der Endung <CODE>.o</CODE>. Der Beispieltreiber heißt z.B.
<CODE>drv_hello.o</CODE>. Um diesen einzufügen, lautete der Befehl also:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# insmod drv_hello.o
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Um zu sehen, welche Module gerade im Kernel geladen sind, dient der
Befehl <CODE>lsmod</CODE>:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# lsmod
Module: #pages: Used by:
drv_hello 1
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P><CODE>drv_hello</CODE> ist der Name des Modules; es belegt eine »Page«
(Seite, entspricht 4 kB) im Speicher. Keine weiteren Module des
Kernels sind von ihm abhängig. </P>
<P>Um das Modul wieder zu entfernen, wird folgender Befehl verwendet:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# rmmod drv_hello
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Wichtig ist hierbei, daß <CODE>rmmod</CODE> den <EM>Namen
des Modules</EM>, so wie er von <CODE>lsmod</CODE> angezeigt wird, und
<EM>nicht</EM> den Dateinamen als Argument benötigt.</P>
<P>Die Manual Pages der Modul-Programme geben weitere
Informationen über deren Zweck und Optionen.</P>
<H2><A NAME="ss9.2">9.2</A> <A HREF="DE-Kernel-HOWTO.html#toc9.2">Die Module der Standard-Kerneldistribution </A>
</H2>
<P>Zum gegenwärtigen Zeitpunkt (2.0.30) können folgende Bestandteile des
Kernels als Modul kompiliert werden:
<UL>
<LI>alle Dateisysteme (außer <CODE>/proc</CODE>)</LI>
<LI>die meisten Treiber für Ethernet sowie ISDN-Karten</LI>
<LI>Unterstützung für SCSI-Geräte (Festplatten, CD-ROM, Tape)</LI>
<LI>alle unterstützten SCSI-Karten außer AM53C974</LI>
<LI>der Sound-Treiber</LI>
<LI>alle unterstützten IDE-CD-ROMs</LI>
<LI>Disketten, Drucker, Loopback und RAM-Disk</LI>
<LI>serielle und parallele Schnittstelle (Drucker), BUS- und PS/2
Mäuse</LI>
</UL>
Um diese zu benutzen, darf man sie nicht in den eigentlichen Kernel
einbinden, d.h. während des <CODE>make config</CODE> darf man die
entsprechenden Fragen nicht mit <CODE>y</CODE> beantworten, sondern mit
<CODE>m</CODE> für Modul. Nachdem der Kernel wie bereits beschrieben
kompiliert und installiert wurde, müssen die Module dann extra mit dem
Befehl </P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# make modules
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>übersetzt werden. Mit </P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# make install
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>werden die übersetzten Module dann im Verzeichnis
<CODE>/lib/modules/x.y.z</CODE> installiert, wobei <CODE>x.y.z</CODE> die
verwendete Kernel-Version ist. Von dort können sie dann mit dem Befehl
<CODE>lsmod</CODE> oder <CODE>modprobe</CODE> geladen werden. Der Vorteil von
<CODE>modprobe</CODE> gegenüber <CODE>lsmod</CODE> ist dabei, daß der volle Pfad
des Modules nicht angegeben werden muß. <CODE>modprobe</CODE> sucht
automatisch in <CODE>/lib/modules/x.y.z</CODE>. Außerdem wird immer die
richtige Version des Moduls, passend zum gerade laufenden Kernel,
gelesen. Wer gerne mit verschiedenen Kernels experimentiert, wird
das schnell zu schätzen wissen.</P>
<P>Ladbare Module sind ganz besonders für nur selten benutzte Dinge
praktisch, ein gutes Beispiel sind Dateisysteme. Wer nur ab und zu mal
eine Diskette mit dem MSDOS FAT-Dateisystem mounten muß, kann das
entsprechende Modul (<CODE>msdos.o</CODE>) nur bei Bedarf laden und so unter
Normalbedingungen etwa 50 kB an RAM einsparen. Noch komfortabler wird das
Ganze, wenn man <CODE>kerneld</CODE> verwendet. Dies ist ein automatischer
Modul-Lader, der benötigte Module selbsttätig in den Kernel lädt, sobald
das entsprechende Gerät oder Protokoll benötigt wird, und es, wenn es
nicht mehr in Benutzung ist, auch wieder entfernt.</P>
<P>Diese und viele weitere Feinheiten im Umgang mit den Modulen werden im
<EM>
<A HREF="http://metalab.unc.edu/LDP/HOWTO/Module-HOWTO.html">Module-HOWTO</A></EM>
beschrieben.</P>
<HR>
<A HREF="DE-Kernel-HOWTO-10.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-Kernel-HOWTO-8.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-Kernel-HOWTO.html#toc9"><IMG SRC="toc.png" ALT="Inhalt"></A>
</BODY>
</HTML>
|