Erstellen eines Modularen Kernels

Die Gebrauchsanweisungen in diesem Abschnitt dienen dazu, einen modularen Kernel zu erstellen. Wenn Sie daran interessiert sind, einen monolithischen Kernel zu erstellen, suchen Sie unter Abschnitt namens Erstellen eines monolithischen Kernels nach einer Erklärung für die verschiedenen Fragen beim Erstellen und Installieren eines monolithischen Kernels.

Die folgenden Punkte werden Ihnen dabei helfen, einen benutzerdefinierten Kernel für die x86 Architektur zu erstellen:

AnmerkungBitte beachten
 

In diesem Beispiel wird 2.4.2-0.1.21 als Kernel Version verwendet. Ihre Kernel-Version könnte anders sein. Um Ihre Kernel-Version festzulegen, geben Sie den Befehl uname -r ein. Ersetzen Sie 2.4.2-0.1.21 mit Ihrer Kernel-Version.

  1. Es ist von extremer Wichtigkeit, dass Sie im Notfall eine funktionsfähige Reserve- Bootdiskette haben. Wenn Sie beim Installieren keine Bootdiskette erstellt haben, nutzen Sie den Befehl mkbootdisk um nachträglich eine zu erstellen. Der Standardbefehl ähnelt dem mkbootdisk --device /dev/fd0 2.4.x, wobei 2.4.x die volle Version Ihres Kernels darstellt (genauso wie 2.4.2-0.1.21). Wenn Sie damit fertig sind, kontrollieren Sie, ob die Bootdiskette Ihr System bootet.

  2. Sie müssen sowohl die Kernel-headers als auch die Kernelquellen-Pakete installieren. Geben Sie die Befehle rpm -q Kernel-Headers und rpm -q Kernel-Source ein, um die Versionen festzulegen, wenn sie installiert sind. Wenn sie nicht installiert sind, installieren Sie sie mit der Red Hat Linux-CD 1 oder der Red Hat FTP Site unter ftp://ftp.redhat.com (eine Liste von Mirrors ist unter http://www.redhat.com/mirrors.html)verfügbar. Wählen Sie Kapitel 17 für Informationen über das Installieren von RPM-Paketen.

  3. Wechseln Sie vom Shell-Prompt zum Verzeichnis /usr/src/linux-2.4. Alle Befehle von dieser Position aus müssen von diesem Verzeichnis ausgehen.

  4. Es ist wichtig, dass Sie beim Erstellen eines Kernels wissen, wo sich der Quellencodebaum befindet. Daher ist es empfehlenswert, dass Sie mit dem Befehl make mrproper beginnen. Auf diese Weise werden alle Konfigurationsdateien beseitigt, die sich im Umfeld des Quellencodebaums befinden. Wenn Sie bereits eine funktioniernde Konfigurationsdatei (/usr/src/linux-2.4/.config) besitzen, die Sie benutzen, setzen Sie sie unter ein anderes Verzeichnis, bevor Sie diesen Befehl starten, und kopieren Sie sie wieder, nachdem Sie den Befehl durchgeführt haben. Wenn Sie eine bereits bestehende Datei benutzen, übergehen Sie die nächste Passage.

  5. Nun müssen Sie eine Konfigurationsdatei erstellen, die festlegt, welche Bestandteile Ihr neuer Kernel umschließen soll.

    Wenn Sie das X Window-System verwenden, ist es empfehlenswert den Befehl make xconfig zu verwenden. Die Bestandteile sind in verschiedenen Menüs aufgezählt, und werden mit der Maus ausgewählt. Sie können Y (yes), N (no), oder M (module) wählen. Nachdem Sie Ihre Bestandteile ausgewählt haben, klicken Sie auf den Button Save and Exit um die Konfigurationsdatei /usr/src/linux-2.4/.config zu erstellen, und verlassen Sie das Programm Linux Kernelkonfiguration .

    Weitere Möglichkeiten, wie Sie einen Kernel konfigurieren können, finden Sie in der unteren Liste:

    • make config — Ein interaktives Textprogramm. Die Komponenten sind in einem linearen Format dargestellt, und Sie können eins nach dem anderen beantworten. Diese Methode benötigt das X Window System nicht, und ermöglicht es Ihnen, die Antwort auf vorherige Fragen zu ändern.

    • make menuconfig — Ein graphisches, menügesteuertes Programm. Die Komponenten sind in einem in Kategorien eingeteiltes Menü aufgezählt. Sie wählen die gewünschten Komponenten so wie im Textmodus Red Hat Linux Installationsprogramm. Wählen Sie das Tag, das dem Punkt entspricht, den Sie einschließen wollen: [*] (built-in), [ ] (exclude), <M> (module), oder < > (module capable). Für diese Methode benötigen Sie das X Window System nicht.

    • make oldconfig — Das ist ein nicht-interaktives Script, das es der Konfigurationsdatei ermöglicht, die Standardeinstellungen zu umschließen. Wenn Sie den Red Hat Linux Standardkernel benutzen, wird er Ihnen eine Konfigurationsdatei für den mit Red Hat Linux gelieferten Kernel verschaffen. Das dient dem Einstellen Ihres Kernels auf einen bekannten Standard und dem Entfernen von nicht gewünschten Einstellungen.

    AnmerkungBitte beachten
     

    Um kmod (siehe Abschnitt namens Laden der Kernel-Module für Details) und Kernel-Module zu benutzen, müssen Sie mit Yes antworten, für kmod Support und Module Version (CONFIG_MODVERSIONS) Support während der Konfiguration.

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

  7. Wählen Sie den Befehl make clean, um den Quellencodebaum für den Bildschirm vorzubereiten.

  8. Der nächste Schritt beim Erstellen eines modularisierten Kernels besteht im Bearbeiten von /usr/src/linux-2.4/Makefile , damit Sie Ihren bereits bestehenden Kernel nicht überschreiben müssen. 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 Makefile unter /usr/src/linux-2.4 in Ihrem Linux System.

    Bearbeiten Sie /usr/src/linux-2.4/Makefile und ändern Sie die Zeile, die mit EXTRAVERSION = anfängt, um einen "einzigartigen" Namen festzusetzen, indem Sie das Datum ans Ende der Zeichenfolge setzen. Wenn Sie beispielsweise die Kernel Version 2.4.2-0.1.21 kompilieren, können Sie sie so gestalten, dass sie aussieht wie EXTRAVERSION = -0.1.21-feb2001). Auf diese Weise können Sie gleichzeitig den alten und den neuen Kernel, Version 2.4.2-0.1.21-12feb2001, auf Ihrem System behalten.

  9. Erstellen des Kernels mit make bzImage.

  10. Erstellen Sie alle konfigurierten Module mit make modules.

  11. Installieren Sie die Kernel-Module (auch wenn Sie keine erstellt haben) mit make modules_install. Versichern Sie sich, dass Sie (_)eingeben. Auf diese Weise werden die Kernel Module in den Verzeichnispfad /lib/modules/ eingegeben, mit dem Pfadnamen, der in der Makedatei angegeben wurde. Unser Beispiel wäre /lib/modules/2.4.2-0.1.21-12feb2001/.

  12. Wenn Sie einen SCSI-Adapter haben,und Ihren SCSI-Treiber modular eingestellt haben, erstellen Sie ein neues initrd-Image (siehe Abschnitt namens Erstellen eines initrd-Image; Beachten Sie, dass es einige praktische Gründe dafür gibt, weshalb Sie den SCSI-Treiber in einem benutzerdefinierten Kernel modular gestalten sollten). Wenn Sie keinen Grund dazu haben, ein initrd Imagezu erstellen, dann lassen Sie davon ab und fügen Sie es nicht der Datei lilo.conf bei.

  13. Benutzen Sie den Befehl make install, um Ihren neuen Kernel und seine Dateien in die zugehörigen Verzeichnisse zu übertragen.

  14. Um eine redundante Bootquelle zu erstellen, als Schutz vor einem möglichen Fehler, sollten Sie den ursprünglichen Kernel aufbewahren. Dies kann erfolgen, indem die Datei /etc/lilo.conf aktualisiert und der Befehl /sbin/lilo aktiviert wird.

    Die Standarddatei /etc/lilo.conf sieht ungefähr so aus:
    boot=/dev/hda
    map=/boot/map
    install=/boot/boot.b
    prompt
    timeout=50
    message=/boot/message
    linear
    default=linux
    
    image=/boot/vmlinuz-2.4.2-0.1.21
    	label=linux
            initrd=initrd-2.4.2-0.1.21.img
    	read-only
    	root=/dev/hda5
    Um Ihren neuen Kernel zu LILO hinzuzufügen, kopieren Sie bereits bestehende Abschnitte in einen neuen, und ändern Sie ihn, um Ihr neues Kernel-Image zu booten (und initrd Image, falls Sie über SCSI-Geräte verfügen und ein initrd Image erstellt haben). Benennen Sie außerdem die Etikette des alten Kernels neu, ungefähr wie linux-old. Ihre Datei /etc/lilo.conf sollte dem folgenden Beispiel ähneln: l
    boot=/dev/hda
    map=/boot/map
    install=/boot/boot.b
    prompt
    timeout=50
    message=/boot/message
    linear
    default=linux
    	
    image=/boot/vmlinuz-2.4.2-0.1.21-12feb2001
    label=linux
    initrd=initrd-2.4.2-0.1.21-12feb2001.img
    read-only
    root=/dev/hda5
    		
    image=/boot/vmlinuz-2.4.2-0.1.21
    label=linux-old
    initrd=initrd-2.4.2-0.1.21.img
    read-only
    root=/dev/hda5

  15. Um Ihre Änderungen durchzuführen, geben Sie den Befehl /sbin/lilo ein. Wenn alles gut geht, sehen Sie ungefähr folgendes:
    Added linux *
    Added linux-old
    Das * nach Linux bedeutet, dass der Abschnitt mit der Etikette Linux der Standardkernel ist, den LILO booten wird.

  16. Von nun an werden Sie Linux und Linux-old sehen, wenn das System gebootet wird.

    Um den neuen Kernel zu booten, (Linux) geben Sie einfach Enter ein, oder warten Sie auf das Ende von LILO. Wenn Sie den alten Kernel (linux-old) booten wollen, wählen Sie linux-old und drücken Sie auf Enter.

  17. Sie können Ihren neuen Kernel testen, indem Sie Ihren Computer neu booten und auf die Mitteilungen warten, dass Ihre Hardware richtig erkannt wurde.