Bootmenü Grub 2 einrichten

 

  Ab Grub 2 sind die Boot-Menü-Einstellungen in diesen Dateien zu finden:
/etc/default/grub
und
/boot/grub/grub.cfg
und in diesem Verzeichnis alle Dateien die mit einer Nummer anfangen
/etc/grub.d/
00_header
05_debian_theme....
 

 

  So kann eine /etc/default/grub aussehen (diese hier ist aus Ubuntu 10.04.3)  
     
  grub  

 

  Die Zeilen sagen folgendes aus:  
       
  GRUB_TIMEOUT=10 die Startverzögerung des Menüs beträgt 10 Sekunden  
  GRUB_GFXMODE=1024x768x32 das Bootmenü hat diese Auflösung  
  export GRUB_MENU_PICTURE="bay.jpg das Bootmenü hat dieses Hintergrundbild,  Auflösung des Bildes muss die des GRUB_GFXMODE´s sein  
  export GRUB_COLOR_NORMAL die Textfarbe der Auswahl ist schwarz  
  export GRUB_COLOR_HIGHLIGHT die Textfarbe bei Auswahl eines Menü-Punktes ist light-cyan  

 

  So kann eine /boot/grub/grub.cfg aussehen (diese hier ist aus Ubuntu 10.04.3)  
 

 

 
  # # 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 ###
 
if [ -s $prefix/grubenv ]; then
load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
set saved_entry=${prev_saved_entry}
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi

function savedefault {
if [ -z ${boot_once} ]; then
saved_entry=${chosen}
save_env saved_entry
fi
}

function recordfail {
set recordfail=1
if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi
}
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set cf38589b-93e0-43cd-8796-b6264f4df5f2
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=1024x768x32
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
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set cf38589b-93e0-43cd-8796-b6264f4df5f2
set locale_dir=($root)/boot/grub/locale
set lang=de
insmod gettext
if [ ${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=10
fi

### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###

insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set cf38589b-93e0-43cd-8796-b6264f4df5f2
insmod jpeg
if background_image /usr/share/desktop-base/bay.jpg ; then
set color_normal=black/black
set color_highlight=light-cyan/black
else
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
fi

### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###

menuentry 'Ubuntu, mit Linux 2.6.32-33-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set cf38589b-93e0-43cd-8796-b6264f4df5f2
linux /boot/vmlinuz-2.6.32-33-generic root=UUID=cf38589b-93e0-43cd-8796-b6264f4df5f2 ro quiet splash
initrd /boot/initrd.img-2.6.32-33-generic
}

menuentry 'Ubuntu, mit Linux 2.6.32-33-generic (Wiederherstellungsmodus)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set cf38589b-93e0-43cd-8796-b6264f4df5f2
echo `Linux 2.6.32.33-generic wird geladen...`
linux /boot/vmlinuz-2.6.32-33-generic root=UUID=cf38589b-93e0-43cd-8796-b6264f4df5f2 ro single
echo `Initiale Ramdisk wird geladen...`
initrd /boot/initrd.img-2.6.32-33-generic
}

menuentry 'Ubuntu, mit Linux 2.6.32-32-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set cf38589b-93e0-43cd-8796-b6264f4df5f2
linux /boot/vmlinuz-2.6.32-32-generic root=UUID=cf38589b-93e0-43cd-8796-b6264f4df5f2 ro quiet splash
initrd /boot/initrd.img-2.6.32-32-generic
}

menuentry 'Ubuntu, mit Linux 2.6.32-32-generic (Wiederherstellungsmodus)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set cf38589b-93e0-43cd-8796-b6264f4df5f2
echo `Linux 2.6.32.32-generic wird geladen...`
linux /boot/vmlinuz-2.6.32-32-generic root=UUID=cf38589b-93e0-43cd-8796-b6264f4df5f2 ro single
echo `Initiale Ramdisk wird geladen...`
initrd /boot/initrd.img-2.6.32-32-generic
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###

menuentry "Memory test (memtest86+)" {
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set cf38589b-93e0-43cd-8796-b6264f4df5f2
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod ext2
set root='(hd0,1)'
search --no-floppy --fs-uuid --set cf38589b-93e0-43cd-8796-b6264f4df5f2
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}

### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###

menuentry "Windows 7 (loader) (on /dev/sda1)" {
insmod ntfs
set root='(hd0,1)'
search --no-floppy --fs-uuid --set 329ce80e9ce7ca85
chainloader +1
}

### END /etc/grub.d/30_os-prober ###

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

# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.

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

 

  Im vorletzten Abschnitt (30_os-prober) wird der Windows7-Loader angesprochen; da dieser auf der Festplatte 0 auf sda1 liegt steht in Zeile 3 set root='(hd0,1)', im Beispiel von GParted-->>  
     
  gparted  
     
  Es ist auch möglich die Datei 30_os-prober in /etc/grub.d/ nach 09_os-prober um zu benennen, somit wird nach einem update-grub in der Konsole Windows7 ganz oben in der Boot-Menüliste stehen.  

 

  Normalerweise werden Einstellungen nur in der etc/default/grub gemacht, abgespeichert und anschließend mit dem Befehl update-grub (in der Konsole) die Änderungen in die boot/grub/grub.cfg geschrieben und dadurch aktualisiert. Das ist aber nicht immer möglich. Wie man genau vorgehen sollte, ist in folgendem Artikel beschrieben. Der Link zum Originalartikel: Schöner Booten  
     
  Die neue Version des BootManagers Grub2 auf Ubuntu 9.10
Schöner Booten?
von Oliver Frommel

Das neue Ubuntu 9.10 verwendet zum Booten standardmäßig die GrubVersion2, die dem Anwender einige Änderungen beschert. Dieser Artikel gibt einen Crash-Kurs. Schon seit langem verwenden die meisten Linux Distributionen zum Booten den Boot-Manager Grub, der dem Benutzer ein Auswahlmenü anzeigt und dann den gewünschten Kernel bootet. Bisher war das Grub 1, das verwirrenderweise oft eine Null in der Versionsnummer führte. Als erste Distribution hat nun Ubuntu 9.10 "KarmicKoala" auf das neue Grub 2 (das ist 1.97) um gestellt. Für den Anwender hat sich dabei durchaus einiges geändert: Grub ist nun viel stärker modularisiert, sowohl was seine Funktionalität als auch was die Konfiguration angeht. Ein Blick in das Verzeichnis /boot/grub zeigt mehr als 150 Dateien, die Grub zum Beispiel mit der Fähigkeit ausstatten die verschiedenen Dateisysteme zu lesen, mit RAID und LVM umzugehen und so weiter. Dort findet sich ebenfalls die neue Konfigurationsdatei grub.cfg, die die vom alten Grub bekannte menu.lst ablöst. Nicht nur heißt die Datei anders, auch die Syntax hat sich geändert. So stehen die einzelnen Einträge für die zu bootenden Systeme nun nicht mehr einfach untereinander, sondern sind von geschweiften Klammern eingeschlossen:

menuentry 'Ubuntu, mit Linux 2.6.31-21-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,4)' search --no-floppy --fs-uuid --set 47802796-7c08-4a59-a776-fa0f05f7cd28
linux /boot/vmlinuz-2.6.31-21-generic root=UUID=47802796-7c08-4a59-a776-fa0f05f7cd28 ro quiet splash
initrd /boot/initrd.img-2.6.31-21-generic
}

Der Eintrag enthält beispielsweise auch die Zeile insmod ext2 zum Laden des nötigen Dateisystemmoduls. Eine weitere wichtige Änderung ist hier zu sehen: Die Grub Programmierer haben die Nummerierung der Partitionen – aber nicht die der Festplatten – geändert. Die erste Partition der ersten Platte heißt also nun hd0,1 und nicht wie vorher hd0,0. Editieren soll der Anwender aber nicht die Datei grub.cfg selbst, sondern eine Reihe von Konfigurationsdateien, die in /etc/grub.d liegen. Ähnlich wie die Init Skripte eines Linux System beginnen deren Namen mit einer Nummer, in deren Reihenfolge sie abgearbeitet werden:

$ ls -l /etc/grub.d
00_header
05_debian_theme
10_linux
20_memtest86+
30_os-prober
40_custom

Das sind die Standardeinträge auf dem neuen Ubuntu 9.10. Anhand der Namen kann man schon relativ leicht erraten, wofür die einzelnen Dateien stehen. Wichtig ist zu beachten, dass es sich hierbei um Shellskripte handelt, die ausführbar sein und eben der Syntax von BashSkripten genügen müssen. Mit dem Befehl grub-mkconfig erzeugt der Anwender schließlich aus diesen Dateien die grub.cfg (Es kann aber auch der Befehl update-grub verwendet werden). Per Default gibt das Kommando das Ergebnis einfach im Terminal  aus. Der folgende Aufruf schreibt die Konfiguration in die passende Datei:

$ sudo grubmkconfig o/boot/grub/grub.cfg
Found linux image: /boot/vmlinuz2.6.3114generic
Found initrd image: /boot/initrd.img 2.6.3114generic
Found linux image: /boot/vmlinuz2.6.3111generic
Found initrd image: /boot/initrd.img 2.6.3111generic
Found memtest86+ image: /boot/memtest86+.bin
done

Bei der Installation des Bootloaders im Master Boot Record oder in einer Partition hat sich nichts geändert, das geht weiterhin mit sudo grub-install /dev/sda. Fremde Betriebssysteme findet Grub zum größten Teil selbst, sodass der Anwender nicht händisch eingreifen muss. Problematisch wird es nur, wenn Grub das Dateisystem nicht lesen kann, wie beispielsweise Solaris' ZFS. In diesem Fall legt man in /etc/grub.d/ eine weitere Datei an z.B.: 40_custom:

#!/bin/sh
exec tail n+3 $0
# This file provides an easy way to add custom menu entries. Simply type
# menu entries you want to add after this comment. Be careful not to change
# the ´exec tail´line above.
menuentry "Solaris 10" {
set root=(hd1,1)
chainloader +1
}

Das klappt natürlich nur, wenn Solaris seinerseits in der eigenen
Partition einen Bootloader installiert hat. Beim Booten selbst bietet Grub nun andere Möglichkeiten zum Editieren als den zeilenweisen Modus der Version 1. Nun gibt es einen richtigen Editor mit EmacsBindings.

Insgesamt stellt sich die Frage, ob Grub 2 gegenüber seinem Vorgänger einen Fortschritt bringt. Für den Anwender bedeutet es zunächst einmal nur, sich wieder umstellen zu müssen. Andererseits bleibt ihm kaum eine Alternative dazu, wenn in Zukunft immer mehr Distributionen auf Grub 2 umstellen.
 
Zum Abschluss noch ein Wort der Warnung:

Wie immer bei der Arbeit mit Bootloadern sollte man sich genau überlegen, was man macht und sicherheitshalber lieber noch einmal nachlesen. Zu schnell findet man sich sonst vor einem System wieder, das nicht mehr starten will. In diesem Fall hilft meist nur noch das Booten mit einer LiveCD oder einem Rettungssystem wie der Super Grub.
 

 

 

 

  Da sich in letzter Zeit Grub ziemlich geändert hat sind evtl. folgende Einstellungen zu machen

In der Datei /etc/grub.d/40_custom folgende Zeilen ergänzen für Farbe im Startmenü:

set menu_color_normal="white/black"
set menu_color_highlight="light-cyan/black"
#set menu_color_normal="yellow/cyan"
#set menu_color_highlight="yellow/cyan"

Um ein Hintergrundbild im Startmenü einzufügen die Zeile in /etc/default/grub ergänzen und anpassen:

export GRUB_BACKGROUND="/home/linuxmint/Bilder/Grub-Startbilder/aurora2.png"

Um die Auflösung auf 1280 x 1024 zu ändern folgendes ergänzen:

GRUB_GFXMODE=1280x1024x32

Um die Startzeit zu ändern den Wert 10 (Sekunden) ändern:

GRUB_TIMEOUT=10

Nach der jeweiligen gewünschten Änderung
sudo update-grub
im Terminal ausführen.