Der Unix-Kernel stellt eine Art Vermittler zwischen den Anwenderprogrammen und der Hardware des Computers dar. Er verwaltet den Arbeitsspeicher des Rechners und sorgt dafür, daß jedes laufende Programm (Prozeß) angemessene Anteile der Prozessor-Arbeitszyklen zugewiesen bekommt. Der Kernel stellt eine von der speziellen Hardware unabhängige Schnittstelle zum Zugriff auf diese Hardware zur Verfügung.
Es gibt zwar noch eine Menge weiterer Dinge, für die der Kernel zuständig ist, doch sind dies die wichtigsten, über die jeder Bescheid wissen sollte.
Zunächst unterstützen neuere Kernels praktisch immer mehr Hardware als die älteren, d.h. sie besitzen zusätzliche Treiber. Sie haben auch oft eine bessere Prozeßverwaltung und arbeiten dadurch manchmal deutlich schneller. Sie können einfach stabiler sein als die alten Versionen und dumme Fehler beheben, die sich in diesen noch versteckt hatten. Der häufigste Grund für einen Kernel-Upgrade sind wohl die Treiber und die korrigierten Fehler.
Die Anzahl der unterstützten Hardware ist inzwischen sehr groß und
wächst laufend weiter. Das
Hardware HOWTO befaßt sich
speziell mit diesem Thema. Alternativ kann man sich auch die Datei
/usr/src/linux/config.in
der Kernel-Quellen ansehen oder
einfach bei einem make config
schauen, was alles angeboten
wird. Dabei wird allerdings nur aufgeführt, was die
Standard-Kerneldistribution unterstützt. Darüber hinaus gibt es aber noch eine
Unmenge an zusätzlichen Treibern, die unabhängig vom eigentlichen Kernel
entwickelt und verwaltet werden. Die PCMCIA-Treiber, die als Module in
den Kernel eingebunden werden, sind hierfür ein Beispiel.
Linus empfiehlt im README
der Kernel-Quellen eine Version, mit
der dieser Kernel kompiliert werden sollte. Ist diese Version des gcc
auf dem eigenen System noch nicht vorhanden, so sollte man sie installieren.
Welche Version der libc man für eine bestimmte Version des gcc
-Kompilers
benötigt, kann man der Dokumentation des Kompilers entnehmen. Dies ist
keine sehr schwierige Prozedur, man muß sich nur genau an die
Anweisungen halten.
Das sind Teile des Kernels, die nicht direkt in den Kernel eingebunden (linked) sind. Man kompiliert sie separat und kann sie nach Belieben in den laufenden Kernel einbinden und wieder entfernen. Aufgrund dieser extremen Flexibilität ist das inzwischen der bevorzugte Weg, um bestimmte Dinge im Kernel zu programmieren. Viele verbreitete Treiber, wie z.B. die PCMCIA- oder QIC-80/40-Treiber, sind solche ladbaren Module.
Das hängt etwas von der jeweiligen Systemkonfiguration ab. Die komprimierten Quellen des Kernels der Version 2.0.10 sind bereits fast 6 Megabytes groß, unkomprimiert belegen sie dann etwa 24 MB. Doch das ist noch nicht alles - man will den Kernel ja schließlich auch kompilieren. Für ein »typisches« System (Netzwerk, SCSI, drei oder vier verschiedene Dateisysteme, Unterstützung der seriellen und parallelen Schnittstellen) muß man etwa 30 MB einkalkulieren. Will man die eigentlichen Kernelquellen auch noch in ihrer komprimierten Form aufbewahren, kommen so 36 MB zusammen. Für Systeme, die weit mehr Treiber benötigen, kann es auch mehr sein. Weiterhin sollte man bedenken, daß neuere Kernels mit Sicherheit noch mehr Platz verbrauchen werden. Man sollte also mit Blick in die Zukunft nicht zu knapp kalkulieren. Andererseits ist es bei den heutigen Preisen für Festplatten auch kein allzu großes Problem mehr, bei Platzmangel einfach eine weitere Platte zu kaufen.
Für die meisten Leute lautet die Antwort: »Ziemlich lang«. Die Leistungsfähigkeit des jeweiligen Systems sowie der zur Verfügung stehende Arbeitsspeicher geben hier den Ausschlag, ein wenig kann man diese Zeit auch durch die Anzahl der Treiber beeinflussen, die man einbinden will. Auf einem 486DX4/100 mit 16 MB RAM dauert die Kompilierung eines Kernels der Version 1.2 mit fünf Dateisystemen, Netzwerk- und Soundkartenunterstützung etwa 20 Minuten. Ein 386DX/40 mit 8 MB benötigt für dieselbe Konfiguration etwa 1,5 Stunden. Es empfiehlt sich also je nach Ausstattung, in der Zwischenzeit einen Kaffee zu kochen oder zu lesen. Eine andere Möglichkeit besteht darin, den Kernel von einem Bekannten mit einem schnelleren Rechner kompilieren zu lassen. Auf einem Pentium Pro Multiprozessorrechner dauert es nur ein paar Minuten :-).