Gentoo Logo

[ << ] [ < ] [ Hauptseite ] [ > ] [ >> ]


10. Konfiguration des Bootloaders

Inhalt:

10.a. Eine Wahl treffen

Einleitung

Nun, da Ihr Kernel konfiguriert und kompiliert ist und die notwendigen Systemkonfigurationsdateien richtig konfiguriert sind, ist es Zeit ein Programm zu installieren, dass Ihren Kernel lädt wenn Sie Ihr System starten. Solch ein Programm nennt man einen Bootloader.

Für x86 bietet Gentoo Linux GRUB und LILO.

Bevor Sie jedoch einen der beiden Bootloader installieren, informieren wir Sie darüber, wie der Framebuffer (natürlich nur wenn Sie diesen einrichten wollen) eingerichtet wird. Mit Framebuffer können Sie die Linux-Kommandozeile mit (begrenzten) grafischen Erweiterungen (wie die netten Bootsplash-Bilder, die Gentoo liefert) nutzen.

Optional: Framebuffer

Wenn Sie Ihren Kernel mit Framebufferunterstützung konfiguriert haben (oder die genkernel Standardkonfiguration nutzen), müssen Sie ein vga und/oder eine video Anweisung zu Ihrer Bootloaderkonfigurationsdatei hinzufügen, wenn sie Framebuffer benötigen.

Zuerst müssen Sie wissen, welchen Typ von Framebuffer-Gerät Sie verwenden. Wenn Sie einen von Gentoo gepatchten Kernel verwenden (wie die gentoo-sources) hatten Sie die Möglichkeit vesafb-tng als VESA driver type auszuwählen (welches der Standard für diese Kernelquellen ist). Wenn dies der Fall ist benutzen Sie vesafb-tng und benötigen die vga Anweisung nicht. Andernfalls benutzen Sie den vesafb Treiber und müssen diese Anweisung setzen.

Die vga Anweisung kontrolliert die Größe und die Farbtiefe des Framebuffers für vesafb. Wie in /usr/src/linux/Documentation/fb/vesafb.txt (wird mit einem Kernelquellpaket installiert) erwähnt, müssen Sie dem Kernel die VESA-Nummer passend zur gewünschten Auflösung und Farbtiefe mitgeben.

Die folgende Tabelle listet die verfügbaren Auflösungen und Farbtiefen auf und zeigt die dazu die Werte, welche an die vga Anweisung übergeben werden müssen.

640x480 800x600 1024x768 1280x1024
256 0x301 0x303 0x305 0x307
32k 0x310 0x313 0x316 0x319
64k 0x311 0x314 0x317 0x31A
16M 0x312 0x315 0x318 0x31B

Die video Anweisung kontrolliert Framebuffer-Display-Optionen. Es benötigt den Framebuffer-Treiber (vesafb für 2.6 Kernel, vesa für 2.4 Kernel) gefolgt von den Kontrollanweisung die Sie aktivieren möchten. Alle Variablen sind in /usr/src/linux/Documentation/fb/vesafb.txt gelistet, wir möchten Sie daher nur über die drei wichtigsten informieren:

Option Beschreibung
ywrap Davon ausgehend, dass die Grafik ihren Speicher umbrechen kann (das heißt am Anfang fortfahren, wenn das Ende erreicht wurde)
mtrr:n Einrichten der MTRR-Register. n kann folgendes sein:
0 - deaktiviert
1 - uncachable
2 - write-back
3 - write-combining
4 - write-through
mode (nur vesafb-tng)
Setzen der Auflösung, Farbtiefe und Wiederholungsrate. Zum Beispiel ist 1024x768-32@85 für eine Auflösung von 1024x768, 32-Bit Farbtiefe und eine Wiederholungsrate von 85 Hz.

Das Ergebnis dieser beiden Anweisungen könnte etwas wie vga=0x318 video=vesafb:mtrr:3,ywrap oder video=vesafb:mtrr:3,ywrap,1024x768-32@85 sein. Schreiben Sie sich diese Einstellung auf, Sie werden sie bald benötigen!

Fahren Sie nun mit der Installation von GRUB oder Lilo fort.

10.b. Standard: Die Benutzung von GRUB

Das Verstehen von GRUBs Terminologie

Der wichtigste Teil beim Verstehen von GRUB ist, sich mit der Art vertraut zu machen, in der GRUB Festplatten und Partitionen benennt. Ihre Linux-Partition /dev/hda1 (für IDE-Laufwerke) oder /dev/sda1 (für SATA/SCSI-Laufwerke) wird höchstwahrscheinlich (hd0,0) unter GRUB genannt. Beachten Sie die Klammern um das hd0,0, denn diese sind Pflicht.

Festplatten zählen von Null anstatt von "a" und Partitionen starten bei Null anstatt bei Eins. Beachten Sie bitte auch, dass mit den hd-Geräten nur Festplatten gezählt werden, keine ATAPI-IDE Geräte wie CD-ROM-Laufwerke oder -Brenner. Dasselbe Schema wird auch bei SCSI-Laufwerken verwendet. (Normalerweise erhalten sie höhere Nummern als IDE-Laufwerke, außer wenn das BIOS konfiguriert ist von SCSI zu booten.) Wenn Sie dem BIOS angeben von einer anderen Festplatte zu booten (zum Beispiel Primary Slave), ist diese Festplatte für grub hd0.

Vorausgesetzt Sie haben eine Festplatte an /dev/hda, einen CD-ROM Laufwerk an /dev/hdb, einen Brenner an /dev/hdc, eine zweite Festplatte an /dev/hdd und keine SCSI-Festplatte, dann wird /dev/hdd7 übersetzt in (hd1,6). Es mag schwierig klingen und das ist es in der Tat auch, aber wie wir werden sehen, bietet GRUB einen Tab-Komplettierungsmechanismus an, der hilfreich ist für diejenigen von Ihnen die viele Festplatten und Partitionen haben und sich ein wenig verloren fühlen mit dem Nummerierungssystem von GRUB.

Nachdem man dafür jetzt ein Gefühl erlangt hat, ist es nun Zeit GRUB zu installieren.

Installieren von GRUB

Um GRUB zu installieren, führen Sie ein emerge aus.

Befehlsauflistung 1: Installieren von GRUB

# emerge grub

Obwohl GRUB nun installiert ist, müssen Sie trotzdem noch eine Konfigurationsdatei dafür schreiben und GRUB im MBR platzieren, so dass GRUB automatisch Ihren neu erstellten Kernel bootet. Erstellen Sie /boot/grub/grub.conf mit nano (oder wenn gewünscht einem anderen Editor):

Befehlsauflistung 2: Erstellen von /boot/grub/grub.conf

# nano -w /boot/grub/grub.conf

Nun wollen wir eine grub.conf schreiben. Folgend finden Sie zwei mögliche grub.conf für das Partitionierungsbeispiel, das wir in diesem Leitfaden verwendet haben. Wir werden nur die erste grub.conf ausführlich erläutern. Stellen Sie sicher, dass Sie den Dateinamen Ihres Kernel Image und, wenn zutreffend, den Dateinamen Ihrer initrd benutzen.

  • Die erste grub.conf ist für Leute, die nicht genkernel benutzt haben
  • Die zweite grub.conf ist für Leute, die genkernel benutzt haben

Notiz: Wenn Ihr Root-Dateisystem JFS ist, müssen Sie "ro" zu dem Kernelaufruf hinzufügen, da JFS sein Protokolldatei liest, bevor es ein read-write mounten zulässt.

Befehlsauflistung 3: grub.conf für Nicht-genkernel Benutzer

# Welcher Eintrag standardmäßig gebootet werden soll. 0 ist der Erste, 1 ist der Zweite usw.
default 0
# Wie viele Sekunden gewartet werden soll, bevor der Standardeintrag gebootet wird.
timeout 30
# Eine nettes, fettes Hintergrundbild um die ganze Sache ein wenig zu würzen :)
# Auskommentieren, wenn Sie keine Grafikkarte installiert haben.
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title=Gentoo Linux 2.6.17-r5
# Partition in der das Kernel-Image (oder das Betriebssystem) vorhanden ist
root (hd0,0)
kernel /boot/kernel-2.6.17-gentoo-r5 root=/dev/hda3

title=Gentoo Linux 2.6.17-r5 (Rescue)
# Partition in der das Kernel-Image (oder das Betriebssystem) vorhanden ist
root (hd0,0)
kernel /boot/kernel-2.6.17-gentoo-r5 root=/dev/hda3 init=/bin/bb

# Die nächsten vier Zeilen werden nur benötigt wenn Sie einen Dualboot mit einem Windows System einrichten wollen.
# Hier in diesem Fall liegt Windows auf /dev/hda6.
title=Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1

Befehlsauflistung 4: grub.conf für genkernel Benutzer

default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title=Gentoo Linux 2.6.17-r5
root (hd0,0)
kernel /boot/kernel-genkernel-x86-2.6.17-gentoo-r5 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udev
initrd /boot/initramfs-genkernel-x86-2.6.17-gentoo-r5

# Nur wenn Sie einen Dual-Boot einrichten möchten
title=Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1

Notiz: Das udev am Ende der Kernel Zeile ist als Workaround zu einem Bug in einigen genkernel Versionen nötig, wenn Sie udev benutzen (was Standard ist).

Wenn Sie ein anderes Partitionierungschema verwenden und/oder Kernel-Image, passen Sie Ihre Konfiguration entsprechend an. Stellen Sie jedoch sicher, dass alles was einem GRUB-Device folgt (wie z.B. (hd0,0)) relativ zum Mountpoint ist, nicht dem Root. Mit anderen Worten, (hd0,0)/grub/splash.xpm.gz ist in Wirklichkeit /boot/grub/splash.xpm.gz denn (hd0,0) ist /boot.

Außerdem wird, wenn Sie ein anderes Partitionsschema verwendet haben und /boot nicht auf eine separate Partition gelegt haben, das /boot Präfix wirklich benötigt. Wenn Sie unserem vorgeschlagenen Partitionierungsplan gefolgt sind, wird das /boot Präfix nicht benötigt, aber ein boot Symlink sorgt dafür, dass es funktioniert. Kurz gesagt, das obige Beispiel sollte funktionieren, egal ob Sie eine separate /boot Partition haben oder nicht.

Wenn Sie noch zusätzliche Optionen an den Kernel übergeben müssen, fügen Sie diese einfach zum Ende des Kernelbefehls hinzu. Eine Option übermitteln wir schon (root=/dev/hda3 oder real_root=/dev/hda3), aber Sie können auch weitere übermittlen, wie die vorhin erwähnte video und/oder vga Anweisung für Framebuffer.

Wenn Sie einen 2.6.7 Kernel oder aktueller benutzen und Ihre Festplatte gejumpert haben, da Ihr BIOS nicht mit großen Festplatten umgehen kann, müssen Sie hdx=stroke anhängen.

genkernel-Benutzer sollten wissen, dass Ihr Kernel die selben Bootoptionen benutzt wie der auf der Installations-CD. Zum Beispiel, wenn Sie SCSI-Geräte haben, sollten Sie doscsi als Kerneloption hinzufügen.

Speichern Sie nun die grub.conf Datei und verlassen Sie den Editor. Sie müssen GRUB noch in den MBR (Master Boot Record) schreiben, so dass GRUB automatisch beim Systemstart ausgeführt wird.

Die GRUB Entwickler empfehlen die Nutzung von grub-install. Wenn grub-install fehlschlägt haben Sie immer noch die Option GRUB händisch zu installieren.

Fahren Sie nun mit Standard: Installieren von GRUB mit grub-install oder Alternativ: GRUB händisch installieren fort.

Standard: Installieren von GRUB mit grub-install

Um GRUB zu installieren führen sie den grub-install Befehl aus. grub-install wird jedoch nicht direkt funktionieren, da wir uns innerhalb einer chroot-Umgebung befinden. Wir müssen /etc/mtab erstellen, welche alle gemounteten Dateisysteme auflistet. Glücklicherweise gibt es eine einfach Methode dafür: Kopieren Sie einfach /proc/mounts nach /etc/mtab; ausgenommen der rootfs Zeile, wenn Sie keine separate Boot-Partition erstellt haben. Der folgende Befehl funktioniert in beiden Fällen:

Befehlsauflistung 5: /etc/mtab erstellen

# grep -v rootfs /proc/mounts > /etc/mtab

Jetzt können wir GRUB durch grub-install installieren:

Befehlsauflistung 6: grub-install ausführen

# grub-install /dev/hda

Wenn Sie weitere Fragen GRUB betreffend haben, konsultieren Sie die GRUB FAQ oder das GRUB Handbuch.

Fahren Sie nun mit Rebooten des Systems fort.

Alternativ: GRUB händisch installieren

Um mit der Konfiguration von GRUB zu beginnen, tippen Sie grub. Ihnen wird die grub> GRUB-Kommdandozeile präsentiert. Nun müssen Sie die richtigen Befehle eintippen um den GRUB Boot Record auf Ihrer Festplatte zu installieren.

Befehlsauflistung 7: Starten der GRUB-Shell

# grub

Notiz: Wenn das System kein Diskettenlaufwerk hat, fügen Sie die --no-floppy Option an das obige Kommando an, damit grub nicht nach nicht-existierenden Diskettenlaufwerken sucht.

In der Beispielskonfiguration wollen wir GRUB so installieren, dass es alle Informationen von der Boot-Partition /dev/hda1 liest und den GRUB Boot-Record auf dem MBR (Master Boot Record) der Festplatte installiert, damit das Erste was wir sehen, wenn wir den Computer einschalten die GRUB Eingabeaufforderung ist. Natürlich müssen Sie die Befehle entsprechend ändern, wenn Sie von der Beispielkonfiguration während der Installation abgewichen sind.

Der Tab-Komplettierungsmechanismus von GRUB kann innerhalb von GRUB benutzt werden. Zum Beispiel, wenn Sie "root (" eintippen, gefolgt von einem TAB, wird Ihnen eine Liste von Geräten gegeben (solche wie hd0). Wenn Sie "root (hd0," eintippen, gefolgt von einem TAB, wird Ihnen eine Liste von verfügbaren Partitionen angezeigt, unter denen Sie auswählen können (solche wie hd0,0).

Durch Benutzung der Tab-Komplettierung sollte das Einrichten von GRUB nicht allzu schwer sein. Also weiter in der Konfiguration von GRUB!

Befehlsauflistung 8: Installieren von GRUB im MBR

grub> root (hd0,0)    (Angabe wo sich Ihre /boot Partition befindet)
grub> setup (hd0)     (Installiere GRUB im MBR)
grub> quit            (Verlasse die GRUB Shell)

Notiz: Wenn Sie GRUB lieber in einer bestimmten Partition anstatt des MBR installieren wollen, müssen Sie das setup so verändern, dass es auf die richtige Partition verweist. Zum Beispiel, wenn Sie GRUB in /dev/hda3 installieren wollen, dann wird der Befehl zu setup (hd0,2). Diese Option wird in der Regel nur von wenigen Benutzern genutzt.

Wenn Sie weitere Fragen GRUB betreffend haben, konsultieren Sie die GRUB FAQ oder das GRUB Manual.

Fahren Sie nun mit Rebooten des Systems fort.

10.c. Alternativ: Benutzung von LILO

Installieren von LILO

LILO, der LInuxLOader, ist das bewährte und wahre Arbeitstier der Linux Bootloader. Jedoch hat es eine Fähigkeiten nicht die GRUB hat (was auch der Grund dafür ist, dass GRUB momentan an Popularität gewinnt). Der Grund warum LILO noch benutzt wird ist, dass GRUB auf einigen System nicht funktioniert und LILO es tut. Natürlich gibt es auch den Grund, dass einige Leute mit LILO bereits vertraut sind und es daher behalten wollen. In jedem Fall: Gentoo unterstützt beide und anscheinend haben Sie sich für LILO entschieden.

Installieren von LILO ist ein Klacks, benutzen Sie einfach emerge.

Befehlsauflistung 9: Installieren von LILO

# emerge lilo

Konfigurieren von LILO

Um LILO zu konfigurieren, müssen Sie /etc/lilo.conf erstellen. Starten Sie Ihren Lieblingseditor (in diesem Handbuch benutzen wir nano) und erstellen die Datei.

Befehlsauflistung 10: Erstellen von /etc/lilo.conf

# nano -w /etc/lilo.conf

Vor einigen Abschnitten baten wir Sie, sich den Namen des Kernel-Images zu merken, welches Sie erstellt haben. In der folgenden lilo.conf Beispielsdatei nehmen wir an, dass der Imagename kernel-2.6.11-gentoo-r3 ist. Wir benutzen zudem das Beispielpartitionsschema in diesem Beispiel, es gibt zwei verschiedene Teile:

  • Einen für diejenigen, die genkernel nicht benutzt haben um den Kernel zu bauen
  • Einen für diejenigen, die genkernel zum bauen des Kernel benutzt haben.

Stellen Sie sicher, dass Sie den Dateinamen Ihres Kernel-Images und, wenn zutreffend, den Dateinamen Ihrer initrd benutzen.

Notiz: Wenn Ihr Root-Dateisystem JFS ist, müssen Sie "ro" zu dem Kernelaufruf hinzufügen, da JFS sein Logfile liest, bevor es ein read-write Mounten zulässt.

Befehlsauflistung 11: Beispiel /etc/lilo.conf

boot=/dev/hda             # Installieren von LILO im MBR
prompt                    # Gib dem Benutzer die Möglichkeit eine andere Sektion auszuwählen
timeout=50                # Warte 5 (fünf) Sekunden bevor die Standardsektion gebootet wird
default=gentoo            # Wenn das Timeout verstrichen ist, dann boote die "gentoo" Sektion

# Nur für Nicht-genkernel Benutzer
image=/boot/kernel-2.6.17-gentoo-r5
  label=gentoo            # Der Name den wir der Sektion geben
  read-only               # Starte mit einem nur-lesen Root. Nicht ändern!
  root=/dev/hda3          # Ort des Root-Dateisystems

image=/boot/kernel-2.6.17-gentoo-r5
  label=gentoo.rescue     # Der Name den wir der Sektion geben
  read-only               # Starte mit einem nur-lesen Root. Nicht ändern!
  root=/dev/hda3          # Ort des Root-Dateisystems
  append="init=/bin/bb"   # Starten der statischen Gentoo-Rescue-Shell

# Für genkernel Benutzer
image=/boot/kernel-genkernel-x86-2.6.17-gentoo-r5
  label=gentoo
  read-only
  root=/dev/ram0
  append="init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udev"
  initrd=/boot/initramfs-genkernel-x86-2.6.17-gentoo-r5
# Die nächsten zwei Zeilen werden nur benötigt, wenn Sie Dualboot mit einem Windowssystem einrichten wollen.
# In diesem Fall liegt Windows auf /dev/hda6.
other=/dev/hda6
  label=windows

Notiz: Das udev am Ende der Kernel Zeile ist als Workaround zu einem Bug in einigen genkernel Versionen nötig, wenn Sie udev benutzen (was Standard ist).

Notiz: Wenn Sie ein anderes Partitionierungsschema verwenden, passen Sie die Konfiguration entsprechend an.

Wenn Sie weitere Optionen an den Kernel übermitteln müssen, fügen Sie eine append Anweisung zu dem Abschnitt hinzu. Als Beispiel fügen wir die video Anweisung hinzu um Framebuffer-Unterstützung zu aktivieren:

Befehlsauflistung 12: Benutzung von append um Kerneloptionen hinzuzufügen

image=/boot/kernel-2.6.17-gentoo-r5
  label=gentoo
  read-only
  root=/dev/hda3
  append="video=vesafb:mtrr,ywrap,1024x768-32@85"

Wenn Sie einen 2.6.7, oder aktuelleren, Kernel benutzen und Ihre Festplatte gejumpert haben, da Ihr BIOS nicht mit großen Festplatten umgehen kann, müssen Sie hdx=stroke anhängen.

Genkernel-Benutzer sollten wissen, dass Ihr Kernel dieselben Bootoptionen benutzt wie der auf der Installations-CD. Zum Beispiel, wenn Sie SCSI Geräte haben, sollten Sie doscsi als Kerneloption hinzufügen

Speichern Sie nun die Datei und verlassen Sie den Editor. Zum Schluss müssen Sie /sbin/lilo ausführen, damit LILO die /etc/lilo.conf auf Ihr System anwenden kann (also sich selbst auf der Platte installiert). Behalten Sie im Hinterkopf, dass Sie /sbin/lilo nach jeder Installation eines neuen Kernel oder Änderung des Menü ausführen müssen.

Befehlsauflistung 13: Fertigstellen der LILO-Installation

# /sbin/lilo

Wenn Sie weitere Fragen bezüglich Lilo haben, lesen Sie bitte dessen Wikipedia-Seite.

Fahren Sie nun mit Rebooten des Systems fort.

10.d. Rebooten des Systems

Verlassen Sie die chroot Umgebung und unmounten Sie alle gemounteten Partitionen. Danach tippen Sie den magischen Befehl ein, auf das Sie solange gewartet haben: reboot.

Befehlsauflistung 14: Unmounten aller Partitionen und Rebooten

# exit
cdimage ~# cd
cdimage ~# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
cdimage ~# reboot

Vergessen Sie nicht die bootbare CD aus dem Laufwerk zu nehmen, sonst wird diese anstatt Ihres neuen Gentoo Systems gestartet.

Nachdem Sie in die neue Gentoo Installation gebootet haben schließen Sie die Installation mit Abschließen der Gentoo Installation ab.


[ << ] [ < ] [ Hauptseite ] [ > ] [ >> ]


Drucken

Aktualisiert 18. Januar 2007

Zusammenfassung: Es gibt verschiedene Bootloader für die x86-Architektur. Jeder wird anders konfiguriert. In diesem Kapitel führen wir Sie durch die Konfiguration eines Bootloader nach Ihren Anforderungen.

Sven Vermeulen
Autor

Grant Goodyear
Autor

Roy Marples
Autor

Daniel Robbins
Autor

Chris Houser
Autor

Jerry Alexandratos
Autor

Seemant Kulleen
Gentoo x86 Entwickler

Tavis Ormandy
Gentoo Alpha Entwickler

Jason Huebel
Gentoo AMD64 Entwickler

Guy Martin
Gentoo HPPA Entwickler

Pieter Van den Abeele
Gentoo PPC Entwickler

Joe Kallar
Gentoo SPARC Entwickler

John P. Davis
Bearbeiter

Pierre-Henri Jondot
Bearbeiter

Eric Stockbridge
Bearbeiter

Rajiv Manglani
Bearbeiter

Jungmin Seo
Bearbeiter

Stoyan Zhekov
Bearbeiter

Jared Hudson
Bearbeiter

Colin Morey
Bearbeiter

Jorge Paulo
Bearbeiter

Carl Anderson
Bearbeiter

Jon Portnoy
Bearbeiter

Zack Gilburd
Bearbeiter

Jack Morgan
Bearbeiter

Benny Chuang
Bearbeiter

Erwin
Bearbeiter

Joshua Kinard
Bearbeiter

Tobias Scherbaum
Bearbeiter

Xavier Neys
Bearbeiter

Joshua Saddler
Bearbeiter

Gerald J. Normandin Jr.
Korrektor

Donnie Berkholz
Korrektor

Ken Nowack
Korrektor

Lars Weiler
Mitarbeiter

Tobias Scherbaum
Übersetzer

Jens Schittenhelm
Übersetzer

Patrick Sudowe
Übersetzer

Torsten Veller
Übersetzer

Michael Frey
Übersetzer

Markus Nigbur
Übersetzer

Boris Ruppert
Übersetzer

Jan Hendrik Grahl
Übersetzer

Christian Hartmann
Korrektor

Michael Imhof
Korrektor

Donate to support our development efforts.

Gentoo Centric Hosting: vr.org

VR Hosted

Tek Alchemy

Tek Alchemy

SevenL.net

SevenL.net

php|architect

php|architect

Copyright 2001-2007 Gentoo Foundation, Inc. Questions, Comments? Contact us.