A.2. Erstellen des Kernels

Um einen benutzerdefinierten Kernel zu erstellen (führen Sie alle Schritte als root aus):

AnmerkungAnmerkung
 

In diesem Beispiel wird 2.4.21-1.1931.2.399.ent als Kernel-Version verwendet (Ihre Kernel-Version könnte anders sein). Um Ihre Kernel-Version zu bestimmen, geben Sie den Befehl uname -r ein und ersetzen Sie 2.4.21-1.1931.2.399.ent mit Ihrer Kernel-Version.

  1. Öffnen Sie einen Shell-Prompt, und wechseln Sie zum Verzeichnis /usr/src/linux-2.4/. Ab diesem Zeitpunkt müssen alle Befehle von diesem Verzeichnis ausgeführt werden.

  2. Es ist wichtig, dass Sie vor dem Erstellen eines Kernels sicherstellen, dass sich der Quellcodebaum in einem vordefinierten Zustand befindet. Daher ist es empfehlenswert, dass Sie mit dem Befehl make mrproper beginnen. Auf diese Weise werden alle Konfigurationsdateien zusammen mit allen noch im Quellcodebaum verstreuten Überresten von vorangegangenen Kernelkompilationen entfernt. Wenn Sie bereits eine funktionierende Konfigurationsdatei /usr/src/linux-2.4/.config besitzen, die Sie verwenden möchten, erstellen Sie in einem anderen Verzeichnis eine Sicherungskopie, bevor Sie diesen Befehl ausführen, und kopieren Sie sie wieder zurück, nachdem Sie den Befehl durchgeführt haben.

  3. Es wird empfohlen, die Konfiguration des Red Hat Enterprise Linux Standard-Kernels als Ausgangspunkt zu verwenden. Hierfür kopieren Sie die Konfigurationsdatei für die Systemarchitektur vom /usr/src/linux-2.4/configs/ Verzeichnis nach /usr/src/linux-2.4/.config. Sollte das System mehr als einen Prozessor haben, kopieren Sie die Datei, die das Schlüsselwort smp enthält. Hat das System jedoch mehr als vier Gigabytes Speicher, kopieren Sie die Datei mit dem Schlüsselwort hugemem.

  4. Als nächstes können Sie die Einstellungen benutzerdefinieren. Die empfohlene Methode ist das Ausführen des Befehls make menuconfig, um Linux Kernel Configurationzu starten. Das X Window System ist nicht benötigt.

    Nach Abschluss der Konfiguration, klicken Sie auf Beenden und wählen Sie Beenden, um die neueKonfigurationsdatei des Kernel zu erstellen (/usr/src/linux-2.4/.config).

    Auch wenn keine Änderungen an den Einstellungen vorgenommen wurden, ist das Ausführen des Befehls make menuconfig (oder einer der anderen Methoden für die Kernelkonfiguration) vor dem Fortfahren erforderlich.

    Andere Methoden der Kernelkonfiguration sind u.a.:

    • make config — Ein interaktives Textprogramm. Komponenten werden im linearen Format dargestellt und nacheinander beantwortet. Diese Methode erfordert nicht das X Window System und Antworten auf vorhergehende Fragen können nicht geändert werden.

    • make xconfig — Diese Methode erfordert das X Window System und das Paket tk. Diese Methode wird nicht empfohlen, da das Einlesen der Konfigurationsdatei unverlässlich ist.

    • make oldconfig — Dies ist ein nicht-interaktives Skript, dass die bestehende Konfigurationsdatei (.config) einliest und lediglich die Fragen stellt, die hinzugekommen sind.

    AnmerkungAnmerkung
     

    Um kmod und Kernelmodule zu verwenden, müssen Sie mit Yes zu kmod support und module version (CONFIG_MODVERSIONS) support während der Konfiguration antworten.

  5. Nachdem Sie eine /usr/src/linux-2.4/.config-Datei erstellt haben, wählen Sie den Befehl make dep, um alle Abhängigkeiten korrekt einzustellen.

  6. Wählen Sie den Befehl make clean, um den Quellcodebaum für das Bauen des Kernels vorzubereiten.

  7. Es wird empfohlen, dem benutzerdefinierten Kernel, den Sie erstellen, eine geänderte Versionsnummer zu geben, damit Sie den vorhandenen Kernel nicht überschreiben. Die hier beschriebene Methode ist die einfachste im Falle eines Ausrutschers. Wenn Sie an anderen Möglichkeiten interessiert sind, finden Sie Details unter http://www.redhat.com/mirrors/LDP/HOWTO/Kernel-HOWTO.html oder in der Datei Makefile in /usr/src/linux-2.4/.

    Standardmäßig enthält /usr/src/linux-2.4/Makefile das Wort custom (benutzerdefiniert) am Ende der Zeile, die mit EXTRAVERSION anfängt. Durch das Anfügen der Zeichenfolge können Sie gleichzeitig den alten und den neuen Kernel, Version 2.4.21-1.1931.2.399.entcustom) auf Ihrem System behalten.

    Sie können auch das Datum an das Ende der Zeichenfolge anhängen, um dem Kernel einen "eindeutigen" Namen zu verleihen.

  8. Für x86, AMD64 und Intel® EM64T-Architekturen, kompilieren und linken Sie den Kernel mit make bzImage. Für die Itanium-Architektur, kompilieren und linken Sie den Kernel mit make compressed. Für S/390- und zSeries-Architekturen, kompilieren und linken Sie den Kernel mit make image. Für iSeries- und pSeries-Architekturen, kompilieren und linken Sie den Kernel mit make boot.

  9. Erstellen Sie alle konfigurierten Module mit make modules.

  10. Verwenden Sie den Befehl make modules_install, um die Kernel-Module zu installieren (auch wenn Sie keine erstellt haben). Beachten Sie den Unterstrich (_) im Befehl. Auf diese Weise werden die Kernel-Module in den Verzeichnispfad /lib/modules/<KERNELVERSION>/kernel/drivers installiert (wobei KERNELVERSION für die in Makefile angegebene Version steht). In diesem Beispiel wäre dies /lib/modules/2.4.21-1.1931.2.399.entcustom/kernel/drivers/.

  11. Kopieren Sie mit make install den neuen Kernel und die verknüpften Dateien in die entsprechenden Verzeichnisse.

    Mit diesem Befehl installieren Sie nicht nur die Kerneldateien in das /boot-Verzeichnis, sondern führen auch das Skript /sbin/new-kernel-pkg aus, das ein neues initrd-Image erstellt und neue Einträge zur Bootloader-Konfigurationsdatei hinzufügt.

    Wenn das System einen SCSI-Adapter hat und den SCSI-Treiber als Modul kompiliert bzw. wenn Sie den Kernel mit ext3-Unterstützung als Modul erstellt haben (Standard in Red Hat Enterprise Linux), ist das initrd-Image erforderlich.

  12. Sie sollten die Änderungen am initrd-Image und dem Bootloader überprüfen, und sicherstellen, dass die Custom-Version des Kernels anstelle von 2.4.21-1.1931.2.399.ent verwendet wird, auch wenn diese automatisch für Sie erstellt wurden. Einzelheiten finden Sie unter Abschnitt 39.5 und Abschnitt 39.6.