Inhalt

4. Die Kompilierung

4.1 clean und depend

Am Ende der Konfiguration weist das Skript ebenfalls darauf hin, man solle ein make dep sowie ein make clean durchführen. Dies sollte man in jedem Fall tun, damit die wechselseitigen Abhängigkeiten der Quell- und Include-Dateien richtig zusammengestellt werden. Dies dauert nicht sehr lange; auf meinem DX/2-80 aber fast länger als die komplette Kompilierung des Kernels. Danach löscht man mit make clean alle alten Objekt-Dateien und stellt so sicher, das sie wirklich neu übersetzt werden. Dieser Schritt ist wirklich wichtig, und einige fehlgeschlagene Kompilierungsversuche beruhten nur auf einem vergessenen:

# make dep 
# make clean

4.2 make

Nun kommt der zeitraubende Teil.

# make zImage

kompiliert den gesamten Kernel und hinterläßt die Datei zImage im Verzeichnis arch/i386/boot. Dies ist der neue, komprimierte Kernel.

# make zdisk

macht dasselbe, installiert aber diesen neuen Kernel gleich auf eine Diskette, die man hoffentlich rechtzeitig in das Laufwerk A: geschoben hat. Die letztere Methode ist ziemlich praktisch, um neue Kernels relativ gefahrlos zu testen. Wenn er aus irgendeinem Grund nicht richtig funktioniert oder gar abstürzt, nimmt man einfach die Diskette aus dem Laufwerk und bootet den alten Kernel. Generell ist es immer eine gute Idee, eine solche bootfähige Diskette mit einem funktionierenden Kernel zur Hand zu haben. Denn irgendwann kommt immer der Tag, an dem man aus Versehen den Kernel von der Festplatte löscht oder eine ähnliche Dummheit begeht.

Alle halbwegs aktuellen Kernels sind komprimiert, daher das z am Anfang der Namen. Ein solcher komprimierter Kernel entpackt sich automatisch selber, wenn er bootet.

4.3 Andere Optionen (»Targets«) für make

make mrproper macht etwas ähnliches wie clean, aber sehr viel umfassender. Manchmal ist das notwendig, um ein wirklich »sauberen« Verzeichnisbaum zu generieren. Dabei werden aber auch die alten Einstellungen der Konfiguration gelöscht; eventuell sollte man sich deshalb eine Sicherungskopie der Datei .config aufheben, um bei Bedarf die alten Einstellungen nachsehen zu können.

make oldconfig versucht, die Kernel-Konfiguration automatisch anhand einer alten Konfigurationsdatei durchzuführen. Wer noch nie einen Kernel kompiliert hat, sollte diese Option besser nicht benutzen, da sicherlich die eine oder andere Einstellung verändert werden muß.

make modules wird in einem eigenen Abschnitt beschrieben.

4.4 Installation des neuen Kernels

Jetzt, nachdem der Kernel erfolgreich den eigenen Wünschen entsprechend kompiliert wurde, ist es an der Zeit, ihn zu installieren. Die meisten Leute benutzen LILO, den Linux Loader, um Linux und eventuell auch einige weitere Betriebssysteme zu booten. Für diesen Fall genügt meist ein einfaches make zlilo. Dabei wird der Kernel kompiliert, installiert und lilo aufgerufen. Danach sollte alles für einen Reboot des neuen Kernels bereit sein.

Das funktioniert aber nur dann, wenn lilo folgendermaßen eingestellt und installiert ist: Der Kernel ist /vmlinuz, lilo befindet sich in /sbin und die Konfigurationsdatei für lilo (/etc/lilo.conf) stimmt mit dieser Einstellung überein. Ist dies nicht der Fall, muß man lilo selber aufrufen, nachdem der neue Kernel an die richtige Stelle kopiert wurde.

Eigentlich ist lilo ein Paket, das sehr einfach zu installieren und auch zu benutzen ist. Dennoch lassen sich manche von der Konfigurationsdatei (/etc/lilo.conf oder, bei älteren Versionen, /etc/lilo/config) verwirren. Ein typischer Eintrag in dieser Datei sieht so aus:

image = /vmlinuz
    label = Linux
    root = /dev/hda1
    ...

Der Eintrag image = gibt den vollen Pfad des gegenwärtig installierten Kernels an; die meisten verwenden /vmlinuz. label gibt einen Namen, unter dem man diesen Eintrag, wenn mehrere Einträge vorhanden sind, ansprechen kann, und root gibt diejenige Partition der Festplatte an, die als / gemountet werden soll. Um für das hier beschriebene System den neuen Kernel zu installieren, sollte man also vom alten Kernel eine Sicherheitskopie machen, den neuen Kernel an die angegebene Stelle kopieren und lilo aufrufen:

# mv /vmlinuz /Old_Kernel
# mv /usr/src/linux/arch/i386/boot/zImage /vmlinuz
# lilo

Bei älteren Versionen von lilo muß die letzte Zeile eventuell

# /etc/lilo/install
oder sogar
# /etc/lilo/lilo -C /etc/lilo/config
lauten.

Beispiel für eine LILO-Konfiguration

LILO kann im Prinzip beliebig viele verschiedene Systeme booten, deshalb kann man es auch sehr gut dazu verwenden, neuen und alten Kernel gleichzeitig bootfähig zu machen. Hierzu ein Beispiel, wobei Zeilen, die mit einem # beginnen, als Kommentare verstanden werden:

# LILO Konfigurationsdatei       
#            von Peter Sütterlin, September 1996
#
# Start des globalen Abschnittes

boot = /dev/hda
message=/etc/lilo.bootmenue
compact
prompt
timeout = 100
image = /vmlinuz
        label = 1
        root = /dev/hda2
image = /vmlinuz_old
        label = 2
        root = /dev/hda2
other = /dev/hda1
        label = 3
        table = /dev/hda

Der erste Eintrag gibt an, wo LILO installiert werden soll; hier auf der ersten Festplatte. In der zweiten Zeile wird eine Datei angegeben, deren Inhalt LILO beim Laden am Bildschirm ausgibt. In dieser Datei steht etwa folgendes:

^LBitte eine der angegebenen Konfigurationen auswaehlen:

Def. --> 1  Linux (neuer Kernel)

         2  Linux (alter Kernel)

         3  MSDOS 6.0

Das ^L (CONTROL-L) am Anfang bewirkt dabei, daß der Bildschirm gelöscht wird. Der dritte Eintrag (compact) optimiert den Ladevorgang. Das prompt in der nächsten Zeile bewirkt, daß LILO auf eine Eingabe des Benutzers wartet, der nun auswählen kann, welche der drei Konfigurationen er starten will. Auf diese Eingabe wartet LILO 10 Sekunden (timeout = 100) und lädt dann automatisch den ersten Eintrag der folgenden Liste. Diese Liste enthält hier drei Einträge. Die ersten beiden beginnen mit image = und weisen damit auf Linux-Systeme hin. Der dritte Eintrag (other = /dev/hda1) betrifft ein nicht näher spezifiziertes Betriebssystem, dessen Boot-Partition /dev/hda1 ist; in diesem Fall ist es eine DOS-Partition.

Aus diesen drei Möglichkeiten kann man nun, wie in der Meldung angegeben, durch Drücken der Tasten 1, 2 oder 3, entsprechend den Einträgen label= in den einzelnen Abschnitten, eine auswählen.

Dies beschreibt nur äußerst knapp die unzähligen Möglichkeiten, die LILO bietet. Wer sich näher darüber informieren will, sollte die sehr ausführliche Dokumentation, die mit LILO mitgeliefert wird, studieren.


Inhalt