staging.inyokaproject.org

Grub-Menü mit Anzeige der Derivate

Hinweis:

Diese Howto-Anleitung wurde zuletzt von Frieder108 am 31. März 2018 unter Ubuntu 16.04 (mit den Derivaten "Kubuntu 18.04", "Ubuntu 18.04" und "KDE-Neon") erfolgreich getestet.

Problembeschreibung

Das Grub-Auswahlmenü zeigt bei Multiboot (mit mehreren Ubuntu-Derivaten wie Xubuntu, Lubuntu, Kubuntu, Gnome, Mate etc.) jeweils nicht die Namen der Derivate an, sondern stattdessen immer „Ubuntu“. Das kann für manche Benutzer irritierend sein.

Es gibt einige Methoden, um im Grub-Menü die Namen der Derivate richtig anzuzeigen. Die hier gezeigte Variante wurde auf einem BIOS (bzw. Legacy-)-System getestet - sie basiert auf entsprechenden Forenbeiträgen, deren Ergebnisse hier zusammengefasst wurden.

Anleitung

Vorbemerkung

Sofern hier von Terminaleingaben die Rede ist, sind damit gemeint

  • der Aufruf eines Terminals mit der Tastenkombination Strg + Alt + T

  • die Kommando-Eingabe selbst mit dem Abschluss per Eingabetaste

Mit "copy+paste" gemeint ist das Markieren eines Textes bzw. Kommandos mit der Maus, anschliessendes Kopieren und Einfügen an eine andere Stelle. Diese Methode ist oft einfacher zu handhaben als Kommandos neu einzutippen.

Ausgangslage

Es wird davon ausgegangen, dass Ubuntu und einige Derivate bereits installiert und bootfähig sind (einschl. etwa nachinstallierter Treiber). Auch dass die jeweiligen Versionen bereits (z.B. mit GParted) mit Labels (Bezeichnungen) versehen worden sind.

Das hier gezeigte Installationsbeispiel wird sich von der aktuellen Multiboot-Installation anderer User unterscheiden. Daraus ergeben sich erforderliche Anpassungen der beschriebenen Vorgehensweise an die jeweilige Situation - insbesondere wenn Devices, Label-Bezeichnungen und UUIDs angesprochen sind!

In diesem Beispiel sind Ubuntu und drei Derivate auf Device /sda installiert. Die Labels (Bezeichnungen) der jeweiligen Installation sind im Vorfeld mit GParted bereits erstellt worden.

Dabei wurde eine SSD (mit 111,24 Gib = 122.101 Mib) wie folgt eingerichtet:

  • Ubuntu 14.04. LTS (als Basissystem) mit Label "Ubu" als ext4-Primär-Partition auf Device /sda/sda1 (22 GiB = 22.528 MiB)

  • Xubuntu 14.04. LTS mit Label "Xubu" als ext4-Primär-Partition auf Device /sda/sda2 (20 Gib = 20.480 MiB)

  • Lubuntu 14.04. LTS mit Label "Lubu" als ext4-Primär-Partition auf Device /sda/sda3 (20 Gib = 20.480 MiB)

  • eine erweiterte Partition als Device /sda/sda4 (57 GiB = 58.368 MiB)

    • darin: Kubuntu 14.04. LTS mit Label "Kubu" als logische ext4-Partition auf Device /sda/sda5 (20 Gib = 20.480 MiB)

    • sowie: eine swap Partition als Device /sda/sda6 (10 Gib = 10.240 MiB)

    • sowie: eine logische ntfs-Partition für gemeinsamen Zugriff Ubuntu und Windows als Device /sda/sda7 (27 Gib = 27.648 Mib)

  • Windows befindet sich auf einer anderen internen SSD als /dev/sdd

Für die Ubuntu-Versionen/Derivate wurden in diesem Beispiel keine separaten Home-Partitions angelegt! Sollten diese gewünscht sein, ist zu berücksichtigen, dass auf Bios-Systemen maximal 4 Primär-Partitions vorhanden sein dürfen. Die über 3 primäre Partitions hinausgehenden „überzähligen Partitions“ müssen dann in einer 4ten sogenannten „erweiterten“ (extended) Partition als „logische Partitions“ eingebracht werden.

Ubuntu bzw. die einzelnen Derivate wurden von einem Live-Medium (USB-Stick) auf das Ziel-Laufwerk installiert, in diesem Falle auf die eingangs erwähnte ca. 112 GiB SSD mit o. e. Aufteilung. Dabei wurde der Boot-Loader GRUB2 nur EINMAL installiert und zwar auf Device /sda (während der Installation das Basis-Systemes Ubuntu 14.04).

Alle weiteren Systeme wurden im Modus „Ausprobieren“ vom Desktop des jeweiligen Live-Sticks aus mit der folgenden Terminaleingabe installiert (was die mehrmalige Installation von GRUB verhindert):

ubiquity -b 

Anzeige im Grub-Menü

Das aufgrund der vorgenannten Installationen erzeugte Grub-Menü zeigt beim Startvorgang die bootbaren Systeme wie folgt an (hier mit "schwarzem", im Original mit "blauem" Hintergrund):

*UBUNTU
Erweiterte Optionen für Ubuntu
Memory test (memtest86+)
Memory test (memtest86+, serial console 115200)
Ubuntu 14.04.3 LTS (14.04) (auf /dev/sda2)
Erweiterte Optionen für Ubuntu 14.04.3 LTS (14.04) (auf /dev/sda2)
Ubuntu 14.04.3 LTS (14.04) (auf /dev/sda3)
Erweiterte Optionen für Ubuntu 14.04.3 LTS (14.04) (auf /dev/sda3)
Ubuntu 14.04.3 LTS (14.04) (auf /dev/sda5)
Erweiterte Optionen für Ubuntu 14.04.3 LTS (14.04) (auf /dev/sda5)
Windows 8 (loader) (auf /dev(sdd1) 

Die Derivate Xubuntu, Lubuntu und Kubuntu werden darin, wie ersichtlich, nicht mit ihrer eigenen Bezeichnung, sondern alle als „Ubuntu“ angezeigt. Das Ziel dieser Vorgehensweise ist es, im Grub-Menü neben dem Basis-Ubuntu auch die "tatsächlichen" Bezeichnungen der Derivate anzuzeigen.

wichtige Dateien

Das Ziel, die Derivate mit ihrem eigenen Namen im Grub-Menü anzuzeigen, erreicht man durch die Ermittlung und Zuordnung von

  • Geräte-UUIDs (Universal Unique Identifyer = universelle eindeutige Kennzeichnungen)

  • im Vorfeld erstellten Labels (Bezeichnungen) für die jeweiligen Derivate

  • Devices (Laufwerke)

Dazu folgender Hinweis zu zwei davon betroffenen Dateien:

  • In der Datei 40_Custom werden u. a. die o. e. UUIDs und Labels (Bezeichnungen) den jeweiligen Laufwerken zugeordnet. Editiert wird die Datei mit der Terminaleingabe

gksudo gedit /etc/grub.d/40_custom 
  • Die Datei grub verwaltet u. a. den Eintrag OS_PROBER , der zwecks Ausblendung von Basis-Anzeigen des Grub-Menüs abgeschaltet werden kann. Editiert wird die Datei mit der Terminaleingabe

gksudo gedit /etc/default/grub 

Vor Änderung der o. e. Dateien empfiehlt es sich, davon Backup-Kopien anzulegen (um ggf. den Urzustand wiederherzustellen).

Vorgehensweise

Alle nachfolgend beschriebenen Eingaben erfolgen im Terminal (Aufruf mit Strg + Alt + T ) bzw. in Dateien, die sich im Anschluss an die Terminaleingaben öffnen.

Vorab wird die Zuordnung der Devices bzw. gefundenen Operating-Systeme mit folgendem Terminal-Kommando angezeigt:

sudo update-grub 

Die Basis-Ausgabe in diesem Beispiel war zunächst:

Grub-Konfigurationsdatei wird generiert …
Linux-Abbild gefunden: /boot/vmlinuz-3.19.0-30-generic
initrd-Abbild gefunden: /boot/initrd.img-3.19.0-30-generic
Linux-Abbild gefunden: /boot/vmlinuz-3.19.0-25-generic
initrd-Abbild gefunden: /boot/initrd.img-3.19.0-25-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Ubuntu 14.04.3 LTS (14.04) auf /dev/sda2 gefunden
Ubuntu 14.04.3 LTS (14.04) auf /dev/sda3 gefunden
Ubuntu 14.04.3 LTS (14.04) auf /dev/sda5 gefunden
Windows 8 (loader) auf /dev/sdd1 gefunden
erledigt
:~$ 

Die Ubuntu-Derivate sind dabei (noch) alle mit der Bezeichnung „Ubuntu“ statt mit ihrem „eigenen“ Namen angezeigt. Zwecks Anzeige der Position der einzelnen Devices, ihrer Label (Bezeichnungen) und UUIDs (Universal Unique Identifyer = universelle eindeutige Kennzeichnung) erfolgt folgende Terminaleingabe:

sudo blkid 

Daraus wird folgende Ausgabe erzeugt, wobei die angezeigten Devices, Label-Bezeichnungen und UUIDs die Grundlage für die gewünschte Anzeige von Derivat-Namen im Grub-Menü bilden - in diesem Beispiel wie folgt:

/dev/sda1: LABEL="Ubu" UUID="7f5581d0-d5a7-458e-8792-db4e4984e839" TYPE="ext4" 
/dev/sda2: LABEL="Xubu" UUID="3efebb35-14f7-425c-9178-0b924345def5" TYPE="ext4" 
/dev/sda3: LABEL="Lubu" UUID="0684ce4a-a419-4bd2-9b5e-ec1bf2c09a4c" TYPE="ext4" 
/dev/sda5: LABEL="Kubu" UUID="8a8a9aea-72b4-4a07-b5a4-37f9dfcdc6bd" TYPE="ext4"
/dev/sda6: LABEL="swap" UUID="8b984120-5ef6-4a23-ba1a-02c799b9bf38" TYPE="swap" 
/dev/sda7: LABEL="ntfs" UUID="42F304F037E7B22E" TYPE="ntfs" 
/dev/sdb1: LABEL="Daten SSD" UUID="741C68E81C68A6B8" TYPE="ntfs" 
/dev/sdc1: LABEL="Backup Disk" UUID="1C86CB451F8A84D4" TYPE="ntfs" 
/dev/sdd1: LABEL="System-reserviert" UUID="AAF0C74AF0C71C07" TYPE="ntfs" 
/dev/sdd2: LABEL="Win SYSTEM (SSD)" UUID="B616C92E16C8F103" TYPE="ntfs" 
:~$ 

(Die dabei neben den Devices ausgelesenen Labels=Bezeichnungen und UUIDs der Derivate sind - nachfolgend beschrieben - via "copy+paste" in das Schema der Datei 40_custom einzutragen - die in diesem Beispiel angezeigten Bezeichnungen sind dabei durch die entsprechenden der jeweiligen Installation zu ersetzen).

Datei 40_custom

Die Datei 40_custom wird mit einem Editor durch folgende Terminaleingabe geöffnet:

gksudo gedit /etc/grub.d/40_custom 

Danach erscheint (ggf. nach Eingabe eines System-Passwortes) die geöffnete Datei mit folgendem standardmäßigen Basis-Eintrag:

#!/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.

An diesen vorhandenen Eintrag „anzuhängen“ sind folgende Eintragungen (per "copy+paste"):

  • je Installation bzw. Derivat eine Gruppe gemäß der nachstehenden „Syntax“ , beginnend mit menuentry und endend mit }

    • (in diesem Beispiel je eine Gruppe für Ubuntu, Xubuntu, Lubuntu und Kubuntu)

Gruppenbeispiel:


menuentry "Ubu auf /dev/sda1" {
   insmod ext2
   search --no-floppy --fs-uuid --set=root 7f5581d0-d5a7-458e-8792-db4e4984e839
   configfile /boot/grub/grub.cfg
   }
  • in jede Gruppe hinein die Bezeichnungen (Labels) der vorstehend ausgegebenen Derivate sowie die Device/Partition-Position (z.B. menuentry "Ubu auf /dev/sda1")

  • und die je Label erzeugten, vorstehend angezeigten UUIDs (im Anschluss an set=root. z.B. set=root 7f5581d0-d5a7-458e-8792-db4e4984e839)

  • dabei sind die jeweiligen Device-Angaben, Labels und UUIDs der betreffenden Installation zu verwenden (nicht die aus diesem Beispiel)!.

Hier die Gesamtheit der einzutragenden Ergänzungen des Beispieles (4 Gruppen), dabei ist auf stellengenaues Eingeben bzw. copy+paste (kopieren und einfügen) zu achten:


menuentry "Ubu auf /dev/sda1" {
   insmod ext2
   search --no-floppy --fs-uuid --set=root 7f5581d0-d5a7-458e-8792-db4e4984e839
   configfile /boot/grub/grub.cfg
   }
   
menuentry "Xubu auf /dev/sda2" {
   insmod ext2
   search --no-floppy --fs-uuid --set=root 3efebb35-14f7-425c-9178-0b924345def5
   configfile /boot/grub/grub.cfg 
   }
    
menuentry "Lubu auf /dev/sda3" {
   insmod ext2
   search --no-floppy --fs-uuid --set=root 0684ce4a-a419-4bd2-9b5e-ec1bf2c09a4c
   configfile /boot/grub/grub.cfg
   }
menuentry "Kubu auf /dev/sda5" {
   insmod ext2
   search --no-floppy --fs-uuid --set=root 8a8a9aea-72b4-4a07-b5a4-37f9dfcdc6bd 
   configfile /boot/grub/grub.cfg
   }

Nachdem die Eintragungen erfolgt sind, die Datei 40_custom SPEICHERN und schließen.

ABSCHLIESSEND im Terminal eingeben (zwecks Grub-Update):

sudo update-grub 

Neustart

JETZT DAS SYSTEM NEU STARTEN (um feszustellen ob die Derivate im Grub-Menü gezeigt werden)!

Beim Neustart erscheint ein „verändertes bzw. verlängertes“ Grub-Menü, in dem unterhalb der „ursprünglichen Basiseintragungen“ (ohne Derivat-Namen) jetzt auch die Namen der Derivate XUBUNTU, LUBUNTU, KUBUNTU (bzw. deren Kürzel/Label ) erscheinen – wie folgt:

*UBUNTU
Erweiterte Optionen für Ubuntu
Memory test (memtest86+)
Memory test (memtest86+, serial console 115200)
Ubuntu 14.04.3 LTS (14.04) (auf /dev/sda2)
Erweiterte Optionen für Ubuntu 14.04.3 LTS (14.04) (auf /dev/sda2)
Ubuntu 14.04.3 LTS (14.04) (auf /dev/sda3)
Erweiterte Optionen für Ubuntu 14.04.3 LTS (14.04) (auf /dev/sda3)
Ubuntu 14.04.3 LTS (14.04) (auf /dev/sda5)
Erweiterte Optionen für Ubuntu 14.04.3 LTS (14.04) (auf /dev/sda5)
Windows 8 (loader) (auf /dev(sdd1)
Ubu auf /dev/sda1
Xubu auf /dev/sda2
Lubu auf /dev/sda3
Kubu auf /dev/sda5 

Entweder startet man jetzt durch „optischen Vergleich“ das gewünschte Derivat – oder man wählt aus dem unteren Teil des Grub-Menüs eines der DERIVATE aus.

Es erscheint sodann ein Zusatz-Menü. In diesem wählt man die oberste Anzeige

*UBUNTU 

aus, diese startet dann das vorher ausgewählte Derivat.

Basiseinträge im Grub-Menü „unterdrücken“

Will man die Anzeige der „ursprünglichen Eintragungen im Basismenü“ unterdrücken und nur noch die „tatsächlichen Namen“ der Derivate im Grub-Menü anzeigen, muss man in der Datei grub eine Änderung vornehmen.

Dies geschieht wie folgt. Im Terminal aufrufen :

gksudo gedit /etc/default/grub 

(ggf. mit Password wird dann die angezeigte Datei geöffnet)

In diese geöffnete Datei grub als Anhang an die „letzte“ GRUB-Zeile im zweiten Block folgende Zeile einfügen (um OS PROBER abzuschalten):

GRUB_DISABLE_OS_PROBER="true"

Das erzeugt in diesem Beispiel folgenden Gesamt-Inhalt der Datei:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

GRUB_DISABLE_OS_PROBER="true"

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# 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
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"

Anschließend SPEICHERN und Schliessen.

Danach NOCHMALS ein Grub-Update:

sudo update-grub 

Jetzt erfolgt eine etwas abgewandelte Ausgabe wie folgt:

Grub-Konfigurationsdatei wird generiert …
Linux-Abbild gefunden: /boot/vmlinuz-3.19.0-30-generic
initrd-Abbild gefunden: /boot/initrd.img-3.19.0-30-generic
Linux-Abbild gefunden: /boot/vmlinuz-3.19.0-25-generic
initrd-Abbild gefunden: /boot/initrd.img-3.19.0-25-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
erledigt
:~$ 

Abschluss

Nach dem abschliessenden NEUSTART erfolgt die Anzeige eines „reduzierten“ Grub-Menüs mit ausschließlicher Anzeige von UBUNTU und der DERIVATE - ohne bisherige Basiseintragungen – wie folgt (hier mit "schwarzem", im Original mit "blauem" Hintergrund):

*UBUNTU
Erweiterte Optionen für Ubuntu
Memory test (memtest86+)
Memory test (memtest86+, serial console 115200)
Ubu auf /dev/sda1
Xubu auf /dev/sda2
Lubu auf /dev/sda3
Kubu auf /dev/sda5 

Zum Booten der gewünschten Version, wählt man aus dem „reduzierten“ Grub-Menü jetzt *UBUNTU oder eines der DERIVATE aus. Es erscheint sodann ein Zusatz-Menü. In diesem wählt man die oberste Anzeige

*UBUNTU 

aus, diese startet dann das zuvor ausgewählte Derivat.

Anmerkung

Ob es sinnvoll ist, Ubuntu und davon abgeleitete Derivate geimeinsam auf einem System zu installieren – oder ob man nur Ubuntu installiert und dazu unterschiedliche Desktop-Oberflächen, sei dahingestellt.

Die vorstehende Vorgehensweise wurde mit Ubuntu 14.04 LTS sowie den angezeigten Derivaten auf einem BIOS/Legacy-System getestet. Im Prinzip dürfte dieselbe Vorgehensweise auch bei anderen Ubuntu-Derivaten wie Ubuntu Gnome, Ubuntu Mate oder Ubuntu Studio funktionieren, ggf. auch bei nicht-offiziellen Ubuntu-Derivaten wie Linux-Mint (Cinnamon und Mate).

Ausser der vorgenannten Vorgehensweise gibt es weitere Methoden zur Anzeige von Ubuntu-Derivaten im Grub-Menü. Eine davon wird im wiki behandelt, allerdings nicht als "Howto" - siehe hier: Derivate im Grubmenü - alternative Methode

Diese Revision wurde am 31. März 2018 14:22 von Frieder108 erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Howto