9.3. Erstellen und Installation eines angepassten Kernels

Zuerst erläutern wir die Verzeichnisstruktur, in der der Kernel gebaut wird. Die im Folgenden genannten Verzeichnisse sind relativ zu /usr/src/sys angegeben, das Sie auch über /sys erreichen können. Es existieren mehrere Unterverzeichnisse, die bestimmte Teile des Kernels darstellen, aber die für uns wichtigsten sind arch/conf, in dem Sie die Konfigurationsdatei für den angepassten Kernel erstellen werden, und compile, in dem der Kernel gebaut wird. arch kann entweder i386, alpha oder pc98 (eine in Japan beliebte Architektur) sein. Alles in diesen Verzeichnissen ist nur für die jeweilige Architektur relevant, während der Rest des Codes für alle Plattformen, auf die FreeBSD portiert werden kann, gleich ist. Beachten Sie die Verzeichnisstruktur, die jedem unterstützten Gerät, jedem Dateisystem und jeder Option ein eigenes Verzeichnis zuordnet.

Anmerkung: Falls Sie kein /usr/src/sys Verzeichnis vorfinden, so sind die Kernelquellen nicht installiert. Der einfachste Weg dies nachzuholen, ist /stand/sysinstall als root auszuführen. Dort wählen Sie Configure, dann Distributions, dann src und schließlich sys. Wenn Sie eine Aversion gegen sysinstall haben und eine ``offizielle'' FreeBSD CD-ROM besitzen, können Sie die Kernelquellen auch von der Kommandozeile installieren:

    # mount /cdrom
    # mkdir -p /usr/src/sys
    # ln -s /usr/src/sys /sys
    # cat /cdrom/src/ssys.[a-d]* | tar -xzvf -

Als nächstes wechseln sie in das Verzeichnis, in dem die GENERIC Konfigurationsdatei liegt und kopieren diese in eine Datei mit dem Namen, den Sie Ihrem Kernel geben wollen:

    # cd /usr/src/sys/i386/conf
    # cp GENERIC MYKERNEL

Traditionell ist der Name des Kernels immer in Großbuchstaben. Wenn Sie mehrere FreeBSD mit unterschiedlicher Hardware warten, ist es nützlich, wenn Sie Konfigurationsdatei nach dem Hostnamen der Maschinen benennen. Im Beispiel verwenden wir den Namen MYKERNEL.

Tipp: Es ist nicht zu empfehlen die Konfigurationsdatei direkt unterhalb von /usr/src abzuspeichern. Wenn Sie Probleme haben, könnten Sie der Versuchung erliegen, /usr/src einfach zu löschen und wieder von vorne anzufangen. Fünf Sekunden später werden Sie dann feststellen, dass Sie soeben Ihre Kernelkonfigurationsdatei gelöscht haben.

Sie sollten die Konfigurationsdatei an anderer Stelle aufheben und in i386 einen Link auf die Datei erstellen.

Beispiel:

    # cd /usr/src/sys/i386/conf
    # mkdir /root/kernels
    # cp GENERIC /root/kernels/MYKERNEL
    # ln -s /root/kernels/MYKERNEL

Anmerkung: Diese und die folgenden Kommandos müssen Sie als root ausführen, da Sie sonst permission denied Fehler erhalten.

Jetzt editieren Sie MYKERNEL mit einem Texteditor Ihres Vertrauens. Wenn Sie gerade neu anfangen, ist Ihnen vielleicht nur der vi Editor bekannt, der allerdings zu komplex ist, um hier erklärt zu werden. Er wird aber in vielen Büchern aus der Bibliographie gut erklärt. FreeBSD bietet aber auch einen leichter zu benutzenden Editor, den ee an, den Sie, wenn Sie Anfänger sind, benutzen sollten. Sie können die Kommentare am Anfang der Konfigurationsdatei ändern, um die Änderungen gegenüber GENERIC zu dokumentieren.

Falls Sie schon einmal einen Kernel unter SunOS oder einem anderen BSD kompiliert haben, werden Sie diese Konfigurationsdatei bereits kennen. Wenn Sie mit einem anderen Betriebssystem wie DOS vertraut sind, könnte die GENERIC Konfigurationsdatei Sie verschrecken. In diesen Fall sollten Sie den Beschreibungen im Abschnitt über die Konfigurationsdatei langsam und vorsichtig folgen.

Anmerkung: Wenn Sie die FreeBSD Quellen synchronisieren, sollten Sie immer /usr/src/UPDATING durchlesen, bevor Sie etwas verändern. Diese Datei enthält alle wichtigen Informationen, die Sie beim Aktualisieren beachten müssen. Da /usr/src/UPDATING immer zu Ihrer Version der FreeBSD Quellen passt, sind die Informationen dort genauer, als in diesem Handbuch.

Nun müssen Sie die Kernelquellen kompilieren. Dazu gibt es zwei Verfahren. Welches Verfahren Sie nehmen, hängt davon ab, warum Sie den Kernel neu bauen und welche Version von FreeBSD Sie verwenden.

Verfahren 1. Bau eines Kernels mit der ``alten'' Methode

  1. Generieren Sie die Kernel Quellen mit config(8).

        # /usr/sbin/config MYKERNEL
    
  2. Wechseln Sie in das Bauverzeichnis.

        # cd ../../compile/MYKERNEL
    
  3. Kompilieren Sie den Kernel.

        # make depend
        # make
    
  4. Installieren Sie den neuen Kernel.

        # make install
    

Verfahren 2. Bau eines Kernels mit der ``neuen'' Methode

  1. Wechseln Sie in das usr/src Verzeichnis.

        # cd /usr/src
    
  2. Kompilieren Sie den Kernel.

        # make buildkernel KERNCONF=MYKERNEL
    
  3. Installieren Sie den neuen Kernel.

        # make installkernel KERNCONF=MYKERNEL
    

Anmerkung: Mit FreeBSD 4.2 und älteren Versionen müssen Sie KERNCONF durch KERNEL ersetzen. 4.2-STABLE nach dem 2. Februar 2001 erkennt die Option KERNCONF.

Wenn Sie die Quellen nicht auf irgendeine Weise aktualisiert haben, das heißt, Sie haben nicht CVSup, CTM oder anoncvs benutzt, dann können Sie die Sequenz config, make depend, make, make install benutzen.

Der neue Kernel wird nach /kernel kopiert, während der alte Kernel nach /kernel.old verschoben wird. Um den neuen Kernel zu benutzen, sollten Sie die Maschine jetzt rebooten. Falls etwas schief geht, sehen Sie bitte in dem Abschnitt zur Fehlersuche am Ende dieses Kapitels nach. Dort sollten Sie auch unbedingt den Abschnitt lesen, der erklärt, was zu tun ist, wenn der neue Kernel nicht bootet.

Anmerkung: Ab FreeBSD 5.0 werden der neue Kernel und die Module in das Verzeichnis /boot/kernel installiert. Der alte Kernel und die dazugehörenden Module werden in das Verzeichnis /boot/kernel.old gesichert. Im Verzeichnis /boot werden auch andere Dateien, die zum Systemstart benötigt werden, wie der Boot-Loader ( loader(8)) und dessen Konfiguration, abgelegt. Module von Fremdherstellern oder angepasste Module werden in /boot/modules abgelegt. Beachten Sie bitte, dass diese Module immer zu dem verwendeten Kernel passen müssen, da Module, die nicht zu dem verwendeten Kernel passen, die Stabilität des Systems gefährden.

Anmerkung: Wenn Sie neue Geräte, wie Soundkarten, hinzugefügt haben und FreeBSD 4.X oder eine frühere Version benutzen, müssen Sie unter Umständen Gerätedateien in /dev erstellen, bevor Sie die Geräte benutzen können. Weitere Informationen finden Sie in Erstellen von Gerätedateien später in diesem Kapitel.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine EMail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine Email an <de-bsd-translators@de.FreeBSD.org>.