1
1
<!-- retain these comments for translator revision tracking -->
2
<!-- original version: 31905 -->
2
<!-- original version: 40980 -->
4
4
<sect1 id="kernel-baking"><title>Einen neuen Kernel kompilieren</title>
7
7
Warum sollte jemand einen neuen, eigenen Kernel kompilieren wollen?
8
Es ist oft nicht nötig, da der Standardkernel in Debian die meisten
8
Dies ist oft nicht nötig, da der Standardkernel in Debian die meisten
9
9
Konfigurationen bedient. Auch bietet Debian häufig verschiedene
10
10
alternative Kernel an. Sie sollten also vielleicht erst prüfen, ob ein
11
11
alternatives Kernel-Image verfügbar ist, das besser zu Ihrer Hardware
62
62
Um auf die debiansche Art einen Kernel zu kompilieren, benötigen
63
63
Sie ein paar Pakete:
64
64
<classname>fakeroot</classname>, <classname>kernel-package</classname>,
65
<phrase condition="classic-kpkg"><classname>kernel-source-&kernelversion;</classname>
66
(das war die neueste Version zum Zeitpunkt, als dies geschrieben wurde)</phrase>
67
<phrase condition="common-kpkg"><classname>linux-source-2.6</classname></phrase>
65
<classname>linux-source-2.6</classname>
68
66
und ein paar weitere, die vielleicht schon installiert sind
69
(<filename>/usr/share/doc/kernel-package/README.gz</filename> enthält die
67
(<filename>/usr/share/doc/kernel-package/README.gz</filename> enthält
74
72
Diese Methode erstellt ein .deb-Paket aus den Kernelquellen und, falls
75
73
Sie Nicht-Standard-Module verwenden, auch ein synchrones abhängiges .deb für diese
76
Module. Es ist ein besserer Weg, um die Kernel-Images zu verwalten
74
Module. Dies ist ein besserer Weg, um die Kernel-Images zu verwalten
77
75
(verglichen mit der Nicht-Debian-Methode, einen Kernel zu erzeugen);
78
76
<filename>/boot</filename> enthält den Kernel, die dazugehörige
79
77
System.map und ein Log der aktiven Konfigurationsdatei für den Bau des
85
83
<emphasis>müssen</emphasis>, aber wir meinen, dass es erheblich sicherer
86
84
und einfacher ist, das Paketsystem zur Verwaltung der Kernel zu verwenden.
87
85
Sie können Ihre Kernelquellen auch direkt von Linus beziehen statt aus
89
<phrase condition="classic-kpkg"><classname>kernel-source-&kernelversion;</classname>,</phrase>
90
<phrase condition="common-kpkg"><classname>linux-source-2.6</classname>,</phrase>
86
dem Paket <classname>linux-source-2.6</classname>
91
87
und trotzdem die <classname>kernel-package</classname>-Methode zum
92
88
Kompilieren nutzen.
96
92
Sie finden eine komplette Dokumentation zur Nutzung von
97
93
<classname>kernel-package</classname> unter
98
<filename>/usr/share/doc/kernel-package</filename>. Dieses Kapitel gibt
99
nur eine kurze Einführung.
94
<filename>/usr/share/doc/kernel-package</filename>. Hier im
95
Installationshandbuch geben wir nur eine kurze Einführung.
103
Wir gehen hier davon aus, dass Sie freien Zugriff auf Ihren Rechner haben
99
Wir gehen davon aus, dass Sie freien Zugriff auf Ihren Rechner haben
104
100
und die Kernelquellen irgendwo in Ihr Home-Verzeichnis entpacken werden<footnote>
115
111
&kernelversion; ist. Vergewissern Sie sich, dass Sie sich in dem Verzeichnis
116
112
befinden, in das Sie die Kernelquellen entpacken möchten und extrahieren Sie
118
<phrase condition="classic-kpkg"><userinput>tar xjf
119
/usr/src/kernel-source-&kernelversion;.tar.bz2</userinput></phrase>
120
<phrase condition="common-kpkg"><userinput>tar xjf
121
/usr/src/linux-source-&kernelversion;.tar.bz2</userinput></phrase>.
114
<userinput>tar xjf /usr/src/linux-source-&kernelversion;.tar.bz2</userinput>.
122
115
Wechseln Sie in das neu erstellte Verzeichnis
123
<phrase condition="classic-kpkg"><filename>kernel-source-&kernelversion;</filename></phrase>
124
<phrase condition="common-kpkg"><filename>linux-source-&kernelversion;</filename></phrase>.
116
<filename>linux-source-&kernelversion;</filename>.
130
122
andernfalls nehmen Sie <userinput>make menuconfig</userinput> (hierzu muss
131
123
das Paket <classname>libncurses5-dev</classname> installiert sein). Nehmen Sie sich
132
124
die Zeit, die Onlinehilfe zu lesen, und wählen Sie sorgfältig die Optionen aus.
133
Wenn Sie Zweifel haben, ist es typischerweise besser, den zweifelhaften
125
Wenn Sie Zweifel haben, ist es typischerweise am besten, den zweifelhaften
134
126
Gerätetreiber mit in den Kernel zu integrieren (ein Gerätetreiber ist ein
135
127
Stück Software, das Hardware-Peripherie verwaltet, wie z.B. Ethernetkarten,
136
128
SCSI-Controller und so weiter). Seien Sie vorsichtig: andere Optionen, die nicht
151
143
Kompilieren Sie jetzt den Kernel mit:
152
<userinput>fakeroot make-kpkg --revision=custom.1.0 kernel_image</userinput>.
144
<userinput>fakeroot make-kpkg --initrd --revision=custom.1.0 kernel_image</userinput>.
153
145
Die Versionsnummer <quote>1.0</quote> können Sie nach Belieben ändern. Sie wird nur
154
146
von Ihnen selbst verwendet, um Ihre verschiedenen Kernel zu verwalten.
155
147
Ebenso können Sie jedes andere Wort statt <quote>custom</quote> verwenden (z.B. den
156
148
Host-Namen des Rechners). Die Kernelkompilierung könnte eine ganze Weile dauern,
157
149
abhängig von der Leistungsfähigkeit Ihres Rechners.
159
</para><para condition="supports-pcmcia">
161
Wenn Sie PCMCIA-Support benötigen, müssen Sie ebenfalls das
162
<classname>pcmcia-source</classname>-Paket installieren. Entpacken Sie die
163
gzip-tar-Datei als root in das Verzeichnis <filename>/usr/src</filename>
164
(es ist wichtig, dass die Module dort gefunden werden, wo sie gesucht werden,
165
nämlich in <filename>/usr/src/modules</filename>). Führen Sie dann als root
166
<userinput>make-kpkg modules_image</userinput> aus.
170
153
Sobald die Kompilierung beendet ist, können Sie Ihren eigenen Kernel wie
171
ein Paket installieren. Tippen Sie als root <userinput>dpkg -i
172
../kernel-image-&kernelversion;-<replaceable>subarchitecture</replaceable>_custom.1.0_&architecture;.deb</userinput>
173
ein. Der Teil <replaceable>subarchitecture</replaceable> im Dateinamen ist eine
154
jedes andere Paket installieren. Tippen Sie als root ein:
156
../linux-image-&kernelversion;-<replaceable>subarchitecture</replaceable>_custom.1.0_&architecture;.deb</userinput>.
157
Der Teil <replaceable>subarchitecture</replaceable> im Dateinamen ist eine
174
158
optionale Bezeichnung für die Unterarchitektur, <phrase arch="i386"> wie
175
z.B. <quote>i586</quote>, </phrase>
159
z.B. <quote>686</quote>, </phrase>
176
160
abhängig davon, welche Kerneloptionen Sie gesetzt haben.
177
<userinput>dpkg -i kernel-image...</userinput> installiert den Kernel
161
<userinput>dpkg -i ...</userinput> installiert den Kernel
178
162
zusammen mit ein paar anderen dazugehörigen Dateien. Zum Beispiel wird
179
163
die <filename>System.map</filename> korrekt installiert
180
164
(dies ist nützlich für die Fehlersuche bei Kernelproblemen) und
181
165
<filename>/boot/config-&kernelversion;</filename> wird installiert,
182
sie enthält Ihre aktuelle Konfiguration. Ihr neues
183
<classname>kernel-image-&kernelversion;</classname>-Paket ist ebenfalls
184
clever genug, automatisch eine Aktualisierung Ihres Bootloaders zu starten,
185
die es Ihnen erlaubt, den neuen Kernel zu booten, ohne den Bootloader manuell
186
neu konfigurieren zu müssen. Wenn Sie auch ein Modul-Paket erzeugt
187
haben, weil Sie z.B. PCMCIA benötigen, müssen Sie auch dieses Paket noch
166
sie enthält Ihre aktuelle Konfiguration. Ihr neues Kernelpaket ist
167
ebenfalls clever genug, automatisch Ihren Bootloader zu aktualisieren,
168
so dass der neue Kernel benutzt wird. Falls Sie auch ein Modul-Paket
169
erstellt haben, müssen Sie auch dieses Paket noch installieren.
198
<phrase condition="etch">Mehr Infos über Debiankernel und das Kompilieren
199
von Kernel finden Sie im <ulink url="&url-kernel-handbook;">Debian Linux Kernel
200
Handbook</ulink>.</phrase>
179
Mehr Infos über Debiankernel und das Kernel kompilieren finden Sie im
180
<ulink url="&url-kernel-handbook;">Debian Linux Kernel Handbook</ulink>.
202
182
Die tolle Dokumentation in <filename>/usr/share/doc/kernel-package</filename>
203
183
enthält zusätzliche Informationen über <classname>kernel-package</classname>.