Boot Menü-Aussehen ändern

 




Das Boot-Menü von GRUB 2 kann auf eine einfache Weise grafisch verändert werden. Das langweilige Standardmenü wie hier bei Ubuntu

Ubuntu_GRUB_2_default_menu
Standard Boot Menü

kann mit einem schöneren, anspruchsvolleren Menü ersetzt werden. Wie zum Beispiel hier:

Ubuntu_GRUB_2_custom_menu
Benutzerdefiniertes Boot Menü

Um zu zeigen wie es geht, wird das oben gezeigte Beispiel basierend auf dem Glas-Theme von der ubuntuusers-Seite verwendet.



Anzeige

Vorbereitung

Zuerst muss sichergestellt werden dass der GRUB 2 und nicht der Vorgänger GRUB Legacy auf dem Rechner installiert ist.

$ grub-install -v

Alles ab Version 1.9x ist GRUB 2. Anderenfalls muss ein Upgrade her. Wie das geht ist hier beschrieben.

Ist GRUB 2 installiert, werden zuerst die Backups der Konfigurationsdateien erstellt. Sie befinden sich in der Datei /etc/default/grub bzw. in den Verzeichnissen /etc/grub.d und /boot/grub.

$ sudo cp /etc/default/grub /etc/default/grub.bkp
$ sudo cp -R /etc/grub.d /etc/grub.d.bkp
$ sudo cp -R /boot/grub /boot/grub.bkp

Theme hinzufügen

Als Nächstes muss das Boot-Menü-Theme Glas heruntergeladen werden.

Ein Themen-Ordner im /boot/grub Verzeichnis erstellen…

$ sudo mkdir /boot/grub/themes

…und die Glas-Theme-Archiv-Datei dorthin entpacken:

$ sudo tar -xvzf /home/{USER}/Downloads/glas_grub_theme.tar.gz -C /boot/grub/themes


Anzeige

Das Hintergrundbild aus dem Beispiel kann hier heruntergeladen werden. Natürlich kann auch ein anderes Bild genommen werden. Das Bild in den /boot/grub/themes/glas Ordner kopieren und in background.jpg umbenennen. Unterstützt werden PNG, JPG und TGA-Formate.

Das Theme-Verzeichnis enthält einen icons-Ordner, /boot/grub/themes/glas/icons. In diesem Ordner sind Icons abgelegt, die bei den Boot-Menüeinträgen angezeigt werden sollen. Die Namen der Icon-Dateien müssen mit den Menüeintrag-Klassennamen übereinstimmen, sonst werden sie nicht angezeigt.

Die Klassennamen findet man in der /boot/grub/grub.cfg-Datei. Sie beginnen mit menuentry oder submenu.

Zum Beispiel für den Ubuntu-Eintrag muss das Icon ubuntu.png heißen:

menuentry 'Ubuntu, with Linux 3.13.0-117-generic' --class ubuntu --class gnu-linux --class gnu --class os { ... }

für Windows 7 – windows.png:

menuentry "Windows 7 (loader) (on /dev/sdb1)" --class windows --class os { ... }

für zusammengefasste Menüeinträge – prev-linux.png:

submenu "Previous Linux versions" --class prev-linux { ... }

usw.

Allerdings besitzen nicht alle Einträge mindestens eine Klasse. Wie im Falle vom Memory Test:

menuentry "Memory test (memtest86+)" { ... }

Bei submenu-Einträgen ist es auch der Fall. In dem „Previous Linux versions“ – Beispiel oben wurde die Klasse nachträglich hinzugefügt.

Die Eintragung der Klassen soll aber nicht in der grub.cfg-Datei stattfinden. Diese Datei wird automatisch bei der Ausführung von update-grub erstellt und jede manuelle Änderung dieser Datei wird dabei überschrieben. Man sollte stattdessen die Dateien in dem Verzeichnis /etc/grub.d bearbeiten, welche die Informationen für die Erstellung der grub.cfg liefern. Die Dateien, besser gesagt Skripte in diesem Verzeichnis sind:

  • 00_header
  • 05_debian_theme
  • 10_linux
  • 20_linux_xen
  • 20_memtest86+
  • 30_os-prober
  • 30_uefi-firmware
  • 40_custom
  • 41_custom

Die genaue Beschreibung der Skripte von ubuntuusers.

Möchte man also ein Menüeintragicon für ein Memory Test hinzufügen, muss das Skript 20_memtest86+ bearbeitet werden.

$ sudo gedit /etc/grub.d/20_memtest86+

Hier sind zwei Memory Test – Menüeintrage definiert.

menuentry "Memory test (memtest86+)" { ... }
menuentry "Memory test (memtest86+, serial console 115200)" { ... }

Es ist sinnvoll sie in ein Hauptmenü zusammen zu fassen und das Icon dem Hauptmenü zuweisen (im Boot-Menü-Beispielbild oben sind sie einzeln aufgelistet).

submenu "Memory Tests" --class memtest {
menuentry "Memory test (memtest86+)" { ... }
menuentry "Memory test (memtest86+, serial console 115200)" { ... }
}

Optional kann man noch dem Skript 40_custom folgende zwei Zeilen hinzufügen, die zusätzliche Einträge für einen Neustart und das Herunterfahren erstellen:

menuentry "Restart" --class restart {reboot} 
menuentry "Shut Down" --class shutdown {halt}

GRUB konfigurieren

Die Darstellung des GRUB-Menüs wird über zwei Dateien gesteuert. Zu einem wird das Verhalten des Menüs über die /etc/default/grub und zum zweiten die Grafik über die /boot/grub/themes/glas/theme.txt eingestellt.

grub-Datei

$ sudo gedit /etc/default/grub

In dieser Datei sollen folgende Parameter angepasst werden:

GRUB_DEFAULT=saved
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=120
GRUB_GFXMODE=1280x1024
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_THEME="/boot/grub/themes/glas/theme.txt"
GRUB_SAVEDEFAULT=true

GRUB_DEFAULT ist der markierte, ausgewählte Menüeintrag. Der Wert saved zusammen mit GRUB_SAVEDEFAULT=true speichert den zuletzt ausgewählten Menüeintrag und wählt ihn automatisch beim nächsten Start wieder aus.

GRUB_HIDDEN_TIMEOUT macht das Bootmenü unsichtbar und kann nur mit der gedrückten Umschalt-Taste während des Starts sichtbar gemacht werden. Die Angabe eines Sekunden-Ganzzahlenwertes verzögert den Startvorgang. Dieser Parameter soll auskommentiert bleiben.

GRUB_TIMEOUT verzögert den automatischen Start des zuletzt gewählten Menüeintrages und gibt dem Benutzer die Möglichkeit die Auswahl zu ändern.

GRUB_GFXMODE stellt die GRUB-Menü-Auflösung ein. Die Unterstützten Auflösungen können mit dem GRUB 2-Shell-Befehl vbeinfo ermittelt werden.

GRUB_GFXPAYLOAD_LINUX=keep behält die mit GRUB_GFXMODE eingestellte Schriftauflösung.

GRUB_THEME ist der Pfad zu der Theme-Konfigurationsdatei.

Die vorgenommenen Änderungen müssen nun in die grub.cfg-Konfigurationsdatei exportiert werden:

$ sudo update-grub

theme.txt-Datei

In dieser Konfigurationsdatei wird die grafische Darstellung des Bootmenüs eingestellt.

$ sudo gedit /boot/grub/themes/glas/theme.txt

Die folgenden Einstellungen anpassen.

Der Titel und das Hintergrundbild:

title-text: "GRUB 2 Boot Menu"
title-font: "Ubuntu Bold 50"
title-color: "white"
desktop-image: "background.jpg"

Der Fortschritt-Balken soll bei 25% der Bildschirmbreite beginnen, 50% des Bildschirmes breit, 25 Pixel hoch und 45 Pixel von unten platziert sein. Der Text mit der Größe von 14px in Rot wird innerhalb des Balkens angezeigt.

+ progress_bar {
    [...]
    left = 25%
    top = 100%-45
    height = 25
    width = 50%
    font = "DejaVu Sans Regular 14"
    text_color = "red"
    [...]
}

Das Bootmenü wird 30% von der Bildschirmoberkante, 25% von links, 50% breit und mit der Höhe von 560 Pixel angezeigt. Die einzelnen Menüeinträge sind 60 Pixel hoch mit 48 Pixel hohen Icons und 40 Pixel großem Text. Der Parameter menu_pixmap_style, der für den Menürahmen zuständig ist, soll auskommentiert werden. Somit wird der Rahmen nicht angezeigt. Ein 27 Pixel breiter Scroll-Balken soll angezeitg werden, wenn die Liste der Menüeinträge länger sein sollte.

+ boot_menu { 
    top = 30%
    left = 25%
    width = 50%
    height = 560
    item_font = "Ubuntu Condensed Regular 40"
    item_color = "white"
    selected_item_font = "Ubuntu Condensed Bold 40"
    icon_height = 48
    icon_width = 40
    item_height = 60
    item_padding = 0
    item_icon_space = 7
    item_spacing = 0
    selected_item_color = "white"
    selected_item_pixmap_style = "menu_bar_*.png"
    scrollbar = true
    scrollbar_frame = "scroll_frame_*.png"
    scrollbar_thumb = "scroll_thumb_s_*.png"
    #menu_pixmap_style = "box_*.png"
    scrollbar_width = 27
}

Nach dem Abspeichern der Datei kann der Rechner neu gestartet werden. Sollte die Bootmenü-Darstellung, abhängig von der Bildschirmgröße und -auflösung, nicht dem gewünschten Ergebnis entsprechen, die theme.txt-Datei nochmal anpassen. Das fertige Bootmenü sollte ungefähr so aussehen:

glas-boot-menu
GRUB 2 – Bootmenü mit Glas-Theme



Anzeige