19.03.2024, 07:52 UhrDeutsch | English
Hallo Gast [ Registrierung | Anmelden ]

Bootloader Grub2


Allgemeines


Grub2 ist die zweite Generation des Bootloaders GNU Grub . Seit Excalibur ist Grub2 der Standard-Bootloader von KANOTIX. Das entsprechende Paket heißt "grub-pc", die Vorgängerversion wird als "grub-legacy".bezeichnet.

Grub2 wurde völlig neu entwickelt und unterscheidet sich von grub-legacy in vielen Punkten, besonders der Konfiguration.

Einige neue Merkmale von GRUB 2 sind:

*Unterstützung des Bootens von ext4?, LVM und RAID (sowohl Hard- als auch Software)
*Unterstützung von EFI
*direkte Unterstützung von UUID
*Modulares Laden der Komponenten zur Laufzeit
*Grafische Benutzeroberfläche mit Unterstützung von Themes
*Unterstützung von Skripten
*Benutzerdefinierte Boot-Einträge
*Verbesserte Partitionsbezeichnung
*Rettungsmodus zum Beheben von Bootproblemen

Dateien und Ordner


/boot/grub/grub.cfg


Während grub-legacy über eine zentrale Konfigurationsdatei verfügt (/boot/grub/menu.lst) ist die Konfiguration von Grub2 über mehrere Dateien in verschiedenen Verzeichnissen verteilt.

Zentral ist die Datei /boot/grub/grub.cfg. Diese Datei enthält die eigentliche Konfiguration und wird von Grub2 ausgelesen. Sie ist aber nur als lesbar gespeichert und sollte nicht bearbeitet werden. Dieses wird auch durch einen Hinweis am Anfang von /boot/grub/grub.cfg deutlich. Eine typische grub.cfg sieht etwa so aus:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
set default=0
set timeout=5
set root=(hd0,7)
search --no-floppy --fs-uuid --set b19bef40-4496-475c-8113-cde814a96541
if loadfont /usr/share/grub/ascii.pf2 ; then
  set gfxmode=640x480
  insmod gfxterm
  insmod vbe
  if terminal_output gfxterm ; then true ; else
    # For backward compatibility with versions of terminal.mod that don't
    # understand terminal_output
    terminal gfxterm
  fi
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set root=(hd0,7)
search --no-floppy --fs-uuid --set b19bef40-4496-475c-8113-cde814a96541
insmod png
if background_image /boot/grub/KanotixPenguins.png ; then
  set color_normal=light-blue/black
  set color_highlight=white/blue
else
  set menu_color_normal=cyan/blue
  set menu_color_highlight=white/blue
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry "Kanotix GNU/Linux, Linux 2.6.31-9-generic" {
	set root=(hd0,7)
	search --no-floppy --fs-uuid --set b19bef40-4496-475c-8113-cde814a96541
	linux	/boot/vmlinuz-2.6.31-9-generic root=UUID=b19bef40-4496-475c-8113-cde814a96541 ro  vga=794
	initrd	/boot/initrd.img-2.6.31-9-generic
}
menuentry "Kanotix GNU/Linux, Linux 2.6.31-5-generic" {
	set root=(hd0,7)
	search --no-floppy --fs-uuid --set b19bef40-4496-475c-8113-cde814a96541
	linux	/boot/vmlinuz-2.6.31-5-generic root=UUID=b19bef40-4496-475c-8113-cde814a96541 ro  vga=794
	initrd	/boot/initrd.img-2.6.31-5-generic
}
menuentry "Kanotix GNU/Linux, Linux 2.6.30-9-generic" {
	set root=(hd0,7)
	search --no-floppy --fs-uuid --set b19bef40-4496-475c-8113-cde814a96541
	linux	/boot/vmlinuz-2.6.30-9-generic root=UUID=b19bef40-4496-475c-8113-cde814a96541 ro  vga=794
	initrd	/boot/initrd.img-2.6.30-9-generic
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Debian GNU/Linux, kernel 2.6.26-2-686 (on /dev/sda1)" {
	set root=(hd0,1)
	search --no-floppy --fs-uuid --set b940432d-0741-493a-b58f-59160224b033
	linux /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro vga=794
	initrd /boot/initrd.img-2.6.26-2-686
}
menuentry "Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode) (on /dev/sda1)" {
	set root=(hd0,1)
	search --no-floppy --fs-uuid --set b940432d-0741-493a-b58f-59160224b033
	linux /boot/vmlinuz-2.6.26-2-686 root=/dev/hda1 ro single
	initrd /boot/initrd.img-2.6.26-2-686
}
menuentry "Kanotix GNU/Linux, Linux 2.6.30-10-generic (on /dev/sda9)" {
	set root=(hd0,9)
	search --no-floppy --fs-uuid --set b90e78f8-6bce-4633-8b9b-3e8e09db256e
	linux /boot/vmlinuz-2.6.30-10-generic root=UUID=b90e78f8-6bce-4633-8b9b-3e8e09db256e ro vga=794
	initrd /boot/initrd.img-2.6.30-10-generic
}
menuentry "Kanotix GNU/Linux, Linux 2.6.30-10-generic (recovery mode) (on /dev/sda9)" {
	set root=(hd0,9)
	search --no-floppy --fs-uuid --set b90e78f8-6bce-4633-8b9b-3e8e09db256e
	linux /boot/vmlinuz-2.6.30-10-generic root=UUID=b90e78f8-6bce-4633-8b9b-3e8e09db256e ro single
	initrd /boot/initrd.img-2.6.30-10-generic
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file is an example on how to add custom entries

### END /etc/grub.d/40_custom ###


Es ist zwar grundsätzlich möglich diese Datei schreibbar zu machen und zu editieren, aber es ist nicht der vorgesehene Weg. Die Konfiguration erfolgt über Dateien in /etc und anschließendem "update-grub" welche die Einträge in der grub.cfg erzeugt und eigene Editierungen wieder überschreibt. Nach einem Kernel-Update wird zum Beispiel "update-grub" immer erneut ausgeführt.


Die Konfiguration von Grub2 erfolgt also grundsätzlich über die vorgesehenen Dateien in /etc. Dieses sind /etc/default/grub und alle Dateien in /etc/grub.d/ .


/etc/default/grub


In /etc/default/grub werden einige grundsätzliche Parameter bestimmt und von "update-grub" zu Einträgen in /boot/grub/grub.cfg generiert werden. Sie sieht in etwa so aus:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`[ "$(uname -m)" = "x86_64" ] && echo Kanotix64 || echo Kanotix`
GRUB_CMDLINE_LINUX_DEFAULT="quiet vga=791 splash"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480


GRUB_DEFAULT ist das Äquivalent zum Parameter "default" in der menu.lst von grub-legacy und kennzeichnet den Boot-Eintrag der Standardmäßig angwählt ist (beginnend bei 0, welches der erste Eintrag ist. 1 würde dem zweiten Eintrag entsprechen).

GRUB_TIMEOUT ist das Äquivalent zu "timeout" in der menu.lst von grub-legacy und bestimmt die Wartezeit in Sekunden bis der Eintrag von GRUB_DEFAULT gebootet wird.

GRUB_CMDLINE_LINUX_DEFAULT ist das Äquivalent zu "defoptions" in der menu.lst von grub-legacy und diese Parameter werden in der Zeile "linux" der Bootparameter hinzugefügt. "vga=xxx" ist eine Option welche mit Grub2 funktioniert aber als "deprecated" gilt. Beim Starten weisst Grub2 auch kurz darauf hin und sagt man möge "gfxpayload" verwenden. Diese Funktion scheint aber derzeitig noch nicht vernünftig implementiert zu sein.

Wer die recovery-modes als Booteintrag nicht mag kann sie noch mit folgendem Eintrag deaktivieren:

# Uncomment to disable generation of recovery mode menu entrys
GRUB_DISABLE_LINUX_RECOVERY="true"


#### WICHTIG ####

Nach jeder Änderung unbedingt ein "update-grub" (als root) ausführen. Ansonsten werden die Änderungen nicht übernommen.


/etc/grub.d/


In /etc/grub.d/ sind diverse Skripte enthalten welche von "update-grub" ausgeführt und zu Einträgen in /boot/grub/grub.cfg generiert werden:

00_header
05_debian_theme
10_linux
30_os-prober
40_custom
README

00_header erzeugt einige grundlegende Parameter in grub.cfg welche vor allem aus der /etc/default/grub entnommen werden.
05_debian_theme bestimmt das Aussehen von Grub2 (Hintergrund, Schriftart, Farbe usw.).
10_linux erzeugt die Booteinträge für die Kernel des gerade laufenden Betriebssystems.
30_os-prober findet alle anderen Betriebssysteme (auch Windows) und erzeugt dafür Booteinträge. Wer dieses nicht möchte kann 30_os-prober das Ausführrecht entziehen:

 chmod -x /etc/grub.d /30_os-prober


oder das Paket os-prober entfernen:

apt-get remove os-prober


40_custom ist gedacht für eigene Erweiterungen.

Die Skripte werden der Reihe nach abgearbeitet wobei die führenden Nummern bestimmend sind. Wer also an erster Stelle im Bootmenü lieber eigene Einträge generieren lassen möchte statt dem was 10_linux generiert erstelle ein Skript mit einer führenden Zahl <10, aber nicht<6, wie z.B. 09_custom. Dort kann man dann z.B. folgendes eintragen:

#! /bin/sh -e
echo "Adding custom boot entry(s)" >&2
 cat << EOF
menuentry "My KANOTIX" {
	set root=(hd0,7)
	search --no-floppy --fs-uuid --set b19bef40-4496-475c-8113-cde814a96541
	linux	/boot/vmlinuz-2.6.31-9-generic root=UUID=b19bef40-4496-475c-8113-cde814a96541 ro  vga=794
	initrd	/boot/initrd.img-2.6.31-9-generic
}
EOF


Oder wer es lieber per Chainloading mag kann eine Datei 11_chainload erstellen:

#! /bin/sh -e
echo "Adding custom boot entry(s)" >&2
 cat << EOF
menuentry "Chainload Ubuntu" {
    set root=(hd0,10)
    chainloader +1
}
EOF

 cat << EOF
menuentry "Chainload Arch Linux (/dev/sda5)" {
    set root=(hd0,5)
    chainloader +1
}
EOF


Bitte beachten: Die Zuweisungen bei root=(hd0?,5) haben sich gegenüber grub-legacy geändert. Während bei grub-legacy für beide Ziffern bei 0 angefangen wurde zu zählen ist es bei Grub2 nun etwas anders.
Die Zählung der ersten Ziffer (Festplatten) bleibt bestehen. "0" heißt also die erste Festplatte (/dev/sda), "1" wäre /dev/sdb. Bei der zweiten Ziffer (den Partitionen) wird hingegen nun bei "1" angefangen zu zählen. D.h. root=(hd0?,1) ist die erste Partition auf der ersten Festplatte. root=(hd1?,5) wäre die fünfte Partition auf der zweiten Festplatte.
Da Grub2 standardmäßig mit UUID arbeitet betrifft die neue Syntax vorrangig das Chainloading per (hdx,x). Wenn in der root-Zeile eine UUID verwendet wurde wird bei mir kein Device gefunden.

#### WICHTIG ####

Die Skripte müssen natürlich ausführbar sein:

# chmod +x /etc/grub.d /09_custom
# chmod +x /etc/grub.d /11_chainload


und per "update-grub" aktualisiert werden:

# update-grub
Generating grub.cfg ...
Found Kanotix background: KanotixPenguins.png
Adding custom boot entry(s)
Found linux image: /boot/vmlinuz-2.6.31-9-generic
Found initrd image: /boot/initrd.img-2.6.31-9-generic
Found linux image: /boot/vmlinuz-2.6.31-5-generic
Found initrd image: /boot/initrd.img-2.6.31-5-generic
Found linux image: /boot/vmlinuz-2.6.30-9-generic
Found initrd image: /boot/initrd.img-2.6.30-9-generic
Adding custom boot entry(s)
Found Debian GNU/Linux (5.0.3) on /dev/sda1
Found Ubuntu 9.04 (9.04) on /dev/sda10
Found Arch on /dev/sda5
Found Debian GNU/Linux (squeeze/sid) on /dev/sda6
Found Debian GNU/Linux (squeeze/sid) on /dev/sda8
Found Debian GNU/Linux (5.0.3) on /dev/sda9
done


Wenn in den Skripten kein "echo "Adding custom boot entry(s)" >&2" steht gibt es keine Meldung das dort etwas passiert. Es kann aber natürlich auch weggelassen oder anderweitig benannt werden. Wenn Fehlermeldungen auftauchen bitte ernstnehmen. Evtl. passt die Syntax nicht, etc.


Update von Grub2


Wenn per Update eine neue Version von Grub2 installiert wird fragt der Paketmanager nach wie mit der neuen Version verfahren werden soll.

Installer

Wir wählen dort "Version des Paket-Betreuers installieren" da wir die aktuelle Version haben möchten.

Installer

Dann erfolgt eine Abfrage wo Grub2 standardmäßig installiert werden soll. Der MBR (hier:/dev/sda) mag oft eine gute Wahl sein. Dann setze man mittels Leertaste ein Sternchen im entsprechenden Feld vor /dev/sda.Per default ist dort keines. Per TAB wechselt man dann auf "OK" und bestätigt mit Enter

Installer

#### ACHTUNG ####

Wenn Grub2 nicht in den MBR, sondern in eine Partiton installiert werden soll muss nach einem Update von Grub2 nochmals explizit Grub2 in die entsprechende Partiton installiert werden:

grub-install /dev/sda7   ##  Grub2 in die siebente Partiton der ersten Festplatte installieren  ## 


Wenn dieses nicht gemacht wird kann es passieren dass das System nicht mehr gebootet werden kann, da die alte (installierte) Version von Grub2 nicht die Syntax von den neuen Konfigurationsdateien versteht und einen Fehler ausgibt.


Themes


Hintergrundbild


Grundsätzlich ist es in Grub2 möglich im graphischen Modus zu arbeiten und Hintergrundbilder einzubinden. Die Auflösung kann in der Datei /etc/default/grub bestimmt werden in dem man das Kommentarzeichen # vor "GRUB_GFXMODE=640x480" entfernt und die gewünschte Auflösung einträgt:

GRUB_GFXMODE=1280x1024


Ist nichts angegeben oder die Zeile auskommentiert # wird eine Auflösung von 640x480 benutzt.
Welche Auflösungen möglich sind erfährt man im Auswahlmenü durch Wechsel in den Commandline-Modus mittels drücken der Taste c und anschließender Eingabe von:

vbeinfo


Das weitere Aussehen von Grub2 wird vorrangig durch das Skript 05_debian_theme in /etc/grub.d/ bestimmt. Möchte man ein eigenes Hintergrundbild verwenden muss in diesem Skript der Pfad zum Bild angegeben werden. Dazu öffne man die Datei /etc/grub.d/05_debian_theme mit einem Editor und als Root. Die Zeile 16 bestimmt das Hintergrundbild:

for i in {/boot/grub,/usr/share/images/grub}/Kanotix{,64}Penguins.{png,tga,jpg,jpeg} ; do


Am besten man kopiert diese Zeile und fügt sie genau darunter wieder ein. Anschließend wird die Originalzeile auskommentiert mit #. Vorausgesetzt das neue Bild befindet sich in einem der angegebenen Verzeichnisse {/boot/grub,/usr/share/images/grub} wird nun noch der exakte Name des Bildes angegeben und anstatt dem Namen des Kanotix-Bildes eingetragen. Wichtig ist der Punkt (.) hinter dem Dateinamen. Dieser muss dort stehen.

for i in {/boot/grub,/usr/share/images/grub}/My_Grub2Picture.{png,tga,jpg,jpeg} ; do


Das neue Hintergrundbild muss in einem der angegebenen Formate vorhanden sein {png,tga,jpg,jpeg}, andere sind nicht möglich. Außerdem muss die Größe des Bildes exakt die eingestellten Auflösung entsprechen. Ansonsten kann man mit Bildbearbeitungsprogrammen wie Gimp nachhelfen.

Als Pfadangabe kann zusätzlich auch z.B. ein Pfad im /home-Verzeichnis angegeben werden. Als Trenner bei Pfadangaben oder Dateiendungen darf nur ein Komma (,) verwendet werden.

for i in {/home/Benutzer/Bilder,/boot/grub,/usr/share/images/grub}/My_Grub2Picture.{png,tga,jpg,jpeg} ; do


Schriftfarben


Je nach Hintergrundbild kann es sein dass die Schriftfarbe im Auswahlmenü kaum oder garnicht zu lesen ist. Dieses kann auch in der /etc/grub.d/05_debian_theme geändert werden, und zwar in den Zeilen 40 und 41:

  set color_normal=light-blue/black
  set color_highlight=white/blue

set color_normal bezeichnet die Standardschriftfarbe im Auswahlmenü.
set color_highlight bezeichnet die Schriftfarbe für den gewählten Menüpunkt.

Der erste Farbwert bezeichnet jeweils die Schriftfarbe, der zweite Farbwert gibt die Hintergrundfarbe an. black bedeutet dabei nicht etwas schwarz, sondern transparent.

Nachdem alle Änderungen gemacht wurden nicht vergessen ein update-grub durchzuführen. Ansonsten werden die Änderungen nicht wirksam. In der Ausgabe von update-grub kann man schon erkennen ob das neue Hintergrundbild auch erkannt wurde:

# update-grub
Generating grub.cfg ...
Found Kanotix background: My_Grub2Picture.tga
[...]


Wenn alles korrekt gemacht wurde kann man beim nächsten Bootvorgang das Ergebnis sehen.

Installer


Für alle, die es lieber graphisch haben


...Gibt es den selbst erklärenden Grub Customizer. Man kann ihn hier herunterladen, entpacken, Installieren mit

cmake .
	make
	sudo make install]



zurück


XML Revisions of $tag
Seiten-History :: Letzter Editor : stalin2000 :: Eigentümer : krishan1 ::
Powered by pnWikka 1.0
 
 
Deutsch | English
Logos and trademarks are the property of their respective owners, comments are property of their posters, the rest is © 2004 - 2006 by Jörg Schirottke (Kano).
Consult Impressum and Legal Terms for details. Kanotix is Free Software released under the GNU/GPL license.
This CMS is powered by PostNuke, all themes used at this site are released under the GNU/GPL license. designed and hosted by w3you. Our web server is running on Kanotix64-2006.