Manuelle Installation des neuen Kernes

[Note]Anmerkung

Die Vorgehensweise in diesem Kapitel bezieht sich auf die x86-Architektur. Falls Sie eine andere Architektur benutzen können sowohl die Speicherorte der Dateien als auch die zu installierenden Dateien differieren.

Der Kern befindet sich in der Datei arch/i386/boot/bzImage. Das Standardverzeichnis,in dem Kerne installiert werden, ist /boot. Sie müssen außerdem die Datei System.map kopieren, um sicherzugehen, dass einige Programme (beispielsweise top) korrekt funktionieren. Eine gute Vorgehensweise ist auch hier: benennen Sie diese Dateien nach der Kernversion. Nehmen wir an, Ihre Kernversion ist 2.6.8-foo. Die Befehls-Sequenz lautet in diesem Fall:

$ cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.8-foo
$ cp System.map /boot/System.map-2.6.8-foo

Nun müssen Sie dem Betriebssystemstarter mitteilen, dass ein neuer Kern vorhanden ist. Ihre Distributooopn bietet Ihnen zwei Starter: GRUB oder LILO. Beachten Sie, dass Mandrakelinux standardmäßig mit LILO installiert wird.

Aktualisierung von LILO

Der einfachste Weg, LILO zu aktualisieren, ist die Benutzung von drakboot (siehe Kapitel Ändern Ihrer Startkonfiguration im Starter Handbuch). Alternativ können Sie die Konfigurationsdatei manuell bearbeiten:

Die Konfigurationsdatei für LILO ist /etc/lilo.conf. So sieht etwa eine typische lilo.conf aus:

boot=/dev/hda
map=/boot/map
default="linux"
keytable=/boot/de-latin1.klt
prompt
nowarn
timeout=50
message=/boot/message
menu-scheme=wb:bw:wb:bw
image=/boot/vmlinuz
        label="linux"
        root=/dev/hda1
        read-only
        initrd=/boot/initrd.img
        append="devfs=mount resume=/dev/hda5"
other=/dev/fd0
        label="floppy"
        unsafe

Eine lilo.conf enthält eine allgemeine Sektion, gefolgt von je einem Abschnitt für jedes Betriebssystem. Im vorhergehenden Beispiel wird der allgemeine Abschnitt durch die folgenden Anweisungen gebildet:

boot=/dev/hda
map=/boot/map
default="linux"
keytable=/boot/de-latin1.klt
prompt
nowarn
timeout=50
message=/boot/message
menu-scheme=wb:bw:wb:bw

Die Anweisung boot= teilt LILO mit, wo sein Bootsektor installiert werden soll. In diesem Falle ist es der MBR (Master Boot Record) der ersten IDE-Festplatte. Wenn Sie eine LILO - Diskette erstellen wollen, dann ersetzen Sie einfach /dev/hda mit /dev/fd0. Die Anweisung prompt teilt LILO mit, dass ein Startmenü erscheinen soll. Da ein Timeout gesetzt wurde, startet LILO das Standardsystem in 5 Sekunden (timeout=50). Wenn Sie die Timeout-Anweisung entfernen, wird LILO beim Systemstart warten, bis Sie etwas eingeben.

Dann kommt der Bereich linux:

image=/boot/vmlinuz
        label="linux"
        root=/dev/hda1
        initrd=/boot/initrd.img
        append="devfs=mount resume=/dev/hda5"
        read-only

Ein Abschnitt, der ein GNU/Linux Betriebssystem startet, beginnt immer mit einer image= Anweisung, gefolgt von dem vollständigen Pfad zu einem gültigen GNU/Linux Kern. Wie jede andere Sektion beinhaltet es eine label= Anweisung zur eindeutigen Identifizierung, hier linux. Die root= Anweisung teilt LILO mit, welche Partition die Verzeichnisbaumwuzel beherbergt, das Dateisystem für diesen Kern. Das kann, je nach Konfiguration, unterschiedlich sein. Die read-only Anweisung teilt LILO mit, dass es dieses Dateisystem beim Start nur zum Lesen einhängen soll: wenn diese Anweisung nicht gesetzt wurde, bekommen Sie eine Warnung angezeigt. Mit der append Anweisung gibt man dem Kern Optionen mit.

Nun folgt der Bereich für die Startdiskette:

other=/dev/fd0
        label="floppy"
        unsafe 

Sektionen, die mit other= beginnen, werden von LILO benutzt um andere Betriebssysteme zu starten. Das Argument dieser Anweisung ist die Lage des Bootsektors dieses Systems ‐ in diesem Fall handelt es sich um eine Start-Diskette.

Jetzt ist es an der Zeit, dass wir eine Sektion für unseren neuen Kern hinzufügen. Sie können diese Sektion überall hinter den allgemeinen Abschnitt schreiben, nur nicht innerhalb eines anderen Abschnitts. Das könnte also so aussehen:

image=/boot/vmlinuz-2.6.8-foo
label="foo"
root=/dev/hda1
read-only
append="devfs=mount resume=/dev/hda5"

Selbstverständlich müssen Sie das auf Ihre Konfiguration anpassen!

So sollte Ihre lilo.conf nach der Änderung aussehen, versehen mit einigen passenden Kommentaren (diese beginnen mit #), die von LILO ignoriert werden:

#
# Allgemeiner Bereich
#
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message
# Was soll standardmäßig gestartet werden? Nehmen wir unseren neuen Kern:
default="foo"
# Prompt anzeigen...
prompt
# ... 5 Sekunden warten
timeout=50
#
# Unser neuer Kern:
#
image=/boot/vmlinuz-2.6.8-foo
        label="foo"
        root=/dev/hda1
        read-only
        append="devfs=mount resume=/dev/hda5"
#
# Der Orginalkern:
#
image=/boot/vmlinuz
        label="linux"
        root=/dev/hda1
        read-only
        append="devfs=mount resume=/dev/hda5"
#
# Starten von Diskette:
#
other=/dev/floppy
        label="floppy"
        unsafe

So könnte also Ihre Datei lilo.conf aussehen, aber denken Sie noch einmal daran, sie Ihrer eigenen Konfiguration anzupassen.

Nun, da die Datei entsprechend geändert wurde, müssen Sie ‐ im Unterschied zu GRUBLILO noch anweisen, den Bootsektor zu ändern:

$ lilo
Added foo *
Added linux
Added floppy
$

Auf diesem Wege können Sie so viele Kern kompilieren, wie Sie wollen und sie jeweils in einen neuen Abschnitt eintragen. Alles was Sie jetzt noch zu tun haben ist, den Rechner neu zu starten um den neuen Kern zu testen. Beachten Sie, dass LILO bei irgendeiner Fehlermeldung während der Installation nichts verändert.

Aktualisierung von Grub

Sie sollten die Möglichkeit, den aktuell benutzten Kern zu starten, unbedingt beibehalten! Der einfachste Weg, GRUB zu aktualisieren, ist die Benutzung von drakboot (siehe Kapitel Ändern Ihrer Startkonfiguration in Starter Handbuch). Alternativ können Sie die Konfigurationsdatei auch manuell wie Folgt ändern:

Sie müssen die Datei /boot/grub/menu.lst editieren. So sollte eine typische menu.lst nach der Installation Ihrer Mandrakelinux Distribution und vor einer Veränderung aussehen:

timeout 5
color black/cyan yellow/cyan
i18n (hd0,4)/boot/grub/messages
keytable (hd0,4)/boot/de-latin1.klt
default 0

title linux
kernel (hd0,4)/boot/vmlinuz root=/dev/hda5

title failsafe
kernel (hd0,4)/boot/vmlinuz root=/dev/hda5 failsafe 

title Windows
root (hd0,0)
makeactive
chainloader +1 

title floppy
root (fd0)
chainloader +1

Diese Datei besteht aus zwei Teilen: der Kopf mit allgemeinen Optionen (die ersten fünf Zeilen) und die Images, jedes davon für einen GNU/Linux Kern oder ein anderes BS. timeout 5 legt die Zeit in Sekunden fest, in der GRUB auf eine Eingabe wartet, bevor das Standardimage gestartet wird. Dieses wird in den allgemeinen Optionen mit der Anweisung default 0 (das erste Image) definiert. Die Anweisung keytable, wenn vorhanden, bestimmt, wo das Layout für Ihre Tastatur zu finden ist. In diesem Beispiel ist es ein deutsches Layout. Ist keine solche Anweisung vorhanden, wird es als normales QWERTY-Keyboard angesprochen. Alle Anweisungen in der Form von hd(x,y), die Sie sehen, beziehen sich auf Partitionsnummer y auf Festplatte Nummer x, vorgegeben vom BIOS.

Es folgen die verschiedenen Images. In diesem Fall sind vier Images definiert: linux, failsafe, windows und floppy.

  • Die Sektion linux startet mit der Übergabe des zu ladenden Kernes an GRUB (kernel hd(0,4)/boot/vmlinuz), gefolgt von den Optionen, die an den Kern übergeben werden sollen. In diesem Fall teilt root=/dev/hda5 dem Kern mit, dass die Verzeichnisbaumwurzel sich auf /dev/hda5 befindet. Tatsächlich ist /dev/hda5 das Äquivalent zu GRUB's hd(0,4), aber der Kern kann sich auch auf einer anderen Partion befinden als derjenigen, auf der die Verzeichnisbaumwurzel liegt.

  • Der Abschnitt failsafe ist dem vorhergehenden sehr ähnlich, abgesehen davon, dass wir ein Argument an den Kern übergeben (failsafe), das ihn anweist, in den „Single-“ oder „Rescue-“ Modus zu wechseln.

  • Der Abschnitt Windows übermittelt GRUB den Bootsektor der ersten Partition zu laden, der vermutlich einen Windows® Bootsektor enthält.

  • Der Abschnitt floppy startet das auf der Diskette befindliche System. Das kann sowohl eine Windows®- als auch eine GNU/Linux-Startdiskette sein, oder ein ganz anderes Betriebssystem;

[Note]Anmerkung

Abhängig von der Sicherheitsebene, die Sie auf Ihrem System benutzen, können einige der hier beschriebenen Einträge in Ihrer Konfigurationsdatei fehlen.

Nun zur Sache: Wir müssen einen weiteren Abschnitt hinzufügen, um GRUB über den neuen Kern zu informieren. In diesem Beispiel soll er vor den anderen Einträgen stehen, Sie können ihn aber auch an anderer Stelle zu platzieren:

title foo
kernel (hd0,4)/boot/vmlinuz-2.6.8-foo root=/dev/hda5

Vergessen Sie nicht, die Datei an Ihre Konfiguration anzupassen! Das GNU/Linux Root-Dateisystem ist hier auf /dev/hda5 zu finden. Auf Ihrer Festplatte kann es sich aber auch an anderer Stelle befinden.

Das war's! Anders als bei LILO (wie wir weiter oben gesehen haben), ist hier nichts weiter zu tun. Starten Sie Ihren Rechner neu und Ihr neu definierter Eintrag wird erscheinen. Wählen Sie ihn im Menü aus und der neue Kern wird gestartet.

Wenn Sie den neuen Kern mit der Framebuffer-Option kompiliert haben, werden Sie ihn vermutlich verwenden wollen: in diesem Fall müssen Sie eine Anweisung zum Kern hinzufügen, die ihm mitteilt, in welcher Auflösung gestartet werden soll. Die Liste der möglichen Einstellungen finden Sie in /usr/src/linux/Documentation/fb/vesafb.txt (nur im Falle eines VESA-Framebuffers! Anderenfalls lesen Sie die entsprechende Datei). Für eine Auflösung von 800x600 mit 32 Bit Farbtiefe[36] ist die Modusnummer 0x315. Fügen Sie also diese Anweisung hinzu:

vga=0x315

und Ihr Eintrag sieht jetzt so aus:

title foo
kernel (hd0,4)/boot/vmlinuz-2.6.8-foo root=/dev/hda5 vga=0x315 

Weitere Informationen über GRUB erhalten Sie auf dessen Info-Seiten (info grub).



[36] 8 Bits bedeuten 28 Farben, also 256; 16 Bits bedeuten 216 Farben, also 64k oder 65536; in 24 Bits wie in 32 Bits bekommen Sie 224 mögliche Farben, in anderen Worten 16M oder exakt ein wenig mehr als 16 Millionen mögliche Farben dargestellt.