8.3. Linux-2.6.11.12

Das Paket Linux enthält den Linux-Kernel.

Geschätzte Kompilierzeit: 4.20 SBU
Ungefähr benötigter Festplattenplatz: 181 MB
Die Installation ist abhängig von: Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl und Sed

8.3.1. Installation des Kernel

Kompilieren und Installieren des Kernels sind im Grunde nur ein paar Schritte — Konfigurieren, kompilieren und installieren. Falls Sie die hier benutzte Methode nicht mögen, schauen Sie in der Datei README im Kernel-Quellordner nach Alternativen.

Bereiten Sie den Kompiliervorgang mit dem folgenden Kommando vor:

make mrproper

Hierdurch wird sichergestellt, dass der Kernel-Baum absolut sauber ist. Das Kernel-Team empfiehlt, dieses Kommando vor jedem Kompilieren des Kernels auszuführen. Sie sollten sich nicht darauf verlassen, dass die Quellen nach dem Entpacken sauber sind.

Wenn Sie sich in Abschnitt 7.6, „Einrichten der Linux Konsole,“ entschieden haben, die Tastaturzuweisungstabelle in den Kernel einzukompilieren, dann führen Sie jetzt dieses Kommando aus:

loadkeys -m /usr/share/kbd/keymaps/[Pfad zur keymap] > \
    drivers/char/defkeymap.c

Wenn Sie zum Beispiel eine deutsche Tastatur haben, würden Sie /usr/share/kbd/keymaps/i386/qwertz/de-latin1-nodeadkeys.map.gz als Pfad zur Keymap benutzen.

Richten Sie den Kernel nun mit der menügeführten Oberfläche ein. In BLFS finden Sie unter http://www.linuxfromscratch.org/blfs/view/svn/longindex.html#kernel-config-index einige Informationen zu bestimmten Kernel-Voraussetzungen von Software außerhalb von LFS:

make menuconfig

make oldconfig könnte in einigen Fällen besser geeignet sein. Schauen Sie in die Datei README um mehr Informationen zu erhalten.

Wenn Sie möchten, können Sie die Kernelkonfiguration überspringen und einfach die Kernel-Konfigurationsdatei .config von Ihrem Host-System nach linux-2.6.11.12 kopieren (falls sie verfügbar ist). Das wird allerdings nicht empfohlen, Sie sind besser dran, wenn Sie alle Konfigurationsmenüs durchsehen und Ihre eigene Kernelkonfiguration einrichten.

[Anmerkung]

Anmerkung

NPTL setzt voraus, dass der Kernel mit GCC 3.x oder neuer kompiliert wird; in diesem Fall 3.4.3. Wir raten davon ab, den Kernel mit GCC 2.95.x zu kompilieren, da dies Fehler in der Glibc Testsuite verursacht. Leider ist die Kernel-Dokumentation veraltet und empfiehlt immer noch GCC 2.95.3 als bevorzugten Compiler.

Kompilieren Sie das Kernel-Abbild und die Module:

make

Wenn Sie Kernel-Module verwenden, brauchen Sie wahrscheinlich die Datei /etc/modules.conf. Informationen zu Modulen und Kernelkonfiguration im Allgemeinen finden Sie in der Kernel-Dokumentation im Ordner linux-2.6.11.12/Documentation. Auch modules.conf(5) könnte für Sie von Interesse sein.

Seien Sie beim Lesen anderer Dokumentationen bitte vorsichtig, denn die meisten beziehen sich noch auf die 2.4er Kernel-Serie. Soweit wir wissen, sind Konfigurationsprobleme zu Hotplug und Udev noch nicht dokumentiert. Das Problem ist, dass Udev eine Gerätedatei nur erzeugt, wenn Hotplug oder ein Anwender-Skript ein zugehöriges Modul in den Kernel läd. Aber nicht alle Module sind von Hotplug automatisch erkennbar. Anweisungen in /etc/modprobe.conf wie diese funktionieren nicht:

alias char-major-XXX irgendein-Modul

Aufgrund der Komplikationen mit Hotplug, Udev und Modulen, empfehlen wir dringend, mit einem vollkommen nicht-modularen Kernel zu beginnen. Insbesondere, wenn Sie das erste mal mit Udev zu tun haben.

Installieren Sie die Module, falls Ihre Kernelkonfiguration solche verwendet:

make modules_install

Das Kompilieren des Kernel ist nun abgeschlossen, aber einige der erzeugten Dateien befinden sich noch im Quellordner. Um die Installation abzuschließen, müssen Sie noch ein paar Dateien in den Ordner /boot kopieren.

Der Pfad zur Kerneldatei variiert, abhängig von der benutzten Plattform auf der Sie arbeiten. Das folgende Kommando geht von einem x86-System aus:

cp -v arch/i386/boot/bzImage /boot/lfskernel-2.6.11.12

System.map ist eine Symboldatei für den Kernel. Sie ordnet Funktions-Einstiegspunkte jeder Funktion in der Kernel-API sowie Adressen der Kernel-Datenstrukturen zu. Geben Sie das folgende Kommando ein, um die Datei zu installieren:

cp -v System.map /boot/System.map-2.6.11.12

.config ist die Kernel-Konfigurationsdatei, die durch das obige Kommando make menuconfig erzeugt wurde. Sie enthält alle Konfigurationsoptionen für den soeben kompilierten Kernel. Es ist sinnvoll, diese Datei aufzubewahren:

cp -v .config /boot/config-2.6.11.12

Beachten Sie bitte, dass die Dateien im Kernel-Quellordner nicht root gehören. Immer wenn Sie ein Paket als root-Benutzer entpacken (so wie Sie es hier im chroot tun), erhalten die entpackten Dateien die Benutzer- und Gruppen ID desjenigen, der das Archiv erstellt hat. Das ist üblicherweise für normale Pakete kein Problem weil Sie den Quellordner nach der Installation löschen. Aber die Linux-Quellen liegen oft sehr lange auf Ihrem Computer, daher ist die Chance groß, dass ein zukünftiger Benutzer auf Ihrem System die Benutzer-ID erhält, die Ihre Kernel-Quellen derzeit haben, und damit wäre er der Besitzer dieser Dateien und hätte dann auch Schreibrechte darauf.

Wenn Sie die Kernelquellen aufbewahren möchten, sollten Sie chown -R 0:0 auf den Ordner linux-2.6.11.12 anwenden. So stellen Sie sicher, dass alle Dateien dem Benutzer root gehören.

[Warnung]

Warnung

Einige Kerneldokumentationen empfehlen das Erzeugen eines Links von /usr/src/linux auf den Ordner mit den Kernelquellen. Dies bezieht sich aber nur auf Kernel vor der 2.6er Serie zu und darf nicht in einem LFS-System angewendet werden. Es verursacht Probleme beim Kompilieren von Paketen die Sie vielleicht im Nachhinein noch installieren möchten.

Die Header in Ihrem Systemordner include sollten immer diejenigen sein, mit denen die Glibc kompiliert wurde (also die Linux-Libc-Header) und dürfen daher bei einem Kernelupgrade keinesfalls durch die neuen Kernel-Header ersetzt werden.

8.3.2. Inhalt von Linux

Installierte Dateien: config-2.6.11.12, lfskernel-2.6.11.12 und System.map-2.6.11.12

Kurze Beschreibungen

config-2.6.11.12

Enthält alle ausgewählten Konfigurationsoptionen für den Kernel.

lfskernel-2.6.11.12

Dies ist der Kernel, der Motor Ihres GNU/Linux-Systems. Nach dem Einschalten Ihres Rechners ist der Kernel der erste Teil des Betriebssystems, der geladen wird. Er erkennt und initialisiert alle Komponenten Ihrer Computer-Hardware und macht diese Komponenten für die Software verfügbar. Er verwandelt eine einzelne CPU in eine Multitasking-Maschine die unzählige Programme scheinbar zur gleichen Zeit ausführen kann.

System.map-2.6.11.12

Enthält eine Liste von Adressen und Symbolen. Sie ordnet Einstiegspunkte und Adressen aller Funktionen und Datenstrukturen dem entsprechenden Kernel zu.