News  |   Buchempfehlungen  |   Links  |   Computerspiele  |   CD-R/DVD±R(W)

FreeBSD  |   NetBSD  |   Linux  |   Kursfahrt 2000  |   Medizinstudium

Schule  |   Über mich  |   Impressum  |   Feedback |   Übersicht

 
 

 

 Übersicht 
 
 Links 
 
 CUPS einrichten 
 
 Kernel kompilieren 
 




FreeBSD: Einen eigenen Kernel kompilieren

Einen eigenen Kernel unter FreeBSD zu kompilieren, ist nicht sonderlich schwer. Eine ausführliche Anleitung dazu findet sich auch im FreeBSD-Handbuch (http://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/kernelconfig-building.html).
Die dortige Anleitung finde ich allerdings durch die Vielzahl der beschriebenen Variationsmöglichkeiten gerade für "Newbies" recht verwirrend. Außerdem werden einige - meiner Ansicht nach wichtige - Kerneloptionen nicht erwähnt. Daher soll meine Anleitung als kurze Einführung dienen, wie man unter FreeBSD 5.1-RELEASE einen (i386-)Kernel an seine Bedürfnisse anpaßt und installiert.

Die Kernelquellen befinden sich im Verzeichnis /usr/src/sys. Existiert dieses Verzeichnis nicht oder ist leer, dann sind die Kernelquellen nicht installiert worden. Das läßt sich folgendermaßen nachholen:
Man ruft als root das Programm /stand/sysinstall auf und wählt Configure -> Distributions -> src -> sys zur Installation aus.

Am besten legt man ein spezielles Verzeichnis an, in dem man seine Kernelkonfigurationen speichert. Das kann z.B. /root/kernels sein. Dort ist die Kernelkonfiguration vor einem versehentlichen Löschen bei Änderungen des Kernelbaums geschützt.
Dazu führt man (als root) folgende Schritte aus:
  cd /usr/src/sys/i386/conf
  mkdir /root/kernels
  cp GENERIC /root/kernels/MYKERNEL
  ln -s /root/kernels/MYKERNEL
(Natürlich kann man anstelle von MYKERNEL auch einen beliebigen anderen Namen wählen, z.B. den des Systems, auf dem man kompiliert.)

Nun hat man die Datei /root/kernels/MYKERNEL, die die Konfiguration des mitgelieferten Standardkernels enthält, als Vorlage für seine eigenen Konfigurationswünsche.

Diese Datei editiert man mit einem beliebigen Texteditor, z.B. mit dem Editor vim. Das Dateiformat ist recht simpel: Jede Zeile enthält ein Schlüsselwort (z.B. machine, cpu, options und ein oder mehrere Argumente. Kommentare werden mit einer # eingeleitet.
Unbedingt nötig sind folgende Schlüsselwörter:
  # gibt die Architektur an
  machine       i386
  
  # je nach CPU-Typ I386_CPU, I486_CPU, I586_CPU oder I686_CPU
  cpu           I686_CPU 
			
  # Kernelname, wird beim Booten ausgegeben
  ident         MYKERNEL

  # limitiert u.a. die maximale Anzahl an Prozessen; bei "0" setzt das
  # System den Wert selbst
  maxusers      0 

  # Schnittstelle zur Fließkomma-Einheit, muß angegeben werden!
  device        npx

  # TCP/IP-Loopback, muß angegeben werden!
  device        loop
Die weiteren Optionen sind mehr oder weniger optional. Auf dem eigenen System nicht benötigte Optionen (z.B. Treiber für ISA-Steckkarten auf Systemen ohne ISA-Slots, Treiber für nicht vorhandene NIC-/SCSI-/sonstige Steckkarten...) können mit einer # auskommentiert werden. Wichtig dabei: Manche Optionen werden benötigt, obwohl anscheinend kein entsprechendes Gerät mehr installiert ist. Dazu zählt insbesondere der Eintrag device isa der nicht auskommentiert werden darf! Also im Zweifelsfall lieber einen Eintrag zuviel im Kernel belassen und/oder in der Kernel-Dokumentation nachlesen!

Wichtig: In der GENERIC-Datei finden sich nicht alle möglichen Kerneloptionen, sondern nur eine Liste der am häufigsten genutzten. Wer eine Funktion benötigt und keine entsprechende Option findet, sollte sich die Dokumentationsdateien /usr/src/sys/conf/NOTES und /usr/src/sys/i386/conf/NOTES einmal genauer anschauen!
Sowohl im entsprechenden Handbuchkapitel (http://www.FreeBSD.org/doc/de_DE.ISO8859-1/books/handbook/kernelconfig-config.html) als auch in diesen Dateien sind die Optionen genau beschrieben, so daß ich an dieser Stelle auf weitergehende Beschreibungen verzichte.
Stattdessen will ich kurz einige Optionen nennen, die in der Standardkonfiguration nicht auftauchen, aber für einige Systemfunktionen durchaus wichtig sind.

Nicht wenige "FreeBSD-Newbies" werden auf ihrem System auch eine Linux-Installation haben. Da die verwendete Software oftmals identisch ist, bietet es sich an, Konfigurationsdateien der Linux-Installation auch für FreeBSD zu verwenden oder zumindest als Vorlage für die Konfiguration zu verwenden. Dazu muß allerdings ein Zugriff auf die Linux-Partitionen möglich sein. Wenn das verwendete Dateisystem ext2 oder ext3 ist, benötigt man dazu folgenden Eintrag in seiner Kernelkonfiguration, der aus Lizenzgründen standardmäßig leider fehlt:
  # Linux ext2fs
  options       EXT2FS
Die meisten PCI-Soundkarten und Boards mit onboard-Sound werden durch folgende Option unterstützt:
  device pcm
Laut Handbuch wäre für onboard-Sound auch noch die Option options PNPBIOS nötig, auf meinem System (Sony Vaio mit nForce-Chipsatz) verhinderte diese Option aber die korrekte Soundausgabe. Im Zweifelsfall einfach ausprobieren!

Wer zum CD-Brennen Programme wie cdrecord oder cdrdao benutzen möchte, muß noch den ATAPI/CAM-Treiber in den Kernel einbinden, das Gegenstück zum Modul "ide-scsi" unter Linux. Dazu dienen die folgenden Zeilen:
  device atapicam
  device scbus
  device cd
  device pass
  device ata
  device atapicd
Weitere Informationen zum CD-Brennen finden sich auch im entsprechenden Handbuchkapitel unter http://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/creating-cds.html

Wichtig: In der Datei /usr/src/UPDATING sind wichtige Informationen zu Neuerungen und Änderungen enthalten, außerdem wird vor möglichen Fallstricken gewarnt. Deshalb sollte man (gerade wenn man die Kernelkompilation im Rahmen eines System-Updates durchführt) diese Datei unbedingt vor der Installation eines neuen Kernels lesen!

Nachdem man nun eine auf sein System zugeschnittene Konfigurationsdatei erzeugt hat, kann man im nächsten Schritt darangehen, den neuen Kernel zu kompilieren und installieren. Dazu sind als root folgende Schritte nötig:
  cd /usr/src
  make buildkernel KERNCONF=MYKERNEL
  make installkernel KERNCONF=MYKERNEL
(MYKERNEL ist gegebenenfalls durch einen anderen Namen zu ersetzen.)
Der neue Kernel samt Modulen wird nach /boot/kernel/ installiert, während der alte nach /boot/kernel.old/ gesichert wird. So ist sichergestellt, daß immer ein lauffähiger Kernel verfügbar ist.

Wenn der neue Kernel nicht bootet, ist das noch lange kein Grund zur Panik. Man kann im FreeBSD Boot Loader ganz einfach einen anderen Kernel angeben, z.B. kernel.old oder eine andere Sicherungskopie.
Dazu drückt man einfach eine Taste außer Enter, während das System von 10 herunterzählt. Dann gibt man unload ein und bootet mittels boot kernel.old (gegebenenfalls anpassen) den alten Kernel.

Wenn man sich nach einem Reboot und einigem Testen vergewissert hat, daß der neue Kernel wie gewünscht funktioniert, sollte man eine Sicherungskopie der Konfiguration und des Kernels anlegen. So hat man eine Konfiguration, auf die man auch nach fehlgeschlagenen weiteren Testversuchen wieder zurückgreifen kann.
Dazu kann man z.B. eine Sicherungskopie mit Datum wie folgt erstellen:
  cd /root/kernels
  cp MYKERNEL MYKERNEL-2003-12-26
  cd /boot
  mkdir /boot/kernel-2003-12-26
  cp -Rp /boot/kernel/* /boot/kernel-2003-12-26/


Abschließend noch ein Hinweis: Wenn statt des gewünschten neuen Kernels ein anderer Kernel bootet, z.B. der GENERIC-Kernel, dann kann das daran liegen, daß man in der Kernelkonfigurationsdatei Kommentarzeilen(!) eingefügt hat, die Umlaute oder Sonderzeichen enthalten. Das Kompilieren eines Kernels auf der Basis einer solchen Konfigurationsdatei liefert leider keinerlei Fehlermeldungen, sondern führt zu solch merkwürdigen Phänomenen, wie ich aus eigener Erfahrung bestätigen kann.

Quellen und weiterführende Links




Nach oben


 


Valid CSS!

 
Zähler  Zugriffe auf diese Seite

   Letzte Änderung: 30.4.2004 by Hans-Michael Gerhards (HM-Gerhards@gmx.de)