8.3. Linux-2.6.8.1

Das Linux-Paket enthält den Kernel und die Header-Dateien.

Geschätzte Kompilierzeit: 4.20 SBU

Ungefähr benötigter Festplattenplatz: 181 MB

Linux 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 nur ein paar Schritte—Konfigurieren, kompilieren und installieren. Wenn Sie die Methode der Installation in diesem Buch nicht mögen, schauen Sie in der README-Datei im Kernel Quellordner nach alternativen Methoden.

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.

Ausserdem müssen Sie sicherstellen, dass der Kernel keine Hotplug-Ereignisse in die Anwenderschicht sendet, bevor diese nicht bereit ist:

sed -i 's@/sbin/hotplug@/bin/true@' kernel/kmod.c

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

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

Wenn Sie zum Beispiel eine holländische Tastatur haben, würden Sie /usr/share/kbd/keymaps/i386/qwerty/nl.map.gz benutzen.

Richten Sie den Kernel mit der menügeführten Benutzeroberfläche ein:

make menuconfig

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

[Hinweis]

Hinweis

Wenn Sie den Kernel einrichten, schalten Sie „Support for hotpluggable devices“ im Menü „General Setup“ ein. Dadurch werden die von udev benötigten Hotplug-Ereignisse gesendet um den Ordner /dev mit Gerätedateien zu füllen.

Wenn Sie möchten, können Sie die Kernelkonfiguration überspringen und einfach die Kernel-Konfigurationsdatei .config von Ihrem Host-System nach linux-2.6.8.1 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 frisch einrichten.

Um Unterstützung für POSIX shared memory zu haben, müssen Sie im Kernel die Option „Virtual memory file system support“ einschalten. Diese finden Sie im Menü „File systems“ und ist üblicherweise eingeschaltet.

Die LFS-Bootskripte gehen davon aus, dass entweder „Support for Host-side USB“ und „USB device filesystem“ direkt in den Kernel einkompiliert wurden, oder nichts von beidem kompiliert wurde. Die Bootskripte werden nicht richtig funktionieren, wenn die Unterstützung als Modul kompiliert wurde (usbcore.ko).

[Hinweis]

Hinweis

NPTL setzt voraus, dass der Kernel mit GCC 3.x kompiliert wird, in diesem Fall 3.4.1. Es ist bekannt, dass das Kompilieren mit 2.95.x Fehler in der Glibc Test-suite hervorruft, daher wird nicht empfohlen, den Kernel mit gcc 2.95.x zu kompilieren.

Kompilieren Sie das Kernel-Abbild und die Module:

make

Wenn Sie Kernel-Module verwenden, brauchen Sie die Datei /etc/modules.conf. Informationen betreffend Module und Kernelkonfiguration im allgemeinen finden Sie in der Kernel-Dokumentation im Ordner linux-2.6.8.1/Documentation. Die Man-page von modules.conf könnte für Sie auch von Interesse sein.

Seien Sie vorsichtig, wenn Sie andere Dokumentationen lesen, 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

Wenn Sie viele Module aber dafür wenig Festplattenspeicher haben, können Sie die Module strippen und komprimieren. Für die meisten ist das Komprimieren den Aufwand nicht wert, aber wenn Sie wirklich Platzprobleme haben, dann schauen Sie unter http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html.

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 zu der Kerneldatei variiert, abhängig von der benutzten Plattform auf der Sie arbeiten. Geben Sie das folgende Kommando ein, um den Kernel zu installieren:

cp arch/i386/boot/bzImage /boot/lfskernel-2.6.8.1

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 System.map /boot/System.map-2.6.8.1

.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 .config /boot/config-2.6.8.1

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 hat dann auch Schreibrechte darauf.

Unter diesem Aspekt möchten Sie vielleicht chown -R 0:0 auf den Ordner linux-2.6.8.1 anwenden damit alle Dateien dem Benutzer root gehören.

8.3.2. Inhalt von Linux

Installierte Dateien: Kernel, Kernel-Header und System.map

Kurze Beschreibungen

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.

Kernel Header

Definieren die Schnittstelle zu den Diensten des Kernels. Die Header in dem Ordner include Ihres Systems sollten immer diejenigen sein, mit denen die Glibc kompiliert wurde und sollten daher bei einem Kernelupgrade nicht ersetzt werden.

System.map

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