| 1 |
<!-- retain these comments for translator revision tracking -->
|
| 2 |
<!-- original version: 23678 -->
|
| 3 |
|
| 4 |
<sect1 id="kernel-baking"><title>Einen neuen Kernel kompilieren</title>
|
| 5 |
<para>
|
| 6 |
|
| 7 |
Warum sollte jemand einen neuen Kernel kompilieren wollen?
|
| 8 |
Es ist oft nicht nötig, da der Standardkernel in Debian die meisten
|
| 9 |
Konfigurationen bedient. Allerdings kann es unter folgenden Umständen nützlich
|
| 10 |
sein, einen neuen Kernel zu kompilieren:
|
| 11 |
|
| 12 |
<itemizedlist>
|
| 13 |
<listitem><para>
|
| 14 |
|
| 15 |
spezielle Hardwareanforderungen bewältigen oder Hardwarekonflikte mit den
|
| 16 |
vorkompilierten Kernels
|
| 17 |
|
| 18 |
</para></listitem>
|
| 19 |
<listitem><para>
|
| 20 |
|
| 21 |
Hardware oder zusätzliche Optionen unterstützen, die im Standardkernel nicht
|
| 22 |
enthalten sind, wie z.B. APM oder SMP
|
| 23 |
|
| 24 |
</para></listitem>
|
| 25 |
|
| 26 |
<listitem arch="i386"><para>
|
| 27 |
|
| 28 |
Die »compact«- und »idepci«-Varianten haben keine Soundunterstützung.
|
| 29 |
Der »vanilla«-Kernel hat Sound, aber er könnte aus anderen Gründen
|
| 30 |
trotzdem nicht funktionieren.
|
| 31 |
|
| 32 |
</para></listitem>
|
| 33 |
<listitem><para>
|
| 34 |
|
| 35 |
den Kernel optimieren durch Entfernen von nicht benötigten Treibern,
|
| 36 |
um die Bootzeit zu verkürzen
|
| 37 |
|
| 38 |
</para></listitem>
|
| 39 |
<listitem><para>
|
| 40 |
|
| 41 |
Optionen des Kernels nutzen, die vom Standardkernel nicht unterstützt werden
|
| 42 |
(wie z.B. Netzwerk-Firewall)
|
| 43 |
|
| 44 |
</para></listitem>
|
| 45 |
<listitem><para>
|
| 46 |
|
| 47 |
einen aktualisierten oder Entwicklungskernel verwenden
|
| 48 |
|
| 49 |
</para></listitem>
|
| 50 |
<listitem><para>
|
| 51 |
|
| 52 |
seine Freunde beeindrucken, neue Sachen ausprobieren
|
| 53 |
|
| 54 |
</para></listitem>
|
| 55 |
</itemizedlist>
|
| 56 |
|
| 57 |
</para>
|
| 58 |
|
| 59 |
<sect2><title>Kernel-Image-Management</title>
|
| 60 |
<para>
|
| 61 |
|
| 62 |
Sie brauchen keine Angst davor zu haben, auszuprobieren, einen eigenen Kernel
|
| 63 |
zu kompilieren. Es macht Spaß und ist profitabel.
|
| 64 |
|
| 65 |
</para><para>
|
| 66 |
|
| 67 |
Um auf die debiansche Art einen Kernel zu kompilieren, benötigen
|
| 68 |
Sie ein paar Pakete: <classname>kernel-package</classname>,
|
| 69 |
<classname>kernel-source-&kernelversion;</classname> (dies war die neueste Version
|
| 70 |
zum Zeitpunkt, als dies geschrieben wurde), <classname>fakeroot</classname>
|
| 71 |
und ein paar weitere, die vielleicht schon installiert sind
|
| 72 |
(<filename>/usr/share/doc/kernel-package/README.gz</filename> enthält die
|
| 73 |
komplette Liste).
|
| 74 |
|
| 75 |
</para><para>
|
| 76 |
|
| 77 |
Diese Methode erstellt ein .deb-Paket aus den Kernelquellen und falls
|
| 78 |
Sie Nicht-Standard-Module verwenden auch ein synchrones .deb für diese
|
| 79 |
Module. Es ist ein besserer Weg, um die Kernel-Images zu verwalten
|
| 80 |
(verglichen mit der Nicht-Debian-Methode, einen Kernel zu erzeugen);
|
| 81 |
<filename>/boot</filename> enthält den Kernel, die dazugehörige
|
| 82 |
System.map und ein Log der aktiven Konfigurationsdatei für den Bau des
|
| 83 |
Kernels.
|
| 84 |
|
| 85 |
</para><para>
|
| 86 |
|
| 87 |
Beachten Sie, dass Sie Ihren Kernel nicht auf Debian-Art kompilieren
|
| 88 |
<emphasis>müssen</emphasis>, aber wir meinen, dass es erheblich sicherer
|
| 89 |
und einfacher ist, das Paketsystem zur Verwaltung der Kernel zu verwenden.
|
| 90 |
Sie können auch Ihre Kernelquellen direkt von Linus beziehen statt aus
|
| 91 |
dem <classname>kernel-source-&kernelversion;</classname>-Paket, aber
|
| 92 |
trotzdem die <classname>kernel-package</classname>-Methode zum
|
| 93 |
Kompilieren nutzen.
|
| 94 |
|
| 95 |
</para><para>
|
| 96 |
|
| 97 |
Sie finden eine komplette Dokumentation zur Nutzung von
|
| 98 |
<classname>kernel-package</classname> unter
|
| 99 |
<filename>/usr/share/doc/kernel-package</filename>. Dieses Kapitel gibt
|
| 100 |
nur eine kurze Einführung.
|
| 101 |
|
| 102 |
</para><para>
|
| 103 |
|
| 104 |
Wir gehen hier davon aus, dass sich Ihre Kernelquellen in
|
| 105 |
<filename>/usr/local/src</filename> befinden und dass Ihre Kernelversion
|
| 106 |
&kernelversion; ist. Erzeugen Sie als root ein Verzeichnis in
|
| 107 |
<filename>/usr/local/src</filename> und ändern Sie den Eigentümer des
|
| 108 |
Verzeichnisses auf Ihren normalen Nicht-Root-Benutzernamen.
|
| 109 |
Wechseln Sie als normaler Nicht-Root-Benutzer in das Verzeichnis,
|
| 110 |
wo Sie die Kernelquellen auspacken möchten
|
| 111 |
(<userinput>cd /usr/local/src</userinput>), extrahieren Sie die Kernelquellen
|
| 112 |
(<userinput>tar xjf /usr/src/kernel-source-&kernelversion;.tar.bz2</userinput>)
|
| 113 |
und wechseln Sie in das entstandene Verzeichnis
|
| 114 |
(<userinput>cd kernel-source-&kernelversion;/</userinput>).
|
| 115 |
|
| 116 |
</para><para>
|
| 117 |
|
| 118 |
Sie können jetzt Ihren Kernel konfigurieren. Führen Sie <userinput>make
|
| 119 |
xconfig</userinput> aus, wenn X11 installiert ist, konfiguriert ist und läuft,
|
| 120 |
andernfalls nehmen Sie <userinput>make menuconfig</userinput> (hierzu muss
|
| 121 |
das <classname>ncurses-dev</classname>-Paket installiert sein). Nehmen Sie sich
|
| 122 |
die Zeit, die Onlinehilfe zu lesen und wählen Sie sorgfältig die Optionen aus.
|
| 123 |
Wenn Sie Zweifel haben, ist es typischerweise besser, den zweifelhaften
|
| 124 |
Gerätetreiber mit in den Kernel zu integrieren (ein Gerätetreiber ist ein
|
| 125 |
Stück Software, das Hardware-Peripherie verwaltet, wie z.B. Ethernetkarten,
|
| 126 |
SCSI-Controller und so weiter). Seien Sie vorsichtig: andere Optionen, die nicht
|
| 127 |
zu einer bestimmten Hardwarekomponente gehören, sollten Sie auf dem Standardwert
|
| 128 |
belassen, wenn Sie sie nicht verstehen. Vergessen Sie nicht, den
|
| 129 |
``Kernel module loader'' unter ``Loadable module support'' zu aktivieren
|
| 130 |
(diese Option ist standardmäßig nicht aktiv). Tun Sie dies nicht, wird
|
| 131 |
Ihr Debian-System Probleme machen.
|
| 132 |
|
| 133 |
</para><para>
|
| 134 |
|
| 135 |
Säubern Sie den Kernelquellen-Baum und setzen Sie die
|
| 136 |
<classname>kernel-package</classname>-Parameter zurück. Dies erledigen Sie mit
|
| 137 |
<userinput>make-kpkg clean</userinput>.
|
| 138 |
|
| 139 |
</para><para>
|
| 140 |
|
| 141 |
Kompilieren Sie jetzt den Kernel mit:
|
| 142 |
<userinput>fakeroot make-kpkg --revision=custom.1.0 kernel_image</userinput>.
|
| 143 |
Die Versionsnummer ``1.0'' können Sie nach Belieben ändern. Sie wird nur
|
| 144 |
von Ihnen selbst verwendet, um Ihre verschiedenen Kernel zu verwalten.
|
| 145 |
Ebenso können Sie jedes andere Wort statt ``custom'' verwenden (z.B. den
|
| 146 |
Namen des Rechners). Die Kernelkompilierung könnte eine Weile dauern,
|
| 147 |
abhängig von der Leistungsfähigkeit Ihres Rechners.
|
| 148 |
|
| 149 |
</para><para condition="supports-pcmcia">
|
| 150 |
|
| 151 |
Wenn Sie PCMCIA-Support benötigen, müssen Sie ebenfalls das
|
| 152 |
<classname>pcmcia-source</classname>-Paket installieren. Entpacken Sie die
|
| 153 |
gzip-tar-Datei als root in das Verzeichnis <filename>/usr/src</filename>
|
| 154 |
(es ist wichtig, dass die Module dort gefunden werden, wo sie gesucht werden,
|
| 155 |
nämlich in <filename>/usr/src/modules</filename>). Führen Sie dann als root
|
| 156 |
<userinput>make-kpkg modules_image</userinput> aus.
|
| 157 |
|
| 158 |
</para><para>
|
| 159 |
|
| 160 |
Sobald die Kompilierung beendet ist, können Sie Ihren eigenen Kernel wie
|
| 161 |
ein Paket installieren. Tippen Sie als root <userinput>dpkg -i
|
| 162 |
../kernel-image-&kernelversion;-<replaceable>subarchitecture</replaceable>_custom.1.0_&architecture;.deb</userinput>
|
| 163 |
ein. Der Teil <replaceable>subarchitecture</replaceable> im Dateinamen ist eine
|
| 164 |
optionale Unterarchitektur, <phrase arch="i386"> wie z.B. ``i586'', </phrase>
|
| 165 |
abhängig davon, welche Kerneloptionen Sie gesetzt haben.
|
| 166 |
<userinput>dpkg -i kernel-image...</userinput> installiert den Kernel
|
| 167 |
zusammen mit ein paar anderen dazugehörigen Dateien. Zum Beispiel wird
|
| 168 |
die <filename>System.map</filename> korrekt installiert
|
| 169 |
(dies ist nützlich für die Fehlersuche bei Kernelproblemen) und
|
| 170 |
<filename>/boot/config-&kernelversion;</filename> wird installiert,
|
| 171 |
sie enthält Ihre aktuelle Konfiguration. Ihr neues
|
| 172 |
<classname>kernel-image-&kernelversion;</classname>-Paket ist ebenfalls
|
| 173 |
clever genug, automatisch eine Aktualisierung Ihres Bootloaders zu starten,
|
| 174 |
die es Ihnen erlaubt, den neuen Kernel zu booten, ohne den Bootloader
|
| 175 |
neu konfigurieren zu müssen. Wenn Sie auch ein Modul-Paket erzeugt
|
| 176 |
haben, weil Sie z.B. PCMCIA benötigen, müssen Sie auch dieses Paket noch
|
| 177 |
installieren.
|
| 178 |
|
| 179 |
</para><para>
|
| 180 |
|
| 181 |
Jetzt ist es Zeit, einen Systemneustart zu machen: lesen Sie aufmerksam
|
| 182 |
alle Warnungen, die die vorherigen Schritte unter Umständen erzeugt haben
|
| 183 |
und tippen dann <userinput>shutdown -r now</userinput> ein.
|
| 184 |
|
| 185 |
</para><para>
|
| 186 |
|
| 187 |
Mehr Informationen über <classname>kernel-package</classname> enthält
|
| 188 |
die tolle Dokumentation in <filename>/usr/share/doc/kernel-package</filename>.
|
| 189 |
|
| 190 |
</para>
|
| 191 |
</sect2>
|
| 192 |
</sect1>
|