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

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}


Anzeige

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

Anzeige

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




 

War diese Seite für dich informativ? Hat sie dir gefallen und geholfen?

Dann unterstütze die Weiterentwicklung mit einer kleinen Spende!

Die Spenden werden für die Lizenzen sowie neue Hard- und Software verwendet, die für weitere Projekte auf dieser Webseite eingesetzt werden.



Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert