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:
metalab.unc.edu:/pub/Linux/kernel
tsx-11.mit.edu:/pub/linux/sources/system
sunsite.doc.ic.ac.uk:/pub/unix/Linux/sunsite.unc-mirror/kernel
ftp.univie.ac.at:/systems/linux/sunsite/kernel
ftp.Germany.EU.net:/pub/os/Linux/Local.EUnet/Kernel/Linus
sunsite.informatik.rwth-aachen.de:/pub/Linux/PEOPLE/Linus
ftp.ibp.fr:/pub/linux/sources/system/patches
sunsite.anu.edu.au:/pub/linux/kernel
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
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:
# uname -r
1.2.13
/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ß.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Das Konfigurationsskript erfragt die Unterstützung für folgende Dateisysteme:
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.
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.
Dies ist das am weitesten verbreitete Dateisystem, praktisch alle
neueren Distributionen verwenden es. Ziemlich sicher wird man hier also
mit y
antworten.
Dieses Dateisystem - eine Alternative zu extfs - war einmal recht verbreitet, heute arbeitet aber kaum noch jemand damit.
Wer auf seine DOS-Partition unter Linux zugreifen will oder Disketten im
DOS-Format mounten will, antwortet hier y
.
Das Dateisystem von Win95, das endlich auch lange Dateinamen erlaubt.
Wer Zugriff auf seine Win95-Partition haben will, sagt y
.
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.
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.
Wer seinen Rechner an ein Netzwerk angeschlossen hat und Verzeichnisse
von anderen Rechnern in das eigene Dateisystem einklinken will, sagt
hier y
.
Das ist das Dateisystem der meisten CD-ROMs. Wer ein CD-Laufwerk
besitzt und es unter Linux benutzen will, sagt auch hier y
.
Das ist das Dateisystem von OS/2. Im Moment kann es nur gelesen, aber nicht geschrieben werden.
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 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.
Dies ist ein experimenteller Treiber für das Amiga Dateisystem.
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.
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.
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.
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.
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 mitn
antworten.
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.