Inhalt

3. Die Kernelkonfiguration

3.1 Download der Quellen

Die Quelldateien des Linux-Kernels können über Anonymous-FTP von ftp.funet.fi bezogen werden; sie befinden sich dort unterhalb des Verzeichnisses /pub/Linux/PEOPLE/Linus. Dieser Server wird an vielen Stellen gespiegelt, es lohnt sich also, zunächst mal auf dem lokalen Server nachzusehen. Einige nationale und internationale Mirrors sind:

USA

UK

Österreich

Deutschland

Frankreich

Australien

Generell ist auch eine Spiegelung von sunsite.unc.edu ein guter Startpunkt. Die Datei /pub/Linux/MIRRORS enthält eine Liste mit den bekannten Spiegelungen.

Im angegebenen Verzeichnis befinden sich Unterverzeichnisse mit Namen wie v1.3, v2.0 usw. Die höchste Versionsnummer stellt den aktuellsten Kernel dar, wobei ungerade Versionsnummern wie v1.3 die Beta-Versionen sind. Wer also auf einen stabilen Kernel Wert legt, sollte bei den geraden Versionsnummern bleiben.

In den jeweiligen Verzeichnissen stehen dann die Linux-Quellen in Dateien mit den Namen linux-x.y.z.tar.gz; x.y.z ist dabei die Versionsnummer. Die Datei mit der höchsten Versionsnummer stellt den neuesten Kernel dar. In der Regel sollte dieses auch die beste Version sein.

Ebenfalls in diesem Verzeichnis befinden sich Dateien mit den Namen patch-x.y.z.gz. Dabei handelt es sich um sogenannte Patch-Dateien, mit denen man bereits vorhandene Kernel-Quellen einer älteren Version auf den neuesten Stand bringen kann. Näheres dazu steht im Abschnitt Patchen des Kernels.

Eine weitere Möglichkeit, die Kernel-Quellen zu bekommen, stellen Mailbox-Systeme dar. Eine Liste von Mailboxen, die die Linux-Quellen anbieten, wird regelmäßig in der Newsgruppe comp.os.linux.announce gepostet.

Wenn Sie auf der Suche nach allgemeinen Informationen zu Linux und unterschiedlichen Distributionen sind, werfen Sie einen Blick auf diesen Server:

http://www.linux.org

3.2 Auspacken der Quellen

Die Installation der Quellen verlangt root-Rechte, so daß man sich entweder als root einloggen oder durch su die Identität wechseln muß. Der Kernel-Verzeichnisbaum residiert normalerweise im Verzeichnis /usr/src:

# cd /usr/src
Wer - wie die meisten - bereits bei der ersten Installation seines Linux-Systems die Kernel-Quellen mitinstalliert hat, wird hier ein Verzeichnis mit dem Namen linux finden. Wer genug Platz auf der Festplatte hat und auf Nummer Sicher gehen will, kann dieses Verzeichnis beibehalten. Eine gute Idee ist es, die Versionsnummer des Kernels in diesem Verzeichnisbaum herauszufinden und das gesamte Verzeichnis umzubenennen. Hierfür gibt es zwei Möglichkeiten:

  1. Es läuft noch der ursprüngliche Kernel, dann sind die Versionsnummern von Quellen und laufendem Kernel identisch. Die Versionsnummer des laufenden Kernels erfährt man durch den Befehl:
    # uname -r
    1.2.13
    
  2. Wer sich nicht sicher ist: Die Versionsnummer für den Verzeichnisbaum steht im obersten Makefile /usr/src/linux/Makefile ganz am Anfang:
    VERSION = 1
    PATCHLEVEL = 2
    SUBLEVEL = 13
    
    Hier handelt es sich also um einen Kernel 1.2.13.

Der gesamte Verzeichnisbaum wird nun einfach umbenannt:

# mv linux linux-1.2.13

Eine weitere, sehr viel platzsparendere Möglichkeit ist es, den alten Verzeichnisbaum als gepacktes TAR-Archiv aufzuheben:

# tar cvfz linux-1.2.13.tgz linux
# rm -rf linux

Wer sicher ist, daß er die alten Quellen nicht mehr benötigt, oder einfach nicht genug Platz für zwei Versionen hat, kann auch einfach den vorhandenen Verzeichnisbaum löschen:

# rm -rf linux
In jedem Fall muß aber sichergestellt sein, daß es in /usr/src kein Verzeichnis mit dem Namen linux gibt, bevor man die neuen Quellen auspackt!

Dieses Auspacken geschieht mit dem Befehl

# tar xpvfz linux-x.y.z.tar.gz
oder, wenn die Datei bereits entkomprimiert ist, mit
# tar xpvf linux-x.y.z.tar
Wer das TAR-Archiv nicht im aktuellen Verzeichnis stehen hat, muß natürlich den vollen Pfad zu dieser Datei angeben, also etwa:
# tar xpvfz /home/ftp/incoming/linux-x.y.z.tar.gz
In jedem Fall wird während des Auspackens der Inhalt des Archives am Bildschirm angezeigt (durch die Option v bei tar), und am Ende steht dann ein neues Verzeichnis linux in /usr/src. In dieses sollte man nun wechseln und als erstes die Datei README lesen. Darin gibt es einen Abschnitt »INSTALLING the kernel«, in dem insbesondere einige symbolische Links aufgeführt sind, deren Existenz überprüft werden muß.

3.3 Konfiguration des Kernels

Hinweis: Der folgende Abschnitt wiederholt in Teilen den entsprechenden Abschnitt der Datei README.

Im Verzeichnis /usr/src/linux startet der Befehl

# make config

ein Konfigurationsskript, das eine ganze Menge Fragen stellt. Da dieses Skript zu seiner Abarbeitung zwingend die Shell bash benötigt, muß sichergestellt sein, daß diese Shell zur Verfügung steht: Entweder als /bin/bash, als /bin/sh oder aber unter dem in der Variablen $BASH angegebenen Pfad.

Mittlerweile gibt es einige Alternativen zu make config, die von den meisten als komfortabler angesehen werden. Wer mit dem X Window System arbeitet, sollte

# make xconfig

ausprobieren, sofern auch Tk installiert ist. Wer (n)curses installiert hat, und ein textbasiertes Menü bevorzugt, sollte

# make menuconfig

verwenden. Der große Vorteil beider Varianten ist, daß man bei einer Fehleingabe problemlos zum entspechenden Punkt zurückgehen und den Fehler korrigieren kann.

Die Fragen können im Normalfall mit y (Ja) oder n (Nein) beantwortet werden. Viele Treiber bieten außerdem die Option m an, dies steht für Modul. Dadurch wird der Treiber zwar kompiliert, aber nicht direkt in den endgültigen Kernel eingebunden, sondern als ladbares Modul bereitgestellt.

Seit der Version 2.0 des Kernels gibt es weiterhin zu fast allen Fragen die Antwortmöglichkeit ?. Dadurch wird ein kurzer Hilfetext der jeweiligen Konfigurationsmöglichkeit angezeigt. Die dort gegebene Information ist in jedem Fall die aktuellste.

Im folgenden werden einige der wichtigeren Optionen genauer erläutert. Weniger wichtige oder offensichtliche Optionen sind weiter unten im Abschnitt Weitere Konfigurationsmöglichkeiten zusammengestellt.

Kernel math emulation

Wer keinen mathematischen Koprozessor hat, weil er noch einen einfachen 386 oder einen 486SX benutzt, muß hier mit y antworten. Wer einen Koprozessor hat, kann trotzdem mit y antworten, denn der Kernel erkennt selbständig, wenn ein Koprozessor vorhanden ist und ignoriert dann den Emulator. Lediglich der Kernel wird dadurch etwa 45 kB größer und verbraucht unnötig RAM.

Angeblich ist die Emulation des Koprozessors relativ langsam. Dies mag mit ein Grund sein, warum das X Window System auf Rechnern ohne Koprozessor extrem langsam ist. Aber das gehört eigentlich nicht hierher.

Normal (MFM/RLL) disk and IDE disk/cdrom support

Die meisten werden hier mit y antworten, denn dadurch wird die Unterstützung für die normalen Festplatten der PCs aktiviert. Lediglich Besitzer von reinen SCSI-Systemen können hier n antworten.

Bei einer positiven Antwort kann man weiterhin zwischen dem alten »disk-only« und dem neueren IDE-Treiber auswählen. Der alte Treiber unterstützt maximal zwei Festplatten an einem einzigen Host-Adapter, der neue erlaubt eine weitere Schnittstelle und unterstützt auch IDE-/ATAPI-CD-ROMs. Der neue Treiber ist etwa 4 kB größer und sicherlich auch verbessert, d.h. außer einer anderen Anzahl an Fehlern kann er auch die Leistung der Festplatte erhöhen. Dies gilt vor allem für die neueren EIDE-Geräte.

Networking support

Normalerweise wird man hier nur dann mit y antworten, wenn der Rechner an ein Netzwerk wie das Internet angeschlossen ist, oder wenn man SLIP, PPP, TERM oder etwas ähnliches verwenden will, um sich über ein Modem in ein Netzwerk einzuklinken. Da aber viele Pakete wie z.B. das X Window System Netzwerkunterstützung benötigen, selbst wenn der Rechner gar nicht wirklich an ein Netz angeschlossen ist, sollte man hier y antworten. Gleiches gilt für die etwas später kommende Frage nach »TCP/IP networking«. Wer sich nicht ganz sicher ist, sollte y sagen.

Limit memory to low 16MB

Es gibt einige fehlerhafte 386er DMA-Controller, die RAM-Bereiche oberhalb von 16 MB nicht fehlerfrei adressieren können. In den seltenen Fällen, daß man einen solchen besitzt, sollte man hier mit y antworten.

System V IPC

Eine der besten Definitionen, was IPC (Inter Process Communication) ist, findet sich im Glossar von Büchern über Perl. Kein Wunder, denn gerade Perl-Programmierer verwenden es, um verschiedenen Prozesse miteinander kommunizieren zu lassen. Auch viele andere Programmpakete (z.B. DOOM) verwenden IPC, es ist also keine gute Idee, es zu deaktivieren, außer man weiß genau was man tut.

Processor type (386, 486, Pentium, PPro)

In älteren Kernels lautete die Frage: »Use -m486 flag for 486-specific optimizations«. Früher wurden dadurch bestimmte Optimierungen für einen speziellen Prozessortyp aktiviert. Die Kernels wurden dadurch etwas in der Größe verändert, liefen aber auch auf anderen Prozessortypen. Dies gilt aber inzwischen nicht mehr, man sollte unbedingt den Prozessortyp angeben, für den der Kernel gedacht ist. Lediglich ein 386er Kernel arbeitet auf allen Rechnern.

SCSI support

Wer einen SCSI-Adapter und -Geräte besitzt, antwortet hier mit y. Es werden dann weitere Fragen zu Unterstützung unterschiedlicher Hardware (CD-ROM, Bandlaufwerk) gestellt. Das SCSI HOWTO gibt hier nähere Hilfestellungen.

Network device support

Wer eine Netzwerk-Karte besitzt, oder SLIP/PPP verwenden will, sagt hier y. Das Konfigurationsskript fragt dann nach der genauen Art der Hardware und welche Protokolle verwendet werden sollen.

Dateisysteme

Das Konfigurationsskript erfragt die Unterstützung für folgende Dateisysteme:

Standard (minix)

Die neueren Distributionen legen kaum noch minix-Dateisysteme an, und nur noch wenige Leute benutzen es. Dennoch kann es nicht schaden, dieses Dateisystem zu unterstützen. Einige Rettungsdisketten verwenden es, und auch sehr viele Floppies, die unter Unix verwendet werden, verwenden es, da es auf diesen viel einfacher zu benutzen ist.

Extended fs

Dies war die erste Version des erweiterten Dateisystem extfs, sie ist aber kaum noch in Gebrauch. Wer es benötigt, weiß das; alle anderen können ohne Gefahr mit n antworten.

Second extended

Dies ist das am weitesten verbreitete Dateisystem, praktisch alle neueren Distributionen verwenden es. Ziemlich sicher wird man hier also mit y antworten.

xiafs filesystem

Dieses Dateisystem - eine Alternative zu extfs - war einmal recht verbreitet, heute arbeitet aber kaum noch jemand damit.

msdos

Wer auf seine DOS-Partition unter Linux zugreifen will oder Disketten im DOS-Format mounten will, antwortet hier y.

vfat

Das Dateisystem von Win95, das endlich auch lange Dateinamen erlaubt. Wer Zugriff auf seine Win95-Partition haben will, sagt y.

umsdos

Dieses Dateisystem benutzt das einfache DOS System, um darauf ein Unix-Dateisystem mit allen Vorzügen (lange Dateinamen etc.) anzulegen. Ganz nett, wenn man Linux nur mal probieren will und seine DOS-Partition nicht neu formatieren will. Aber es ist relativ langsam und nicht sehr sinnvoll für diejenigen, die kein DOS verwenden.

/proc

Eine der größten Ideen seit der Erfindung des Milchpulvers; die Idee ist wohl von den Bell Labs abgeschaut. Man legt nicht wirklich ein Verzeichnis /proc auf der Festplatte an, dies ist vielmehr eine Schnittstelle zum Kernel und den laufenden Prozessen in Form eines Dateisystems. Sehr viele Hilfsprogramme wie z.B. ps benutzen es; auch einige Shells, insbesondere rc, verwenden /proc/self/fd, das auf anderen Systemen als /dev/fd bekannt ist, für den I/O. Diese Frage sollte unbedingt mit y beantwortet werden, da sehr viele wichtige Dinge und Programme unter Linux darauf angewiesen sind.

NFS

Wer seinen Rechner an ein Netzwerk angeschlossen hat und Verzeichnisse von anderen Rechnern in das eigene Dateisystem einklinken will, sagt hier y.

ISO9660

Das ist das Dateisystem der meisten CD-ROMs. Wer ein CD-Laufwerk besitzt und es unter Linux benutzen will, sagt auch hier y.

HPFS

Das ist das Dateisystem von OS/2. Im Moment kann es nur gelesen, aber nicht geschrieben werden.

System V und Coherent

System V und Coherent sind andere Varianten von Unix für PCs. Sie verwenden ein eigenes Dateisystem, das Linux natürlich auch unterstützt.

UFS

UFS wird von Sun und FreeBSD verwendet. Wer entsprechende Systeme hat, wird hier mit y antworten und kann dann - bislang allerdings nur lesend - auf deren Partitionen zugreifen.

Amiga FFS

Dies ist ein experimenteller Treiber für das Amiga Dateisystem.

Welche Dateisysteme brauche ich denn?

Auf jeden Fall diejenigen, die im alten System auch benötigt werden. Dies erfährt man, indem man den mount Befehl ohne Parameter benutzt:

$ mount
/dev/hda1 on / type ext2 (defaults)
/dev/hda3 on /usr type ext2 (defaults)
none on /proc type proc (defaults)
/dev/fd0 on /mnt type msdos (defaults)

In jeder einzelnen Zeile gibt das Wort nach type das jeweilige Dateisystem an. In diesem Beispiel sind / und /usr vom Typ ext2, also Second Extended. Das /proc System wird unterstützt, außerdem ist eine Diskette unter /dev/fd0 mit dem DOS-FAT gemounted.

Eine andere Möglichkeit, die derzeit unterstützten Dateisysteme herauszubekommen, stellt das /proc-Verzeichnis dar, vorausgesetzt natürlich, es ist im laufenden Kernel aktiviert. Hier ein Beispiel:

$ cat /proc/filesystems
        ext2
nodev   proc
        msdos
nodev   nfs

Nur sehr selten genutzte Dateisysteme in den Kernel einzubinden führt schnell zu einem unnötig großen Kernel; gleiches gilt natürlich auch für selten genutzte Hardware-Treiber. Eine sehr elegante Methode, dies zu umgehen, stellen die Module dar. Dies wird in einem späteren Abschnitt beschrieben. Warum ein großer Kernel generell von Nachteil ist, wird im Abschnitt Einige Fußangeln erläutert.

Character Devices

Hier kann man die Treiber für den Drucker bzw. den Parallelport, Bus-Mäuse, PS/2-Mäuse (das PS/2 Protokoll wird bei vielen Notebooks für den Trackball verwendet) sowie einige Bandlaufwerke aktivieren.

Sound card

Wer sein biff unbedingt bellen lassen will ;-), sollte hier mit y antworten. Dann wir etwas später ein weiteres Konfigurationsprogramm kompiliert und ausgeführt, das alles über die Konfiguration der Soundkarte abfragt. Dazu ein Hinweis: Bei der Frage, ob der komplette Sound-Treiber installiert werden soll, kann man mit n antworten und im darauffolgenden Dialog nur die gewünschten Komponenten aktivieren, das spart etwas Platz im Kernel. Das Sound HOWTO gibt hier weitere Informationen.

Weitere Konfigurationsmöglichkeiten

Hier sind bei weitem nicht alle auftretenden Optionen aufgeführt. Zum einen ändert sich das Konfigurationsskript mit jedem neu hinzugekommenen Treiber (was recht häufig geschieht), außerdem sind viele der Fragen selbsterklärend: Unterstützung für die Netzwerk-Karte 3Com 3C509 braucht man genau dann, wenn man diese Karte auch besitzt, usw. Im Zweifel gibt die Online-Hilfe durch Eingabe von ? einen kurzen Hinweis.

Kernel hacking

Hierzu ein Zitat aus dem README von Linus:

Die Aktivierung der »Kernel hacking« Option führt im Normalfall zu einem größeren oder langsameren Kernel (oder sogar beides). Dadurch kann der Kernel sogar definitiv instabiler werden, da manche Routinen dann etwas unterschiedlich kompiliert werden, um gezielt schlechte Routinen zum Absturz zu bringen und dadurch Fehler im Kernel aufzudecken (kmalloc()). Soll der Kernel ganz normal verwendet werden, sollte man deshalb hier mit n antworten.

3.4 Das Makefile

Wird make config ordnungsgemäß beendet, teilt eine kurze Meldung mit, daß der Kernel nun konfiguriert ist und man das »Top-Level Makefile« auf zusätzliche Konfigurationsoptionen hin untersuchen soll.

Derzeit ist die einzige Option, die im Makefile direkt eingestellt wird, die Unterstützung von SMP (Symmetric Multi-Processing) für Mainboards mit mehr als einem Prozessor. Wer ein solches Board besitzt, sollte unbedingt auch die Datei /usr/src/linux/Documentation/SMP.txt lesen.


Inhalt