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
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
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.
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.