/usr/share/doc/HOWTO/de-html/DE-Kernel-HOWTO-4.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 | <!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: Die Kompilierung </TITLE>
<LINK HREF="DE-Kernel-HOWTO-5.html" REL=next>
<LINK HREF="DE-Kernel-HOWTO-3.html" REL=previous>
<LINK HREF="DE-Kernel-HOWTO.html#toc4" REL=contents>
</HEAD>
<BODY>
<A HREF="DE-Kernel-HOWTO-5.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-Kernel-HOWTO-3.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-Kernel-HOWTO.html#toc4"><IMG SRC="toc.png" ALT="Inhalt"></A>
<HR>
<H2><A NAME="s4">4.</A> <A HREF="DE-Kernel-HOWTO.html#toc4">Die Kompilierung </A></H2>
<H2><A NAME="ss4.1">4.1</A> <A HREF="DE-Kernel-HOWTO.html#toc4.1">clean und depend </A>
<!--Kernel!make clean--> <!--Kernel!make depend--></H2>
<P>Am Ende der Konfiguration weist das Skript ebenfalls darauf hin, man
solle ein <CODE>make dep</CODE> sowie ein <CODE>make clean</CODE> durchführen.
Dies sollte man in jedem Fall tun, damit die wechselseitigen
Abhängigkeiten der Quell- und Include-Dateien richtig zusammengestellt
werden. Dies dauert nicht sehr lange; auf meinem DX/2-80 aber fast
länger als die komplette Kompilierung des Kernels. Danach
löscht man mit <CODE>make clean</CODE> alle alten Objekt-Dateien und stellt
so sicher, das sie wirklich neu übersetzt werden. Dieser Schritt ist
wirklich wichtig, und einige fehlgeschlagene Kompilierungsversuche
beruhten nur auf einem vergessenen:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# make dep
# make clean
</PRE>
</CODE></BLOCKQUOTE>
</P>
<H2><A NAME="ss4.2">4.2</A> <A HREF="DE-Kernel-HOWTO.html#toc4.2">make </A>
<!--Kernel!make zImage--> <!--Kernel!make zdisk--></H2>
<P>Nun kommt der zeitraubende Teil. </P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# make zImage
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>kompiliert den gesamten Kernel und hinterläßt die Datei
<CODE>zImage</CODE> im Verzeichnis <CODE>arch/i386/boot</CODE>. Dies ist der
neue, komprimierte Kernel. </P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# make zdisk
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>macht dasselbe,
installiert aber diesen neuen Kernel gleich auf eine Diskette, die man
hoffentlich rechtzeitig in das Laufwerk A: geschoben hat.
Die letztere Methode ist ziemlich praktisch, um neue Kernels relativ
gefahrlos zu testen. Wenn er aus irgendeinem Grund nicht richtig
funktioniert oder gar abstürzt, nimmt man einfach die Diskette aus dem
Laufwerk und bootet den alten Kernel. Generell ist es immer eine gute
Idee, eine solche bootfähige Diskette mit einem funktionierenden Kernel
zur Hand zu haben. Denn irgendwann kommt immer der Tag, an dem man aus
Versehen den Kernel von der Festplatte löscht oder eine ähnliche
Dummheit begeht.</P>
<P>Alle halbwegs aktuellen Kernels sind komprimiert, daher das <CODE>z</CODE>
am Anfang der Namen. Ein solcher komprimierter Kernel entpackt sich
automatisch selber, wenn er bootet.</P>
<H2><A NAME="ss4.3">4.3</A> <A HREF="DE-Kernel-HOWTO.html#toc4.3">Andere Optionen (»Targets«) für make </A>
<!--Kernel!make mrproper--> <!--Kernel!make oldconfig--> <!--Kernel!make modules--> <!--Module!kompilieren--></H2>
<P><CODE>make mrproper</CODE> macht etwas ähnliches wie <CODE>clean</CODE>, aber
sehr viel umfassender. Manchmal ist das notwendig, um ein wirklich
»sauberen« Verzeichnisbaum zu generieren.
Dabei werden aber auch die alten Einstellungen der Konfiguration gelöscht;
eventuell sollte man sich deshalb eine Sicherungskopie der Datei
<CODE>.config</CODE> aufheben, um bei Bedarf die alten Einstellungen
nachsehen zu können.</P>
<P><CODE>make oldconfig</CODE> versucht, die Kernel-Konfiguration automatisch
anhand einer alten Konfigurationsdatei durchzuführen. Wer noch nie einen
Kernel kompiliert hat, sollte diese Option besser nicht benutzen, da
sicherlich die eine oder andere Einstellung verändert werden muß.</P>
<P><CODE>make modules</CODE> wird in einem eigenen Abschnitt beschrieben.</P>
<H2><A NAME="ss4.4">4.4</A> <A HREF="DE-Kernel-HOWTO.html#toc4.4">Installation des neuen Kernels </A>
<!--LILO--> <!--Kernel!Installation--></H2>
<P>Jetzt, nachdem der Kernel erfolgreich den eigenen Wünschen entsprechend
kompiliert wurde, ist es an der Zeit, ihn zu installieren. Die meisten
Leute benutzen LILO, den <B>Li</B>nux <B>Lo</B>ader, um Linux und eventuell
auch einige weitere Betriebssysteme zu booten. Für diesen Fall genügt
meist ein einfaches <CODE>make zlilo</CODE>. Dabei wird der Kernel
kompiliert, installiert und <CODE>lilo</CODE> aufgerufen. Danach sollte
alles für einen Reboot des neuen Kernels bereit sein.</P>
<P>Das funktioniert aber nur dann, wenn <CODE>lilo</CODE>
folgendermaßen eingestellt und installiert ist: Der Kernel ist
<CODE>/vmlinuz</CODE>, <CODE>lilo</CODE> befindet sich in <CODE>/sbin</CODE> und die
Konfigurationsdatei für <CODE>lilo</CODE> (<CODE>/etc/lilo.conf</CODE>) stimmt
mit dieser Einstellung überein. Ist dies nicht der Fall, muß man
<CODE>lilo</CODE> selber aufrufen, nachdem der neue Kernel an die richtige
Stelle kopiert wurde.</P>
<P>Eigentlich ist
<CODE>lilo</CODE> ein Paket, das sehr einfach zu installieren und auch zu
benutzen ist. Dennoch lassen sich manche von der Konfigurationsdatei
(<CODE>/etc/lilo.conf</CODE> oder, bei älteren Versionen,
<CODE>/etc/lilo/config</CODE>) verwirren. Ein typischer Eintrag in dieser
Datei sieht so aus:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
image = /vmlinuz
label = Linux
root = /dev/hda1
...
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Der Eintrag <CODE>image =</CODE> gibt den vollen Pfad des gegenwärtig
installierten Kernels an; die meisten verwenden <CODE>/vmlinuz</CODE>.
<CODE>label</CODE> gibt einen Namen, unter dem man diesen Eintrag, wenn
mehrere Einträge vorhanden sind, ansprechen kann, und <CODE>root</CODE> gibt
diejenige Partition der Festplatte an, die als <CODE>/</CODE> gemountet
werden soll. Um für das hier beschriebene System den neuen Kernel zu
installieren, sollte man also vom alten Kernel eine Sicherheitskopie
machen, den neuen Kernel an die angegebene Stelle kopieren und <CODE>lilo</CODE>
aufrufen:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# mv /vmlinuz /Old_Kernel
# mv /usr/src/linux/arch/i386/boot/zImage /vmlinuz
# lilo
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Bei älteren Versionen von <CODE>lilo</CODE> muß die letzte Zeile eventuell
<BLOCKQUOTE><CODE>
<PRE>
# /etc/lilo/install
</PRE>
</CODE></BLOCKQUOTE>
oder sogar
<BLOCKQUOTE><CODE>
<PRE>
# /etc/lilo/lilo -C /etc/lilo/config
</PRE>
</CODE></BLOCKQUOTE>
lauten.</P>
<H3>Beispiel für eine LILO-Konfiguration </H3>
<P>LILO kann im Prinzip beliebig viele verschiedene Systeme booten, deshalb
kann man es auch sehr gut dazu verwenden, neuen und alten Kernel
gleichzeitig bootfähig zu machen. Hierzu ein Beispiel, wobei Zeilen, die mit
einem <CODE>#</CODE> beginnen, als Kommentare verstanden werden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# LILO Konfigurationsdatei
# von Peter Sütterlin, September 1996
#
# Start des globalen Abschnittes
boot = /dev/hda
message=/etc/lilo.bootmenue
compact
prompt
timeout = 100
image = /vmlinuz
label = 1
root = /dev/hda2
image = /vmlinuz_old
label = 2
root = /dev/hda2
other = /dev/hda1
label = 3
table = /dev/hda
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Der erste Eintrag gibt an, wo LILO installiert werden soll;
hier auf der ersten Festplatte. In der zweiten Zeile wird eine Datei
angegeben, deren Inhalt LILO beim Laden am Bildschirm ausgibt.
In dieser Datei steht etwa folgendes:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
^LBitte eine der angegebenen Konfigurationen auswaehlen:
Def. --> 1 Linux (neuer Kernel)
2 Linux (alter Kernel)
3 MSDOS 6.0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Das <CODE>^L</CODE> (<CODE>CONTROL-L</CODE>) am Anfang bewirkt dabei, daß der
Bildschirm gelöscht wird. Der dritte Eintrag (<CODE>compact</CODE>)
optimiert den Ladevorgang. Das <CODE>prompt</CODE> in der nächsten Zeile
bewirkt, daß LILO auf eine Eingabe des Benutzers wartet, der nun
auswählen kann, welche der drei Konfigurationen er starten will. Auf
diese Eingabe wartet LILO 10 Sekunden (<CODE>timeout = 100</CODE>)
und lädt dann automatisch den ersten Eintrag der folgenden Liste.
Diese Liste enthält hier drei Einträge. Die ersten beiden beginnen mit
<CODE>image =</CODE> und weisen damit auf Linux-Systeme hin. Der dritte
Eintrag (<CODE>other = /dev/hda1</CODE>) betrifft ein nicht näher
spezifiziertes Betriebssystem, dessen Boot-Partition <CODE>/dev/hda1</CODE>
ist; in diesem Fall ist es eine DOS-Partition.</P>
<P>Aus diesen drei Möglichkeiten kann man nun, wie in der Meldung
angegeben, durch Drücken der Tasten <CODE>1</CODE>, <CODE>2</CODE> oder
<CODE>3</CODE>, entsprechend den Einträgen <CODE>label=</CODE> in den einzelnen
Abschnitten, eine auswählen.</P>
<P>Dies beschreibt nur äußerst knapp die unzähligen Möglichkeiten, die LILO
bietet. Wer sich näher darüber informieren will, sollte die sehr
ausführliche Dokumentation, die mit LILO mitgeliefert wird, studieren.</P>
<HR>
<A HREF="DE-Kernel-HOWTO-5.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-Kernel-HOWTO-3.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-Kernel-HOWTO.html#toc4"><IMG SRC="toc.png" ALT="Inhalt"></A>
</BODY>
</HTML>
|