Uebersetzung : Kapitel ueber Kernelconfig

From: Robert Altschaffel <rob.alt(at)gmx.de>
Date: Sun, 16 Dec 2001 17:24:25 +0000

Den FreeBSD Kernel konfigurieren

 1.Übersicht
 2.Wieso einen eigenen Kernel bauen?
 3 Den Kernel compilieren und installieren
 4 Die Konfigurationsdatei
 5 Die Device-Einträge erstellen
 6 Wenn etwas schief geht
 Erweitert und neustrukturiert von Jim Mock. Urspruenglich verröffentlicht
von Jake Hamby.
 übersetzt von Robert Altschaffel.

 
1. Übersicht

Der Kernel ist das Herz des FreeBSD Betriebsystems. Er ist verantwortlich
fuer die Speicherverwaltung, das Durchsetzen von Sicherheitsdirektiven,
Netzwerkfaehigkeit, Festplattenzugriff und noch viel mehr. Obwohl FreeBSD es
immermehr ermöglicht, dynamisch zu konfiguriert werden, ist es weiterhin eine
Absolute Notwendigkeit, den Kernel neuzukonfigurieren und kompileren.

Nach dem Sie dieses Kapitel gelesen haben, werden Sie folgendes wissen:

- Wieso Sie ihren Kernel neukonfiguerieren sollten.

- Wie Sie eine Kernel-Configurationsdatei erstellen oder verändern.

- Wie Sie einen neuen Kernel compilieren.

- Wie Sie den neuen Kernel installieren.

- Wie sie die benötigten Einträge in /dev erstellen.

- Was zu tuen ist, falls etwas schiefgeht.

------------------------------------------------------------------------------------------------------------------------------------

2. Wieso einen eigenen Kernel bauen?

Traditionell besitzt FreeBSD einen sogenannten 'Monolith-Kernel'. Das
bedeutet, dass der Kernel ein einziges grosses Programm war,
dass eine bestimmte Auswahl an Hardware unterstützte.
Also musste man immer, wenn man das Kernelverhalten verändern wollte, z.B
wenn man neue hardware hinzufügen wollte,
einen neuen Kernel compilieren, installieren und das System neustarten.
Heutzutage vertritt FreeBSD immer mehr die Idee eines modularen Kernels, bei
dem bestimmte Funktionen,
je nach Bedarf als Module geladen werden können.
Ein Bekanntes Beispiel dafür sind die Module für die PCMIA-Karten in Laptops,
die zum Starten nicht zwingend benötigt werden,
und erst geladen werden, wenn sie benötigt werden.
Diese Module nennt man KLDs.
Trotzdem ist es noch immer nötig die statische Kernelkonfiguration abzuändern.
In einigen Fällen ist die Funktion zu systemnah, um durch ein Modul zu
realisiert werden.
In anderen Fällen hat evtl. noch niemand ein ladbares Kernelmodul für diese
Funktion geschrieben.
Einen eigenen Kernel zu erstellen ist eine der wichtigsten und
unumgänglichsten Aufgaben für jeden Unix/Linux-Nutzer.
Obwohl dieser Prozess recht viel Zeit in Anspruch nimmt, bringt er doch viele
Vorteile gegenüber den GENERIC Kernel,
der sehr viele Hardware unterstützen muss.
Ein Eigener Kernel unterstützt nur die benötigte Hardware, was folgende
Vorteile hat :

- Schnellerer Bootvorgang. Da der Kernel nach weniger Geräten suchen muss,
ist die Boot-Sequenz weitaus schneller

- Geringere Speicherausnutzung. Ein Eigener Kernel benötigt in der Regel
weniger Speicher als ein GENERIC Kernel,
was vorteilhaft ist, da der Kernel immer im RAM verweilt, und somit auf
Systemen mit wenigen RAM einen immensen Geschwindigkeitsschub geben kann.

- Zusätzliche Hardwareunterstützung. Ein Eigener Kernel kann Unterstützung
für Geräte (z.B Soundkarten) bieten, die im GENERIC Kernel nich unterstützt
werden.

------------------------------------------------------------------------------------------------------------------------------------

3. Einen Eigenen Kernel erstellen und installieren

Grundsätzlich sind all diese Schritte als SuperUser durchzuführen.
Zunächst einmal gehen wir davon aus, dass alle hier genannten Verzeichnis
relativ zum Verzeichnis /usr/src/sys, dass auch auf /sys symgelinkt ist, zu
sehen sind.
Es existieren mehrere Unterverzeichnisse, die bestimmte Teile des Kernels
darstellen, aber für Ihre Zwecke ist /arch/conf, wo Sie den Kernel
Konfigurieren und Compilieren werden, das Wichtigste.
arch stellt dabei die Architektur des Systems da. FreeBSD unterstützt hierbei
i386, Alpha und Pc98 (Pc98 ist eine in Japan beliebte Architektur).
Alles in diesen Verzeichnissen ist nur für die jeweilige Architektur
relevant, während der Rest des Codes fuer alle Plattformen, auf die FreeBSD
übertragen wurde, gleich ist.
Falls Sie kein /usr/src/sys Verzeichniss vorfinden, so sind die Kernelquellen
nicht installiert.
Der einfachste Weg diese nachzuholen ist /stand/systinstall als SuperUser
auszuführen, dort Configure, dann Distributions, dann src und schliesslich
sys auszuwählen.
Als Naechstes wechseln sie in das Verzeichniss, in dem die GENERIC
Konfigurationsdatei liegt und kopieren diese,so das Sie 2
Kernelkonfigurationen haben:

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

Traditionell ist der Name des Kernel immer in Grossbuchstaben und entspricht
den Hostname der Zielmaschine.
Es ist nie eine schlechte Idee die Kernelkonfigurationen aufzuheben, z.B:

    # cd /usr/src/sys/i386/conf
    # mkdir /root/kernels
    # mv ./* /root/kernels/
    # ln -s /root/kernels/MYKERNEL ./MYKERNEL

Jetzt editieren Sie /root/kernels/MYKERNEL mit den TextEditor Ihres
Vertrauens.
Falls Sie schonmal einen Kernel unter SunOS oder BSD compiliert haben, werden
Sie diese Konfigurationsdatei bereits kennen.
Falls nicht, könnte die GENERIC Konfigurationsdatei Sie verschrecken.
In diesen Fall sollten Sie den Beschreibungen im Abschnitt über die
Konfigurationsdatei langsam und vorsichtig folgen.
Sie sollten immer /usr/src/UPDATING durchlesen, bevor sie irgendwas
veräaendern.
Falls sie nämmlichen ihr /usr/src/sys mit den letzten Kernel-Release
aktualisieren, werden sie dort wichtige Informationen vorfinden.
Da die /usr/src/UPDATING immer zu Ihrer Version der Kernelquellen passt, sind
die Informationen dort genauer, als im Handbuch
Nun müssen sie den Kernel compilieren:

    # /usr/sbin/config MYKERNEL
    # cd ../../compile/MYKERNEL
    # make depend
    # make

und installieren:

    # make install

Alternativ gibt es fuer FreeBSD neuer als 4.0 folgende Möglichkeit :

    # cd /usr/src
    # make buildkernel KERNCONF=MYKERNEL
    # make installkernel KERNCONF=MYKERNEL

Der neue Kernel wird nun nach /kernel kopiert, während der alte Kernel nach
/kernel.old verschoben wird.
Wenn sie Geräte, wie z.B Soundkarten, hinzugefügt haben, müssen sie nun die
devices in /dev erstellen, bevor sie diese nutzten können.

------------------------------------------------------------------------------------------------------------------------------------

4. Die Konfigurationsdatei verändern

Das Format der Konfigurationsdatei ist recht einfach.
Jede Zeile enthält ein Schlüsselwort und eines, oder mehrere Argumente.
Eine Zeile, die von einen # eingeleitet wird, gilt als Kommentar und wird
ignoriert.
Eine ausführliche Liste aller Optionen finden sie in
/usr/src/sys/conf/i386/LINT.

Dieser Abschnitt befindet sich noch in der Übersetzung.

------------------------------------------------------------------------------------------------------------------------------------

5 Die Geräteeinträge erstellen

Fast jedes Gerät besitzt in /dev/ eine sogenannte 'device node'.
Diese nodes sehen wie reguläre Datein aus, stellen aber ein Kernelinterface
dar, mit deren Hilfe, Programme auf diese Geräte zugreifen können.
Das Script /dev/MAKEDEV, dass auch bei der Installation des Systems
ausgeführt wird, erstellt die nodes für fast alle unterstützten Geräte.
Falls die benötigten nodes denoch nicht vorhanden sind, so können Sie sie sie
sehr einfach hinzufügen.
Angenommen, Sie wollen IDE CD-ROM Unterstützung den Kernel hinzufügen, müssen
Sie folgende Zeile in der Konfigurationsdatei einfügen:

    device acd0

Nun schauen Sie in /dev nach den nodes fuer dieses Gerät, die mit acd0
beginnen, wenn diese nicht dort sind, so müssen Sie die Einträge erstellen:

    # sh MAKEDEV acd0

Nun sollten die Einträge in /dev vorhanden sein.
Da alle SCSI Controller die gleichen Einträge in /dev haben brauchen Sie
diese nicht erstellen.
Weiterhin haben Netzwerkkarten sowie SLIP/PPP-Pseudo-Interfaces keine
/dev-Einträge.

------------------------------------------------------------------------------------------------------------------------------------

6.Wenn etwas schiefgeht

Es gibt 4 Hauptfehlerquellen beim Kernel Compilieren:

config verursacht Fehler:

Wenn config misslingt liegen Fehler in der Kernelkonfigurationsdatei vor. Zum
Glück gibt config die Fehlerstelle an:

    config: line 17: syntax error

make verursacht Fehler:

Wenn make misslingt liegen ebenfalls Fehler, die aber so speziell sind, dass
config sie nicht feststellt, vor.
Durchsuchen sie ihre Konfiguration und suchen sie Dinge, wie z.B aktivierter
USB HID Support, wenn sie garkein USB Support aktiviert haben.
Wenn Sie noch immer keine Lösunge gefunden haben, können sie eine Mail an die
FreeBSD Mailinglist <freebsd-questions(at)FreeBSD.org> schicken, die auch ihre
Kernelkonfigurationsdatei enthält.

Der Kernel bootet nicht:

Wenn der Kernel nicht booten will, ist das noch lange kein Grund zur Panik.
Denn BSD UNIX besitzt exzellent Mechanismen zur Wiederherstellung nach den
Einsatz inkompatibler Kernel.
Booten sie einfach kernel.old oder kernel.GENERIC im FreeBSD boot loader.
Nun können sie die Konfiguration nocheinmal überprüfen und den Kernel
Neucompilieren.
Dazu ist /var/log/messages sehr nützlich, da hier sämtliche Kernelmeldungen
gespeichert werden.
dmesg ist ebenfalls ziemlich nützlich.
Aus diesen Grund sollten Sie immer einen GENERIC oder einen anderen Kernel,
der garantiert bootet für den Notfall bereitstehen haben.

Wenn Sie einen FreeBSD Kernel einsetzen, der nicht der Version entspricht,
für die ihre System-Programme compiliert wurden, kommt es ebenfalls zu sehr
grossen Problemen.
Dies ist z.B der Fall bei einen 4.er Kernel auf einen 3.er System.
Die meisten Befehle, die den Systemstatus feststellen (z.B. ps oder wmstat)
werden nun nicht mehr funktionieren.
Sie müssen nun die libkwm sowie die sysutils neucompilieren.
Das ist ein Grund dafür, warum man nie einen Kernel, der nicht zur
Systemversion passt, benutzten sollte.

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-translators" in the body of the message
Received on Sun 16 Dec 2001 - 18:24:12 CET

search this site