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
Links¶
Howto - Übersicht aller Howto-Artikel