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.
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.
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 GRUB ‐ LILO 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.
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;
![]() | 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.