9.5. Erstellen und Installation eines angepassten Kernels

Anmerkung:

Sie benötigen den kompletten Quellcodebaum, um den Kernel zu bauen.

Die Kernelquellen befinden sich im Verzeichnis /usr/src/sys. Es enthält mehrere Unterverzeichnisse, die bestimmte Teile des Kernels darstellen. Diese beinhalten arch/conf, das die Kernelkonfigurationsdatei enthält, und compile, in dem der Kernel gebaut wird. arch enthält Unterverzeichnisse für jede unterstützte Architektur: i386, amd64, ia64, powerpc, sparc64 und pc98. Alles in diesen Verzeichnissen ist nur für die jeweilige Architektur relevant. Der Rest des Codes ist maschinenunabhängig und für alle Plattformen gleich. Beachten Sie die logische Organisation der Verzeichnisstruktur, die jedem unterstützten Gerät, jedem Dateisystem und jeder Option ein eigenes Verzeichnis zuordnet.

Die Beispiele in diesem Kapitel verwenden die i386-Architiktur. Wird ein anderes System benutzt, passen Sie bitte die Pfade entsprechend der Architektur des Systems an.

Anmerkung:

Wenn /usr/src/ nicht existiert oder leer ist, sind die Quellen nicht installiert. Der einfachste Weg, die Kernelquellen zu installieren ist die Verwendung von svn, wie in Abschnitt A.6, „Benutzen von Subversion beschrieben ist. Man sollte ebenfalls einen symbolischen Link auf /usr/src/sys/ anlegen:

# ln -s /usr/src/sys /sys

Als nächstes wechseln Sie in das Verzeichnis arch/conf und kopieren die Konfigurationsdatei GENERIC in eine Datei, die den Namen des Kernels trägt. Zum Beispiel:

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

Traditionell ist der Name des Kernels immer in Großbuchstaben. Wenn Sie mehrere FreeBSD-Maschinen mit unterschiedlicher Hardware betreuen, ist es nützlich, die Konfigurationsdatei nach dem Hostnamen der Maschinen zu benennen. Dieses Beispiel verwendet den Namen MYKERNEL.

Tipp:

Wenn Sie die Kernelkonfigurationsdatei fertig bearbeitet haben, speichern Sie eine Sicherungskopie außerhalb von /usr/src. Bearbeiten Sie GENERIC nicht direkt.

Alternativ kann die Kernelkonfigurationsdatei an anderer Stelle aufbewahrt werden und im Verzeichnis i386 ein Link auf die Datei erstellt werden.

Beispiel:

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

Editieren Sie MYKERNEL mit einem Texteditor. Der Standard-Editor ist vi, dessen Nutzung in vielen Büchern aus der Bibliographie gut erklärt ist. Ein einfacherer Editor für Anfänger, namens ee, ist ebenfalls verfügbar. Sie können die Kommentare am Anfang der Konfigurationsdatei ändern, um die Änderungen gegenüber GENERIC zu dokumentieren.

Wenn die GENERIC Konfigurationsdatei Sie verschreckt, folgen Sie den Beschreibungen im Abschnitt über die Konfigurationsdatei langsam und sorgfältig.

Anmerkung:

Nachdem Sie die FreeBSD Quellen synchronisieren, sollten Sie immer /usr/src/UPDATING lesen, bevor Sie etwas aktualisieren. Diese Datei enthält alle wichtigen Informationen, die Sie beim Aktualisieren beachten müssen. /usr/src/UPDATING passt immer zur Version der FreeBSD Quellen, und die Informationen dort sind aktueller als in diesem Handbuch.

Nach dem Speichern der Änderungen, kompilieren Sie den Quellcode für den Kernel.

Prozedur 9.1. Den Kernel bauen

Anmerkung:

Sie benötigen den kompletten Quellcodebaum, um den Kernel zu bauen.

  1. Wechseln Sie in das Verzeichnis /usr/src:

    # cd /usr/src
  2. Kompilieren Sie den neuen Kernel, und geben Sie den Namen der angepassten Kernelkonfigurationsdatei an:

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

    # make installkernel KERNCONF=MYKERNEL

Tipp:

In der Voreinstellung werden beim Bau eines angepassten Kernels stets alle Kernelmodule neu gebaut. Wollen Sie den Kernel schneller bauen oder nur bestimmte Module bauen, bearbeiten Sie /etc/make.conf, bevor Sie den Kernel bauen:

MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs

Diese Variable spezifiziert eine Liste von Modulen, die gebaut werden. In der Voreinstellung werden alle Module gebaut.

WITHOUT_MODULES = linux acpi sound ntfs

Diese Variable spezifiziert eine Liste von Modulen, die vom Bauprozess ausgeschlossen werden. Weitere verfügbare Variablen finden Sie in make.conf(5).

Der neue Kernel wird in /boot/kernel als /boot/kernel/kernel abgelegt, während der alte Kernel nach /boot/kernel.old/kernel verschoben wird. Um den neuen Kernel zu benutzen, starten Sie den Rechner neu. Falls etwas schief geht, sehen Sie bitte in dem Abschnitt zur Fehlersuche nach, und was zu tun ist, wenn der neue Kernel nicht startet.

Anmerkung:

Im Verzeichnis /boot werden andere Dateien, die zum Systemstart benötigt werden, wie der Boot-Loader loader(8) und dessen Konfiguration, abgelegt. Module von Drittanbietern oder angepasste Module werden in /boot/kernel abgelegt. Beachten Sie bitte, dass diese Module immer zu dem verwendeten Kernel passen müssen. Module, die nicht zu dem verwendeten Kernel passen, können die Stabilität des Systems gefährden.

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.

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