SelfLinux » Überblick über Linux » Der Linux-Kernel » Teil 2 SelfLinux-0.8.0
« zurück Was ist X? »
SelfLinux logo
OrdnerDer Linux-Kernel Revision: 1.1.2.7
Autor: Erwin Dogs
Layout: Matthias Hagedorn
Lizenz: GFDL

4 Erzeugen eines eigenen Kernels


4.1 Voraussetzungen

Um einen eigenen Kernel zu übersetzen, brauchen Sie einen C-Compiler, der die Quelltexte ins Binärformat übersetzt. Ob der C-Compiler installiert ist, erfahren Sie mit dem folgenden Befehl:

root@linux / # gcc --version

oder

root@linux / # cc --version

Nach Eingabe dieses Befehls sollte die Versionsnummer auf dem Schirm erscheinen.



4.2 Holen der Kernel-Quellen

Nun brauchen Sie noch die aktuellen Kernel-Quellen. Die Quellen des unveränderten Original-Kernels finden Sie auf

http://www.kernel.org

Schauen Sie auch auf der Downloadseite ihres Distributors, der oft eigene (angepaßte) Versionen des Kernels im RPM- oder DEB-Format bereitstellt.

Die Quelltexte des Kernels sollten Sie nach /usr/src/linux entpacken (bei der Installation eines Paketes wird das oft bereits erledigt).

Wechseln Sie in das /usr/src Verzeichnis mit cd /usr/src, um zu schauen, ob dieses Verzeichnis existiert. Wenn ja, kann es auch schon losgehen.

Wenn Sie die aktuelle Version des Originalkernels von http://www.kernel.org heruntergeladen haben, kopieren Sie die Datei linux-2.x.xx.tar.bz2 in das Verzeichnis /usr/src und entpacken Sie das Archiv mit dem folgenden Befehl:

root@linux /usr/src/ # tar xvfj linux-2.x.xx.tar.bz2

Nach dem Entpacken ist das Verzeichnis /usr/src/linux entstanden.



4.3 Hinweis zur Versionsnummer des Kernels

Es werden im Grunde zwei Arten von Kernels unterschieden. Das sind zum einen die stabilen Kernel, zum anderen die Entwickler-Kernel, an denen aktuell gearbeitet wird und die nicht stabil genug für die Benutzung sind. Diese unterscheiden sich anhand der Versionsnummer. Eine gerade Zahl an der zweiten Stelle der Versionsnummer kennzeichnet den stabilen Kernel-Zweig, eine ungerade den aktuellen Entwickler-Kernel. Also sind etwa 2.0, 2.2 und 2.4 stabile Kernel. Die Versionen 2.1, 2.3 und 2.5 dagegen sind Entwickler-Kernel.

Version 2.5 wird irgendwann mit den Änderungen und Erweiterung eingefroren, das heißt, es werden keine neuen Features hinzugefügt und getestet. Wenn die Testphase abgeschlossen ist, wird der Kernel als stabil gekennzeichnet und erhält die Versionsnummer 2.6 (oder möglicherweise auch 3.0).

Die Zahl, die darauf folgt, ist der Patchlevel des Kernels. Mit jedem Patchlevel sind Korrekturen in den stabilen Kernel eingeflossen und geben somit Auskunft über die Aktualität des Kernels.



4.4 Konfiguration des Kernels

Sie haben im wesentlichen drei Möglichkeiten, einen neuen Kernel zu konfigurieren.

  • make config ist die spartanischste von allen: innerhalb des Konsolenfensters werden dem Benutzer Fragen gestellt, die er einzeln beantworten muss. Da dies mit der Zeit sehr umfangreich und unübersichtlich geworden ist, ist diese Methode nicht zu empfehlen.
  • make menuconfig stellt ein grafisches Menü in einer Konsole bereit. In diesem Menü kann man Konfigurationsoptionen auswählen. Meistens werden die Möglichkeiten [X] [ ] [M] (aktiviert, deaktiviert und als Kernelmodul kompiliert) angeboten. Um diesen Weg zu nutzen, benötigt Ihr System die ncurses-Bibliothek, die jedoch von den meisten Distributionen von ganz allein installiert wird.
  • make xconfig bietet ebenfalls ein Auswahlmenü an, aber unter der XWindow-Oberfläche. Hierzu müssen Sie Tcl/Tk installiert haben.

make menuconfig in Aktion
make menuconfig in Aktion

Schauen Sie sich zunächst genau die Auswahloptionen an und vergleichen Sie, welche Hardware Sie in ihrem Computer haben (eventuell schauen Sie auch einmal in die Ausgaben von lspci und dmesg). Schauen Sie ggf. auf der Homepage des Herstellers nach, ob Sie eine Dokumentation zu Ihrer Hardware finden.

Nachdem Sie die Auswahlentscheidungen getroffen haben, können Sie Ihre Konfiguration speichern. Die Konfiguration wird dann in die Datei

/usr/src/linux/.config

geschrieben.



4.5 Übersetzung des Kernels

Nach der Konfiguration erfolgt die Übersetzung mit den Befehlen:

root@linux / # make dep
root@linux / # make clean
root@linux / # make bzImage
root@linux / # make modules
root@linux / # make modules_install


4.6 Installation des Kernels

Nach dem Kompilieren (die Kompilierungszeit ist abhängig von der Rechnenleistung Ihres Computers und kann mehrere Stunden oder auch nur einige Minuten dauern) kopieren Sie den Kernel in Ihre Boot-Partition bzw. Ihr /boot-Verzeichnis. Sichern Sie bitte vorher den funktionierenden Kernel! Eine Befehlsfolge könnte etwa wie folgt aussehen:

root@linux / # cd /usr/src/linux
root@linux / # cp /boot/vmlinuz /boot/vmlinuz.old
root@linux / # cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz
root@linux / # cp /boot/System.map /boot/System.map.old
root@linux / # cp System.map /boot

Um den neuen Kernel booten zu können, müssen Sie dem Bootloader noch mitteilen, wo er den neuen Kernel findet.

Öffnen Sie bei Verwendung von LILO die Datei /etc/lilo.conf mit einem Texteditor und fügen Sie Einträge der Form

/etc/lilo.conf
...
# Neuer Kernel:
image = /boot/vmlinuz
label = kernel_new

# Backup-Kernel:
image = /boot/vmlinuz.old
label = kernel_old
...
     
     

hinzu.

Nun führen Sie noch als root /sbin/lilo aus.



4.7 Starten des neuen Kernel

Nun können Sie ihren neuen Kernel booten. Geben Sie dazu als root

root@linux / # reboot

oder

root@linux / # shutdown -r now

ein.

Beim Erscheinen des Bootmenüs wählen Sie den Eintrag mit dem neuen Kernel aus. Damit bootet der Computer mit Ihrem neuen Kernel.

Sollte der Computer aus irgendwelchen Gründen nicht booten, so schauen Sie sich die Fehlermeldungen genau an, sie geben Aufschluß über die Ursachen. Resetten Sie in diesem Fall Ihren Computer und booten Sie ihn erneut mit dem alten Kernel. Sie finden die Fehlermeldungen, falls sie nicht ohnehin auf der Konsole ausgegeben wurden, in der Datei /var/log/messages.

Weitere Infos zum Erstellen eines eigenen Kernels (in englischer Sprache) finden Sie auch hier:

http://www.tldp.org/HOWTO/Kernel-HOWTO.html



« zurück Was ist X? »
Inhalt