wiki:linux/Grub

Wichtig: Das Manual zu Grub ist nicht via man grub, sondern via info grub zu erreichen! Weitere manuals:

grub-bios-setup grub-mkconfig grub-mkstandalone update-grub
grub-editenv grub-mkdevicemap grub-mount update-grub2
grub-file grub-mkfont grub-ntldr-img
grub-fstest grub-mkimage grub-probe
grub-glue-efi grub-mklayout grub-reboot
grub-install grub-mknetdir grub-render-label
grub-kbdcomp grub-mkpasswd-pbkdf2 grub-script-check
grub-macbless grub-mkrelpath grub-set-default
grub-menulst2cfg grub-mkrescue grub-syslinux2cfg

Grub neu installieren

siehe ubuntuusers wiki

Wird ein weiteres Betriebssystem installiert, das den MBR und damit die bisherige Grub-Installation überschreibt, muss neu installiert werden.

Sollten nicht alle Systeme von `update-grub` gefunden werden, hilft das Paket `os-prober`, das ins Live-System installiert werden muss.
Mit installiertem `os-prober` sieht `update-grub` besser... ;-)

Einfache Methode
Im folgenden Beispiel wird davon ausgegangen, dass sich das System, von dem aus neu aufgesetzt werden soll, auf /dev/sda1 befindet.

$ sudo mount /dev/sda1 /mnt
$ sudo mount -o bind /dev /mnt/dev
$ sudo mount -o bind /sys /mnt/sys
$ sudo mount -t proc /proc /mnt/proc
$ sudo cp /proc/mounts /mnt/etc/mtab
$ sudo chroot /mnt /bin/bash
$ grub-install /dev/sda
$ update-grub

LVM Methode
Sollte sich das System innerhalb einer Volume-Gruppe befinden, müssen die Partitionen zuerst wie in der Anleitung unter LVM? beschrieben eingehängt werden.
Das Beispiel geht von folgender Aufteilung aus:

  • /dev/sda1
    Partition, die den Kernel samt grub-Installation enthält.
  • /dev/sda2
    Verschlüsselte Partition, auf der sich auch das eigentliche System befindet:
    Volume-Gruppe debian mit den logischen Laufwerken home, root und swap.
  • /dev/sda3
    Unverschlüsselte Partition mit einer openSuse-Installation

Die typische Installation eines paranoiden Nerds also... ;-)

$ cryptsetup luksOpen /dev/sda2 lvm
Geben Sie den Passsatz für /dev/sda2 ein:
$ vgchange -a y
  3 logical volume(s) in volume group "debian" now active
$ mount /dev/mapper/debian-root /mnt
$ mount /dev/sda1 /mnt/boot
$ mount -o bind /dev /mnt/dev
$ mount -o bind /sys /mnt/sys
$ mount -t proc /proc /mnt/proc
$ cp /proc/mounts /mnt/etc/mtab
$ chroot /mnt /bin/bash
$ grub-install /dev/sda
$ update-grub

Unter grub 1.99 gelang es mir bisher noch nicht, weitere Systeme, die sich ebenfalls innerhalb eines LV befinden, mit dieser Methode ins grub-Menü zu bekommen.
update-grub konnte die Systeme wohl finden, allerdings wurden sie nicht an das Menü angefügt.

grub konfigurieren

siehe ubuntuusers wiki

Konfiguration liegt in /etc/default/grub. Änderungen daran werden bei einem folgenden update-grub einbezogen.
Für mich bisher wichtig waren folgende Einträge:

GRUB_TIMEOUT <int> Zeit in Sekunden, die das grub-Menü angezeigt wird.
0: Der unter GRUB_DEFAULT eingestellte Eintrag wird direkt geladen.
-1: Zähler wird deaktiviert
GRUB_DEFAULT <int>
<str>
saved
<int>: Voreingestellter Menüeintrag. Zählung beginnt bei 0.
<str>: Menüeintrag mit der exakten Bezeichnung
saved: Steht GRUB_SAVEDEFAULT auf true, so wird der zuletzt ausgewälte Menüeintrag eingestellt. Der Eintrag bleibt auch nach einer eventuellen Änderung der Reihenfolge nach einem Kernel-Update erhalten. Funktioniert momentan (Version 1.99) unter einem RAID, LVM oder Btrfs nicht.
GRUB_GFXMODE <int>x<int>x<int> Auflösung des grub-Menüs. Nach Eingabe von 'c' im grub-Menü kann diese über vbeinfo abgefragt werden.
GRUB_THEME <path> Pfad zu einem grub-Thema. Siehe mehr dazu unter Aussehen - erweiterte Konfiguration
GRUB_BACKGROUND <img> jpeg oder png, das als Hintergrundbild verwendet werden soll
GRUB_FONT <font> pf2, das als Schriftart verwendet werden soll. Erstellung einer Schriftart aus einer ttf siehe unten...
GRUB_COLOR_NORMAL <str> Farbe der Menü Schrift, z. B. "light-blue/black". In Verbindung mit einem Hintergrundbild bedeutet ".../black" transparenter Hintergrund. Mögliche Formate sind:
SVG color name (wobei ich das für ein Gerücht halte...)
HTML-style (z. B. "#8899FF")
RGB (z. B. "128, 128, 255")
Siehe Hack unten...
GRUB_COLOR_HIGHLIGHT <str> Farbe der Schrift des Auswahlbalkens, z. B. "light-cyan/blue"
Siehe Hack unten...
GRUB_CMDLINE_LINUX <str> Kerneloptionen, z. B. acpi=off.
Eintrag wird an alle Grub Menüeinträge übergeben.
GRUB_CMDLINE_DEFAULT <str> Wie GRUB_CMDLINE_LINUX
Eintrag wird an alle Grub Menüeinträge, außer recovery mode Einträge, übergeben.

Zu den Farben:
Setting Menu Font Colors

Folgende Farben können als Hintergrund für Schriften verwendet werden:

black blue brown cyan dark-gray green light-cyan light-blue
light-green light-gray light-magenta light-red magenta red white yellow

Schriftart aus ttf erstellen Um aus einer ttf eine von grub lesbare pf2 mit Schriftgröße 14 zu bilden:

$ grub-mkfont -s 14 -o /boot/grub/fonts/DejaVuSerifBold.pf2 /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Bold.ttf

Hack, falls GRUB_COLOR_xxx nicht verarbeitet wird
Wird ein Hintergrundbild gesetzt werden die Werte für GRUB_COLOR_NORMAL und GRUB_COLOR_HIGHLIGHT vom Skript 05_... nicht berücksichtigt. Warum auch immer... ;-(
Das lässt sich dadurch umgehen, dass die Werte über die /etc/grub.d/40_custom gesetzt werden. Das Skript könnte dann in etwa so aussehen:

#!/bin/sh
exec tail -n +3 $0
# 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.
set menu_color_normal=black/black
set menu_color_highlight=black/grey

update-grub und alles ist gut!

Last modified 4 years ago Last modified on Dec 25, 2014, 12:11:40 PM