Änderungen an den Konfigurationsdateien von GRUB 2 können das System beschädigen, bei unsachgemäßen Einstellungen startet es ggf. nicht mehr richtig. Eine Sicherung der Dateien /etc/default/grub und des Verzeichnisses /etc/grub.d ist ratsam.
Ubuntu 16.04 Xenial Xerus
Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
In den Grundeinstellungen von GRUB 2 werden bei der Ausführung von update-grub
bzw. grub-mkconfig
alle auf einem Computer installierten Betriebssysteme gefunden und automatisch in das Auswahlmenü aufgenommen. Eine manuelle Konfiguration von GRUB 2 ist daher normalerweise nicht notwendig.
Manuelle Anpassungen werden an der Datei /etc/default/grub (grundlegende Einstellungen) und über die Skripte im Verzeichnis /etc/grub.d (individuelle Menüeinträge, optische Anpassungen etc.) vorgenommen.
Mit dem Grub Customizer existiert ein grafisches Konfigurationswerkzeug.
Die Datei /etc/default/grub ist eine Textdatei, die direkt nach der Installation in aller Regel wie folgt aussieht:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | # 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="" # 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 entrys ## Bis GRUB 1.98 #GRUB_DISABLE_LINUX_RECOVERY="true" ## Ab GRUB 1.99 #GRUB_DISABLE_RECOVERY="true" # Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1" |
Die rosa Textzeilen stellen aktive Einstellungen dar. Mittels der #
werden Einstellungen auskommentiert und damit deaktiviert.
Weiterhin ist zu beachten, dass in bestimmten Fällen manche Zeichen gleich doppelt maskiert werden müssen. So kann man z.B. einen defekten RAM-Bereich umschiffen[1] mit:
1 | GRUB_CMDLINE_LINUX="memmap=128M\\\$0xA0000000" |
Diese Datei ist in einem Editor [3] mit Rootrechten zu bearbeiten. Im Standard-Ubuntu (Editor gedit) führt man dafür folgendes Kommando aus, wobei in neueren Ubuntu-Versionen zunächst gksudo nachinstalliert werden muss:
gksudo gedit /etc/default/grub
In Kubuntu heißt es:
kdesudo kate /etc/default/grub
Es wird empfohlen, folgende Änderung im obigen Bereich der Zeilen 6 bis 9 ausführen:
1 2 3 4 5 | GRUB_DEFAULT=0 # GRUB_HIDDEN_TIMEOUT=0 # GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=5 GRUB_TIMEOUT_STYLE=menu |
Mit der Eingabe in ein Terminal [1] von
info -f grub -n 'Simple configuration'
erhält man eine Übersicht , die nachfolgend übersetzt wiedergegeben wird:
Variable in der /etc/default/grub | ||
Variable | Wert | Bedeutung |
GRUB_DEFAULT= | Zahl | Gibt an, welcher Eintrag im Menü standardmäßig hervorgehoben wird. Dieser Eintrag wird geladen, falls keine andere Auswahl getroffen wird. Die Zählung beginnt mit 0. Der dritte Eintrag im Menü würde also durch eine 2 hervorgehoben. Diese Vorgabe ist statisch. |
"xxx " | Wählt den Eintrag mit der exakten Bezeichnung, z.B. Previous Linux versions>Ubuntu, with Linux 3.8.0-30-generic bzw. entsprechend lokalisiert, als Standard aus. Diese Vorgabe ist statisch. | |
saved | Trägt man anstelle eines Zahlenwertes (siehe Kasten oben) den Wert saved ein, so wird Grub veranlasst, den in /boot/grub/grubenv gespeicherten Menüeintrag auszulesen und als Vorgabe zu verwenden, unabhängig davon, ob die Reihenfolge inzwischen durch ein Kernel-Update oder durch eigene Skripte verändert wurde. Siehe auch nächsten Kasten GRUB_SAVEDEFAULT . | |
GRUB_SAVEDEFAULT= | true | Wird diese Variable mit true nachgetragen, so wird für alle mit 10_linux ausgewählten Kerneleinträge aus dem Verzeichnis /boot die Möglichkeit geschaffen, den mittels der Tasten
↓ bzw.
↑ ausgewählten und mit
⏎ bestätigten Menüeintrag als Vorgabe für den nächsten Start abzuspeichern. Es muss GRUB_DEFAULT=saved gesetzt sein, damit dieses ausgewertet wird (siehe Kasten oben und die Hinweise unter grubenv). Achtung!Das Abspeichern funktioniert aus Sicherheitsgründen nicht auf einem RAID-Verbund, einem LVM-Dateisystem, einem Btrfs-Dateisystem oder einem ZFS-Dateisystem (siehe GNU GRUB MANUAL). |
GRUB_HIDDEN_TIMEOUT | Zahl | Diese Funktion sollte mit einer vorangestellten Raute (# ) anstelle einem Wert = 0 (Null) unwirksam gemacht werden. Achtung!Wurde |
Experten-Info:Für ein korrektes Arbeiten dieser Funktion muss der Wert Hinweis:Entfällt zukünftig zugunsten GRUB_TIMEOUT_STYLE | ||
GRUB_HIDDEN_TIMEOUT_QUIET= | true | Wenn dieser Wert auf ´false´ gesetzt, so wird nur der unter GRUB_HIDDEN_TIMEOUT eingestellte Wert auf dem Monitor als Countdown angezeigt. Mit der
⇧ -Taste kann das Auswahlmenü innerhalb der Zeitspanne sichtbar gemacht werden. |
Hinweis:Entfällt zukünftig zugunsten GRUB_TIMEOUT_STYLE | ||
GRUB_RECORDFAIL_TIMEOUT= | Zahl | Ein Zahlenwert gibt die Zeit in Sekunden an, wie lange das Auswahlmenü angezeigt wird, wenn es beim Start ein Problem gibt. Im Normalfall fehlt dieser Eintrag, was dazu führt, dass im Falle eines Fehlers das Auswahlmenü unbegrenzt erscheint und auf die Auswahl durch den Benutzer gewartet wird. Bei Servern ist das in der Regel ein Problem, da beispielsweise bei einem Stromausfall oder einem Systemfehler kein automatischer Boot-Up mehr durchgeführt wird, sondern der Boot-Up im Grub-2 Auswahlmenü hängen bleibt. Diese Variable wird im Skript 00_header ausgewertet. |
GRUB_TIMEOUT= | Zahl | Ein Zahlenwert gibt die Zeit in Sekunden an, wie lange das Auswahlmenü angezeigt wird, bevor der Standard-Eintrag geladen wird. Bei 0 wird direkt der unter GRUB_DEFAULT eingestellte Eintrag geladen, ohne dass das Auswahlmenü angezeigt wird, bei -1 wird der Zähler abgeschaltet und man muss den zu ladenden Eintrag immer von Hand wählen. Wurde GRUB_HIDDEN_TIMEOUT aktiviert, ist diese Funktion solange wirkungslos, bis GRUB_HIDDEN_TIMEOUT mit der Umschalt-Taste deaktiviert wird. |
GRUB_TIMEOUT_STYLE= | menu | Ohne Eintrag oder mit dem Eintrag menu wird das GRUB_2-Menü auch dann angezeigt, wenn kein zweites Betriebssystem (Windows / Linux) gefunden wurde. Das System wird mit der Auswahl (
↓ /
↑ +
⏎ oder nach Ablauf der mit GRUB_TIMEOUT eingestelltem Zeit gestartet. Hinweis:Werden weitere Betriebssysteme auf dem Rechner erkannt, werden die Option |
hidden | Mit dem Eintrag hidden wird kein GRUB_2-Menü angezeigt und die mit GRUB_TIMEOUT eingestellte Zeit gewartet, bis das System nach der voreingestellten Zeit startet. Durch kurzzeitiges Drücken der
Esc innerhalb dieses Zeitfensters kann das Grub-Menü angezeigt und eine Auswahl vorgenommen werden. | |
countdown | Mit dem Eintrag countdown wird kein GRUB_2-Menü angezeigt und die mit GRUB_TIMEOUT eingestellte Zeit sichtbar heruntergezählt. Danach startet das System mit dem mit GRUB_DEFAULT voreingestellten Eintrag. Durch kurzzeitiges Drücken der
Esc innerhalb dieses Zeitfensters kann das Herunterzählen abgebrochen und eine Auswahl vorgenommen werden. | |
GRUB_DISTRIBUTOR | *** | Generiert Hinweise zur aktuellen Distribution. Bei einer Installationen im BIOS-Modus sollte man hier keine Korrekturen vornehmen. |
Bei einer Installationen im EFI-Modus wird hier die aktuelle Distribution ausgelesen. Man kann hier einen selektiven Eintrag für das EFI-Menü erstellen. | ||
GRUB_CMDLINE_LINUX_DEFAULT= | Text | siehe die Hinweise bei Variable für Kernelzeilen |
GRUB_CMDLINE_LINUX | Text | siehe die Hinweise bei Variable für Kernelzeilen |
#GRUB_TERMINAL= | console | Entfernt man die Raute # , so wird der grafische Modus wie unter GRUB 2/Aussehen beschrieben komplett abgeschaltet (reiner Konsolenmodus). Ein Sonderfall stellt hierbei die Eingabe bzw. Ausgabe über ein serielles Gerät (VT100-Terminal, Modem) dar. Siehe dazu die Hinweise unter Eingabe/Ausgabe auf ein serielles Gerät. Achtung!Wurde ein RAID1-Verbund als Boot-Gerät konfiguriert, so sollte |
#GRUB_GFXMODE= | 640x400 | Nach dem Entfernen der Raute # kann man mit dieser Einstellung die Auflösung im Grub-Menü einstellen. Standard-Vorgabe ist 640x480 Pixel (große Schrift). Weitere Hinweise zur Ermittlung der möglichen Auflösung findet man unter Auflösung ermitteln. |
GRUB_GFXPAYLOAD_LINUX= | keep | Diese Einstellung bewirkt für die im Verzeichnis /boot vorhandenen Kerneleinträge, dass beim Start die mit GRUB_GFXMODE= eingestellte Schriftgröße für die folgende Monitor-Ausgabe beibehalten wird. |
1280x1024 | Ein Eintrag mit Werten anstelle keep bei GRUB_GFXMODE stellt die Schriftgröße auf diese Werte ein. Die für den eigenen Monitor richtigen Werte erhält man mit Auflösung ermitteln. | |
text | Falls es mit den beiden obigen Vorgaben Probleme beim Start gibt (schwarzer bzw. verzerrter Bildschirm), dann sollte man diese Vorgabe nehmen. Damit wird auf die Werte aus einer Liste mit problematischen Grafikkarten ("blacklist") zugegriffen. | |
Hinweis:Diese Einstellungen werden in der Regel von Plymouth überschrieben! Entsprechende Einstellungen werden dort erläutert. | ||
#GRUB_DISABLE_LINUX_UUID= | true | Normalerweise übergibt GRUB 2 die Root-Partition mittels UUID an den zu startenden Linux-Kernel. Durch Entfernen der Raute # kann man GRUB 2 dazu veranlassen, dies per Device-Nummerierung (/dev/sdXX) zu machen. |
#GRUB_DISABLE_RECOVERY= | true | Nach Entfernen der Raute # und setzen auf true werden alle Recovery-Kernel-Einträge im Auswahlmenü deaktiviert. |
GRUB_DISABLE_OS_PROBER= | true | Wird diese Variable mit true nachgetragen, wird eine erneute Überprüfung auf andere Betriebssysteme auf dem PC bei einem update-grub unterdrückt. Es werden damit in das Grub-Menü nur die im Verzeichnis /boot enthaltenen Kernel-Images sowie eigene Skripte entsprechend der Nummerierung erfasst. |
GRUB_OS_PROBER_SKIP_LIST= | "UUID@Partition" | Wird diese Variable mit z.B. "BAEE3575EE352B51@/dev/sda2" (bestehend aus UUID "@" "Partition") nachgetragen, wird diese Partition nicht in das Grubmenü übernommen. Weitere Partitionen können mit einem Leerzeichen getrennt in gleicher Weise benannt werden. |
Hinweis:Dieses wird dann angewendet, wenn z.B. neben dem regulären Windows ein | ||
GRUB_DISABLE_SUBMENU= | y | Wird diese Variable mit y (für yes ) nachgetragen, wird auf die Erstellung eines separaten Blockes für den zweiten und weitere Kernel-Images verzichtet und es werden alle Kernel und die Varianten (Normal , Recovery sowie Init-Mode ) direkt im Menü angezeigt. |
GRUB_INIT_TUNE= | "480 440 1 " | Hiermit wird ein Ton ausgegeben, sobald das Grub-Menü zur Eingabe bereit steht - auch wenn dieses durch GRUB_HIDDEN_TIMEOUT nicht angezeigt wird. Die dritte Zahl (im Beispiel die 1 ) beeinflusst die Dauer. Alle durch Leerzeichen getrennten Wertegruppen müssen insgesamt von "" eingefasst sein. |
GRUB_THEME= | "/PFAD/ZUR/KONFIGURATIONSDATEI " | Stellt den Pfad zu einem GRUB Thema ein. Siehe dazu GRUB 2/Aussehen - erweiterte Konfiguration. |
GRUB_ENABLE_CRYPTODISK= | y | Wird diese Variable auf 'y' gesetzt, suchen 'grub-mkconfig' und 'grub-install' nach verschlüsselten Laufwerken und erzeugen zusätzliche Befehle um auf die verschlüsselten Laufwerke während des Systemstarts zugreifen zu können. Somit ist es möglich, auch das Boot-Verzeichnis zu verschlüsseln. Achtung!In diesem Fall ist kein unbeaufsichtigter Start mehr möglich, weil Grub auf die Eingabe der Passphrase zum Öffnen des verschlüsselten Laufwerks wartet, bevor das Menü angezeigt wird. Beim Start des verschlüsselten Systems wird man ein weiteres Mal zum Eingeben der Passphrase aufgefordert. |
Für die Ausgabe des GRUB-Menüs auf ein serielles Ein- bzw. Ausgabegerät (VT100-Terminal, Modem) müssen die nachfolgenden Variablen wie folgt gesetzt werden (fehlende Variablen sind entsprechend nachzutragen, auf die Optionen als solche wird hier nicht eingegangen!):
Terminal Variable in der /etc/default/grub | ||
Variable | Wert | Bedeutung |
GRUB_TERMINAL= | serial | Ersetzt man console mit serial , so wird die Ausgabe auf den seriellen Port umgeleitet - dieser muss von der Hardware her vorhanden, aber nicht notwendigerweise auch belegt sein. |
"console serial" | Setzt man console zusammen mit serial , eingefasst in ", so erfolgt die Ausgabe auf beide Anzeigegeräte. Auch die Bedienbarkeit ist von beiden Geräten alternativ möglich. | |
GRUB_SERIAL_COMMAND= | serial --OPTIONEN | Optionale Einträge zur seriellen Schnittstelle werden hier nach dem =serial jeweils hinter einem Doppel-Minus eingetragen (z.B.: --unit= , --port= , --speed= , --word= , --parity= , --stop= , --device= ). Zum Beispiel |
GRUB_CMDLINE_LINUX= | TEXT | Hier werden ggf. obige Optionen beim Eintrag der Kernelzeile um die relevanten Daten ergänzt (z.B.: serial=ttyS0 console=ttyS0,9600n8 ). |
Die nachfolgenden Variablen sind für die Übergabe von Kernel-Bootoptionen reserviert und werden wie nachfolgend ausgewiesen bei den Images aus dem Verzeichnis /boot angewendet:
Kernel Variable in der /etc/default/grub | ||
Bezeichnung der Variable | Verwendung Bootoption | |
Login-Modus | Recovery-Modus | |
GRUB_CMDLINE_LINUX= | Ja | Ja |
GRUB_CMDLINE_LINUX_EXTRA= | Ja | Nein |
GRUB_CMDLINE_LINUX_DEFAULT= | Ja | Nein |
Diese Variablen können auch bei der Erstellung der eigenen Skripte eingesetzt werden.
Will man weitere Variablen z.B. auch für die eigenen Skripte übergeben, so ergänzt man je die
eigene Variable in der /etc/default/grub | ||
Setzen | Variable | Wert |
export | GRUB_MEINE_VARIABLE= | "meine Information" |
Die Menü-Einträge zur Auswahl des zu startenden Betriebssystems und auch das genaue grafische Erscheinungsbild werden bei GRUB 2 über die Skripte im Verzeichnis /etc/grub.d konfiguriert. Standardmäßig sind dort u.a. die folgenden Skripte enthalten:
00_header 05_debian_theme 10_linux 20_linux_xen 20_memtest86+ 30_os-prober 40_custom 41_custom
Für die Installation mit Wubi steht dieses spezielle Skript zusätzlich zur Verfügung:
10_lupin
welches anstelle von 10_linux zum Booten der Datei root.disk benutzt wird.
Für die Installation mit einem EFI Bootmanagement steht dieses spezielle Skript zusätzlich zur Verfügung:
30_uefi-firmware
welches den direkten Zugriff aus dem Grubmenü auf die Firmware (BIOS) ermöglicht.
Daneben können aber auch eigene Skripte erstellt werden. Dies ist auch grundsätzlich der Bearbeitung bzw. Veränderung eines vorhandenen Standard-Eintrages vorzuziehen. Dazu siehe die ausführlichen Beschreibungen unter GRUB 2/Skripte.
Wie man sieht, werden die Skriptnamen von einer Nummer (XX_) angeführt. Die Skripte werden aufsteigend dieser Nummer entsprechend abgearbeitet. Haben zwei Skripte die gleiche Nummer, so bestimmt deren weitere alphanumerische Reihenfolge die Abarbeitung.
Ein Skript mit der Bezeichnung 10_eigenes (Skript) wird vor 10_linux zur Abarbeitung aufgerufen. Auf diese Weise lässt sich die Reihenfolge der Menü-Einträge beeinflussen.
Ein Klassiker dabei ist es, im Verzeichnis /etc/grub.d/ die Datei 30_os-prober in 09_os-prober umzubenennen, um so die Windowseinträge vor den Linuxeinträgen anzuordnen.
Die nachfolgenden Beschreibungen der /boot/grub/grub.cfg dienen ausschließlich dazu, die Ergebnisse nach einem Eingriff in die Datei /etc/default/grub oder durch den Einsatz von eigenen Skripten zu überprüfen. Eine Bearbeitung dieser Datei ist zwar grundsätzlich möglich, sollte aber (nur zum Testen) der letzte Schritt sein.
Es wird der Inhalt der Datei /boot/grub/grub.cfg beschrieben, wie dieser sich nach einer nicht nachbehandelten Installation darstellt. Dabei kann der Pfad zu dieser Datei in Abhängigkeit von der Partitionierung (getrennte Bootpartition) abweichen. Unterschiede bei den Informationen sind immer dann zu erwarten, wenn man die Ergebnisse der Skripte von 10_linux bzw. 30_os-prober sich ansieht. Insbesondere sind die beispielhaften Eintragungen (hd0,3)
bzw. der UUID nur als solche anzusehen und werden im jeweiligen System abweichen.
Jeder Eintrag wird von einer ###BEGIN-
bzw. ###END
-Sequenz eingefasst, aus der man auch das Skript ablesen kann, welches für den Inhalt dieses Teil-Abschnittes abgearbeitet wurde.
Ohne nachfolgend näher auf die detaillierten Inhalte einzugehen, werden hier die erforderlichen, allgemeinen Befehle und Funktionen bereitgestellt, die das GRUB-2-Basisprogramm benötigt. Dabei sind einige Befehle fest im GRUB-2-Basisprogramm verankert, die als ladbare Images (*.img) im Verzeichnis /boot/grub/ vorliegen, andere hingegen sind in Form von <Befehl>.mod
dort abgelegt.
Das Skript /etc/grub.d/00_header liefert in Abhängigkeit von den
Einstellungen in der /etc/default/grub | ||
Variable | Wert | |
GRUB_DEFAULT= | 0 | |
GRUB_TIMEOUT= | 7 | |
GRUB_GFXMODE= | 800x600x16 |
folgendes Ergebnis:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | ### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then load_env fi set default="0" if [ ${prev_saved_entry} ]; then set saved_entry=${prev_saved_entry} save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=true fi function savedefault { if [ -z ${boot_once} ]; then saved_entry=${chosen} save_env saved_entry fi } function recordfail { set recordfail=1 if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi } insmod ext2 set root='(hd0,3)' search --no-floppy --fs-uuid --set ae875d31-cc84-4349-95d7-01a82ad76d61 if loadfont /usr/share/grub/unicode.pf2 ; then set gfxmode=800x600x16 insmod gfxterm insmod vbe if terminal_output gfxterm ; then true ; else # For backward compatibility with versions of terminal.mod that don't # understand terminal_output terminal gfxterm fi fi insmod ext2 set root='(hd0,3)' search --no-floppy --fs-uuid --set ae875d31-cc84-4349-95d7-01a82ad76d61 set locale_dir=($root)/boot/grub/locale set lang=de insmod gettext if [ ${recordfail} = 1 ]; then set timeout=-1 else set timeout=7 fi ### END /etc/grub.d/00_header ### |
Bei einem Btrfs-Dateisystem und integriertem /boot-Verzeichnis ändern sich die obige Zeile 28 bzw. Zeile 41 in einer Standardinstallation wie folgt
if loadfont /usr/share/grub/unicode.pf2 ; then --> if loadfont /@/usr/share/grub/unicode.pf2 ; then ... set locale_dir=($root)/boot/grub/locale --> set locale_dir=($root)/@/boot/grub/locale
Das Skript /etc/grub.d/05_debian_theme liefert ohne Nachbearbeitung folgendes Ergebnis, bei dem die Zeilen der Auswahl vom Bootloader mit weißer Schrift auf schwarzen Hintergrund zur Anzeige gebracht werden, der hervorgehobene Eintrag dagegen mit schwarzer Schrift auf hellgrauem Hintergrund:
1 2 3 4 | ### BEGIN /etc/grub.d/05_debian_theme ### set menu_color_normal=white/black set menu_color_highlight=black/light-gray ### END /etc/grub.d/05_debian_theme ### |
Man kann das Grub-Menü anpassen, entsprechende Informationen und Einstellungen sind unter GRUB 2/Aussehen beschrieben. Danach sieht dieser Abschnitt dann z.B. wie folgt aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 | ### BEGIN /etc/grub.d/05_debian_theme ### insmod ext2 set root='(hd0,3)' search --no-floppy --fs-uuid --set ae875d31-cc84-4349-95d7-01a82ad76d61 insmod png if background_image /boot/grub/grub_menu.png ; then set color_normal=black/black set color_highlight=white/light-gray else set menu_color_normal=white/black set menu_color_highlight=black/white fi ### END /etc/grub.d/05_debian_theme ### |
Bei einem Btrfs-Dateisystem und integriertem /boot-Verzeichnis ändert sich die obige Zeile in einer Standardinstallation wie folgt
if background_image /boot/grub/grub_menu.png ; then --> if background_image /@/boot/grub/grub_menu.png ; then
Das Skript /etc/grub.d/10_linux liefert in Abhängigkeit von den im Verzeichnis /boot vorhandenen Kernel-Images und den
Einstellungen in der /etc/default/grub | ||
Variable | Wert | |
GRUB_SAVEDEFAULT= | true | |
GRUB_CMDLINE_LINUX_DEFAULT= | "quiet splash" | |
GRUB_DISABLE_LINUX_RECOVERY= | false |
folgendes Ergebnis:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | menuentry "Ubuntu, with Linux 2.6.31-17-generic" { recordfail savedefault insmod ext2 set root='(hd0,3)' search --no-floppy --fs-uuid --set=root ae875d31-cc84-4349-95d7-01a82ad76d61 linux /boot/vmlinuz-2.6.31-17-generic root=UUID=ae875d31-cc84-4349-95d7-01a82ad76d61 ro quiet splash initrd /boot/initrd.img-2.6.31-17-generic } menuentry "Ubuntu, with Linux 2.6.31-17-generic (recovery mode)" { recordfail savedefault insmod ext2 set root='(hd0,3)' search --no-floppy --fs-uuid --set=root ae875d31-cc84-4349-95d7-01a82ad76d61 echo Loading Linux 2.6.31-17-generic ... linux /boot/vmlinuz-2.6.31-17-generic root=UUID=ae875d31-cc84-4349-95d7-01a82ad76d61 ro single echo Loading initial ramdisk ... initrd /boot/initrd.img-2.6.31-17-generic |
Setzt man die Variable GRUB_DISABLE_LINUX_RECOVERY=
auf true
, wird der zweite Eintrag für den Recovery Modus unterbunden.
Es wird nur der neueste Kernel (also der mit der höchsten Versionskennung) im Grub-Menü direkt angezeigt. Alle weiteren Linuxkernel (also die mit niedrigerer Versionskennung im gleichen System) werden in einem Untermenü zusammengefasst. Dieses wird im Grub-Menü wie folgt angezeigt:
*Ubuntu | ||
Erweiterte Optionen für Ubuntu | ||
Windows Boot Manager (auf /dev/sda1) | ||
Die aktuelle Auswahl wird mit einem Sternchen gekennzeichnet. Wenn man mit den Pfeiltasten auf die im Beispiel zweite Position im Grub-Menü wechselt und diesen Menüpunkt mit der ⏎ -Taste aufruft, werden (nun nur) die innerhalb dieses Untermenüs angelegten Kernel zur Auswahl angeboten. In der Datei /boot/grub/grub.cfg finden sich dazu nach dem ersten Kernelsatz folgende Zeile:
submenu " Erweiterte Optionen für Ubuntu" { .... andere Menüeinträge ... }
Wichtig sind hier nun die Zeile 1 mit der geschweiften Klammer sowie die Zeile 3, die diese Funktion mit der relevanten geschweiften Klammer abschliesst. Die anderen Menüeinträge liegen, in der oben beschriebenen Aufbereitung, jeweils vollständig dazwischen. Ins Hauptmenü zurück gelangt man durch Betätigen von Esc .
Der Wiederherstellungsmodus (Recovery Modus) ist per Default auf eine eingeschränkte, read-only Version voreingestellt, in der man zwar relevante Festplattentest o.ä. ausführen kann, jedoch werden alle Schreibzugriffe auf die Datenträger unterbunden. Um in das normale Friendly Recovery zu gelangen, muss hier erst die Option remount
ausgewählt werden. Siehe auch die Beschreibung unter Recovery_Modus.
Änderung am Verhalten des Wiederherstellungsmodus ist dadurch möglich, dass man die jeweilige Zeile(n) wie folgt ändert:
1 2 | linux /boot/vmlinuz-2.6.31-17-generic root=UUID=ae875d31-cc84-4349-95d7-01a82ad76d61 ro recovery nomodeset linux /boot/vmlinuz-2.6.31-17-generic root=UUID=ae875d31-cc84-4349-95d7-01a82ad76d61 ro single |
Wird ein Btrfs-Dateisystem eingesetzt, ändern sich dadurch die Kernelzeilen für die /boot/grub/grub.cfg, abhängig ob es ein integriertes /boot-Verzeichnis gibt oder eine getrennte /boot-Partition.
1 2 3 4 5 | linux /boot/vmlinuz-2.6.31-17-generic root=UUID=ae875d31-cc84-4349-95d7-01a82ad76d61 ro quiet splash --> linux /@/boot/vmlinuz-3.0.0-12-generic root=UUID=ae875d31-cc84-4349-95d7-01a82ad76d61 ro rootflags=subvol=@ quiet splash initrd /boot/initrd.img-2.6.31-17-generic initrd /@/boot/initrd.img-3.0.0-12-generic |
Das Skript /etc/grub.d/20_linux_xen ist vergleichbar mit dem Skript /etc/10_linux, nur das es die Besonderheiten eines "XEN virtual servers" berücksichtigt und entsprechende Parameter abfragt und in die /boot/grub/grub.cfg einsetzt.
Das Skript /etc/grub.d/20_memtest86+ liefert folgende Einträge, die zum Testen des RAM-Speichers dienen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ### BEGIN /etc/grub.d/20_memtest86+ ### menuentry "Memory test (memtest86+)" { insmod ext2 set root='(hd0,3)' search --no-floppy --fs-uuid --set=root ae875d31-cc84-4349-95d7-01a82ad76d61 linux16 /boot/memtest86+.bin } menuentry "Memory test (memtest86+, serial console 115200)" { insmod ext2 set root='(hd0,3)' search --no-floppy --fs-uuid --set=root ae875d31-cc84-4349-95d7-01a82ad76d61 linux16 /boot/memtest86+.bin console=ttyS0,115200n8 } ### END /etc/grub.d/20_memtest86+ ### |
Bei einem Btrfs-Dateisystem und integriertem /boot-Verzeichnis ändern sich die obige Zeilen in einer Standardinstallation wie folgt.
linux16 /boot/memtest86+.bin --> linux16 /@/boot/memtest86+.bin ... linux16 /boot/memtest86+.bin console=ttyS0,115200n8 --> linux16 /@/boot/memtest86+.bin console=ttyS0,115200n8
Das Skript /etc/grub.d/30_os-prober überprüft alle angeschlossenen (und erkannten) Datenträger darauf hin, ob fertige Menü-Einträge, andere Kernel-Images oder Betriebssysteme vorhanden sind und liefert ohne Nachbearbeitung folgende beispielhafte Information:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ### BEGIN /etc/grub.d/30_os-prober ### menuentry "Windows NT/2000/XP (on /dev/sda1)" { savedefault insmod ntfs set root='(hd0,1)' search --no-floppy --fs-uuid --set=root 265585bd5150c55f drivemap -s (hd0) ${root} chainloader +1 } menuentry "Ubuntu, with Linux 2.6.32-12-generic-pae (on /dev/sda6)" { savedefault insmod ext2 set root='(hd0,6)' search --no-floppy --fs-uuid --set=root 843c4345-0c0a-4df6-8abe-8114b06393b2 linux /boot/vmlinuz-2.6.32-12-generic-pae root=UUID=843c4345-0c0a-4df6-8abe-8114b06393b2 ro quiet splash initrd /boot/initrd.img-2.6.32-12-generic-pae ### END /etc/grub.d/30_os-prober ### |
Dieser Vorgang kann je nach der Anzahl sowie Größe der Datenträger und der jeweils gefundenen Partitionen durchaus länger andauern. Um dieses ggf. abzukürzen, kann man diese Sequenz durch Hinzufügen der Variable GRUB_DISABLE_OS_PROBER=true
in der Datei /etc/default/grub unterbinden.
Die Ausgabe von 30_os-prober kann auch dazu genutzt werden, die für die eigenen Skripte erforderliche Syntax sowie z.B. um die relevanten Daten für (hd0,6)
bzw. UUID
abzufragen. Die ausgegebenen Sequenzen kann man als Kopie (Vorlage) aus der generierten grub.cfg zum Erstellen von Skripten als Referenz / Beispiel nutzen.
Mittels des Skriptes 30_os-prober und den folgenden
Einstellungen in der /etc/default/grub | ||
Variable | Wert | |
GRUB_DISABLE_OS_PROBER= | true | |
GRUB_HIDDEN_TIMEOUT= | 5 | |
GRUB_HIDDEN_TIMEOUT_QUIET= | false |
wird eine Countdown-Sequenz für die /boot/grub/grub.cfg erstellt:
1 2 3 4 5 6 7 | ### BEGIN /etc/grub.d/30_os-prober ### if [ ${timeout} != -1 ]; then if sleep --interruptible 5 ; then set timeout=0 fi fi ### END /etc/grub.d/30_os-prober ### |
Damit wird ein verdeckter Countdown mit der vorgegebenen Zeit eingerichtet. Diesen Countdown kann man mit der
⏎ - bzw.
Esc -Taste abbrechen und damit das Grub-Menü zur Anzeige bringen. Wenn man neben den Kerneleinträgen aus dem Verzeichnis /boot weitere Betriebssysteme einbinden will, so darf die oben beschriebene Funktion mittels GRUB_DISABLE_OS_PROBER=true
nur verwendet werden, wenn man gleichzeitig für diese anderen Betriebssysteme eigene Skripte erstellt und einbindet.
Ohne obige Sequenz in der einen oder anderen Variante kann man das Bootmenü nach der Aktivierung von GRUB_HIDDEN_TIMEOUT
nicht mehr sichtbar machen.
Entsprechend der
Einstellungen in der /etc/default/grub | ||
Variable | Wert | |
GRUB_TIMEOUT= | 10 |
wird danach für diesen ausgewählten Zeitraum das Grub-Menü angezeigt.
Das Skript /etc/grub.d/40_custom liefert ohne Nachbearbeitung folgende Information:
1 2 3 4 5 | ### BEGIN /etc/grub.d/40_custom ### # 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. ### END /etc/grub.d/40_custom ### |
Wobei die Übersetzung sinngemäß lautet:
# Diese Datei bietet einen einfachen Weg, eigene Menü-Einträge hinzuzufügen. # Füge die gewünschten Menü-Einträge einfach unterhalb dieses Kommentars ein. # Achte darauf, die Zeile oben mit 'exec tail' nicht zu verändern.
Das Skript /etc/grub.d/41_custom liefert ohne Nachbearbeitung folgende Information:
1 2 3 | if [ -f \$prefix/custom.cfg ]; then source \$prefix/custom.cfg; fi |
und kann zum Laden einer eigenen Konfigurationsdatei beliebigen Inhaltes benutzt werden, die unter
/boot/grub/
abgelegt wurde. Die Bezeichnung prefix
ist die relevante standardmäßige Umsetzung des jeweiligen Pfades zu dieser Datei und wird automatisch beim Booten gesetzt. Für ein System mit integriertem Verzeichnis auf:
(hd0,1)/boot/grub/
bzw. bei getrennter Bootpartition auf:
(hd0,5)/grub
Die jeweils zutreffende Partition wird dabei vom System selbstständig eingetragen.
Weitere Hinweise zur Erstellung eigener Skripte und den Möglichkeiten und Erfordernissen sind in den Beschreibungen unter GRUB 2/Skripte nachzulesen.
Die Festplatten werden im System (hardwaremäßig) in der Regel nach der Zuordnung zu den SATA- bzw. IDE-Ports eingeordnet und damit die Reihenfolge festgelegt. Die Auswahl bzw. Zuordnung im BIOS, von welcher dieser Festplatten als "erste" Festplatte gebootet wird, hat hierauf keinen Einfluss. Ein nicht belegter Port wird in der Auflistung ausgelassen.
Die Bezeichnung in GRUB 2 wird fortlaufend vergeben, d.h. bei fehlender Platte in einem der Hardware-Ports erhält die niedrigste die Zuordnung (hd0)
. Dieses Verhalten kann zu Problemen führen, wenn z.B. eine Platte vorübergehend aus dem System entfernt wird (z.B.: Datenkabel wird abgezogen) bzw. eine weitere Festplatte eingefügt wird. Die folgende Tabelle stellt Beispiele für die Zuordnung dar:
Portbelegung auf dem Motherboard und Zuordnung | |||
SATA 1 Primär | SATA 1 Sekundär | SATA 2 Primär | SATA 2 Sekundär |
/dev/sda = (hd0) | --- | /dev/sdb = (hd1) | --- |
/dev/sda = (hd0) | /dev/sdb = (hd1) | --- | /dev/sdc = (hd2) |
--- | --- | /dev/sda = (hd0) | --- |
GRUB 2 bezeichnet die Festplattenpartitionen mit (hdX,Y)
, dabei ist
X die lfd. Nummern der Festplatte
Y die lfd. Zählnummer der Partition
Die Zählung der Festplatten beginnt immer mit 0, die der Partitionen immer mit 1:
Zu beachten ist, dass die Nummerierung von logischen Laufwerken in einer erweiterten Partition immer bei 5 beginnt - unabhängig von der Anzahl der vorhandenen primären Partitionen und als welche die erweiterte Partition angeordnet wurde.
Die in der grub.cfg ausgewiesene Schreibweise (Zählung) der Partitionen kann je nach Grub-Version abweichen.
Festplatten-Bezeichnung und Zuordnung | ||
Partition | Linux | Grub |
1. Partition auf der X. Platte | /dev/sdX1 | (hdX,1) |
2. Partition auf der X. Platte | /dev/sdX2 | (hdX,2) |
... | ... | ... |
Y. Partition auf der 1. Platte | /dev/sdaY | (hd0,Y) |
Y. Partition auf der 2. Platte | /dev/sdbY | (hd1,Y) |
... | ... | ... |
Wird eine externe Festplatte angeschlossen, so erkennt das System im Terminal bei einem:
sudo fdisk -l
neben z.B: zwei internen Festplatten (/dev/sda und /dev/sdb) diese externe Festplatte als /dev/sdc. Will man hierauf GRUB 2 installieren, so muss als Ziel-Laufwerk im Terminal:
sudo grub-install /dev/sdc
angegeben werden. Nach dem Booten wird nun diese externe Festplatte in der GRUB 2 Konsole bei einem:
ls
zu (hd0) (hd0,1)
usw. je nach Anzahl der Partitionen und auch bei:
set
wird die Boot-Partition entsprechend mit (hd0,x)
angezeigt. Auch wenn im entsprechenden menuentry
als Ziel-Laufwerk z.B.: (hd2,x)
steht.
Beim Entfernen alter Kernel über die Paketverwaltung wird in der Regel ein Update von GRUB 2 durchgeführt, so dass die Einträge auch aus der /boot/grub/grub.cfg gelöscht werden.
Andere Betriebssysteme werden - sofern sie vom Computer gelöscht wurden - aus dem Menü entfernt, indem man nach dem Löschen der Systeme die GRUB-2-Konfiguration updatet.
Möchte man Einträge manuell aus dem GRUB-2-Menü löschen, so hat man mehrere Möglichkeiten:
Man entzieht dem Skript, das die unerwünschten Einträge erstellt, die Ausführbarkeit:
sudo chmod -x /etc/grub.d/20_memtest86+
Das Beispiel entzieht der Datei /etc/grub.d/20_memtest86+ die Ausführbarkeit.
Auskommentieren von Einträgen mittels #
im betreffenden Skript, das den oder die unerwünschten Eintragszeilen enthält.
Man löscht die Einträge aus dem betreffenden Skript.
Kernel-Recovery-Einträge kann man insgesamt durch den Eintrag GRUB_DISABLE_LINUX_RECOVERY=true
in der /etc/default/grub unterdrücken.
Zwei weitere manuelle Lösungsmöglichkeiten befinden sich ausführlich erläutert im Forum. Die erste Variante davon ist einfach und solide, erfordert aber stets manuelles Eingreifen bei Installation weiterer Systeme, die im Bootmenü erscheinen sollen. Die zweite Variante ist ein technischer Kniff ("Workaround"), die besonders elegant und einfach eine Menü-Blacklist erzeugt. Die Erkennung weiterer Systeme funktioniert also weiterhin automatisch, jedoch ohne die unerwünschten Blacklist-Einträge. Allerdings sorgt ein eventuelles Update der GRUB-2-Datei /usr/bin/os-prober dafür, dass wieder alle Einträge einschließlich der Blacklist automatisch erkannt werden. Dann muss man alle Schritte wiederholen, außer der Erstellung der Blacklist.
Nach jeder Änderung an der Datei /etc/default/grub oder an Skripten im Verzeichnis /etc/grub.d, muss die Grubkonfiguration - die in der Datei /boot/grub/grub.cfg gespeichert ist - aktualisiert werden. Andernfalls werden Änderungen beim nächsten Systemstart nicht sichtbar.
Um eine Information darüber zu erhalten, wie die Datei /boot/grub/grub.cfg mit den momentanen Einstellungen aussieht, gibt man im Terminal [1] ein:
sudo grub-mkconfig
(siehe auch GRUB 2/Terminalbefehle) und kann dann das Ergebnis überprüfen. Dieses wird noch nicht in die Grub-Konfiguration übernommen. Ist man mit dem Ergebnis zufrieden, so kann man mit
sudo update-grub
die Datei /boot/grub/grub.cfg neu schreiben lassen. Nähere Informationen siehe unter GRUB 2/Terminalbefehle
Die Datei /boot/grub/grubenv ist nur wirksam, wenn bei den Optionen von /etc/default/grub die Variable GRUB_DEFAULT=saved
gesetzt ist.
Hatte man Probleme beim Starten mit einem Menüeintrag oder kommt man wegen falscher Einstellungen in der Datei /etc/default/grub bei den Werten GRUB_DEFAULT
bzw. GRUB_TIMEOUT
oder anderer Fehler nicht ins Grub-Menü, so kann man die Datei /boot/grub/grubenv auch vom Desktop her in einem Terminal [1] neu konfigurieren.
Will man dagegen einem bestimmten Eintrag beim nächsten Start des Rechners verwenden, so kann man die Datei /boot/grub/grubenv vom Desktop her in einem Terminal [1] entsprechend einrichten, so dass dieser Eintrag einmalig aufgerufen wird. Der nächste Start erfolgt dann wieder mit dem vorher gespeicherten Eintrag.
Um zumindest einen einfachen Schutz vor einer Manipulation des GRUB-Menüs zur Laufzeit zu erhalten, kann man die Bearbeitung insgesamt (Superuser-Rechte) bzw. die Auswahl einzelner Menü-Einträge durch ein Passwort absichern.
Dieses kann von einen geübten Linux-Anwender ohne Probleme umgangen werden - jedoch braucht man dafür eine gewisse Zeit, in der man ungestört arbeiten kann und weitere Hilfsmittel. Wenn der Rechner in fremde Hände fällt, ist das nachfolgend Beschriebene ohnehin keine Barriere.
Dazu muss die Sequenz - wie unter Terminalbefehle beschrieben - im Terminal [1] mit dem Befehl:
grub-mkpasswd-pbkdf2 [Optionen]
erstellt und an geeigneter Stelle für die Datei /boot/grub/grub.cfg aufbereitet werden. Nachfolgend wird nur der grundsätzliche Aufbau aufgezeigt, der für das generelle Sperren des Grub-Menüs insgesamt bzw. von Menü-Einträgen im Einzelnen erforderlich ist:
1 2 3 4 5 | export superusers set superusers="BENUTZERNAME-1" password_pbkdf2 <BENUTZERNAME-1> grub.pbkdf2.sha512.10000.<salted.passwd> password_pbkdf2 <BENUTZERNAME-2> grub.pbkdf2.sha512.10000.<salted.passwd> password <BENUTZERNAME-3> MeinPasswort |
Die Zeilen eins (1) bis drei (3) sind obligatorisch, weitere Zeilen (ab vier (4) alternativ) und bedeuten:
Absicherung des Grub-Menü | ||
Zeile | Befehl | Wertvorgabe/Bedeutung |
Zeile 1 | export superusers | Diese Variable für alle Bereich deklarieren - dieses ist zwingend erforderlich, damit z.B. die Funktion Untermenü richtig ausgewertet wird. |
Zeile 2 | set superusers= | Auflistung der Benutzernamen der Superuser, jeder getrennt durch ein Leerzeichen, insgesamt eingefasst durch Hochkommas. Nur diese Benutzer-Namen erhalten Superuser-Rechte. |
Zeile 3 | password_pbkdf2 | Benutzername jeweils getrennt mit einem Leerzeichen, gefolgt von der generierten Schlüssel-Information |
Zeile 4 | password_pbkdf2 | Für jeden (weiteren) Benutzernamen eine Zeile mit den jeweils generierten Schlüssel-Informationen |
Zeile 5 | password | Für jeden (weiteren) Benutzernamen eine Zeile mit den jeweils im Klartext abgelegten Passwort. Achtung!Nicht empfehlenswert, da sehr unsicher! |
Es bietet sich hierfür die Datei /etc/grub.d/40_custom an, in die man obige Einträge direkt einbringt.
Es ist aber auch eine Trennung dieser Daten von der Datei /boot/grub/grub.cfg möglich. Dazu erstellt man für obige Einträge die Datei pbkdf2.lst und legt diese im Verzeichnis /boot/ ab. Aufgerufen wird das dann beim Booten mittels:
1 2 3 | if [ -f /boot/pbkdf2.lst ]; then source /boot/pbkdf2.lst fi |
welches als Eintrag in der /etc/grub.d/40_custom oder in einem eigenen Skript eingebracht wird.
Die Bezeichnung der Datei bzw. auch das Verzeichnis können frei gewählt werden, müssen aber vom Bootloader erreichbar sein. Dann muss auch anstelle von /boot
==> \$root/Pfad_zur_Datei
im Skript verwendet werden!
Bis Precise sind Menü-Einträge grundsätzlich von allen Benutzern ausführbar, auch nicht authentifizierten Benutzern. Das setzen der Benutzer und Passwörter verhindert folglich nur die Manipulation der Bootparameter. Um einen einzelnen Menü-Eintrag von einer allgemeinen Auswahl auszuschließen, muss dieser (noch manuell) nachbearbeitet werden, damit eine Überprüfung stattfindet. Dazu muss eine vorhandene Titel-Zeile der /boot/grub/grub.cfg wie folgt erweitert werden:
Beispiel zugänglich nur für Superuser
1 | menuentry 'Ubuntu 12.04 Precise Pangolin' --users '' { |
Beispiel
zugänglich für Superuser, immer möglich
eingetragene(r) Benutzername(n, getrennt durch Leerzeichen)
1 | menuentry 'Ubuntu 12.04 Precise Pangolin' --users 'BENUTZERNAME' { |
Da dieses aber in den Standard-Einträgen nur bis zum nächsten Kernel-Update Bestand hat, sollte man das nur bei eigenen Skripten anwenden bzw. die Einträge für den Recovery Modus deaktivieren (siehe die Hinweise zur Variablen GRUB_DISABLE_LINUX_RECOVERY=true), damit wird zumindest allen schnellen Manipulationen die Basis entzogen.
War der Superuser einmal angemeldet, so ist auch für Andere, die danach Zugriff auf den Rechner haben, jegliche Manipulation möglich!
Ab Quantal sperrt GRUB 2 beim Setzen eines Passworts grundsätzlich alle Einträge und fragt das Superuserpasswort bei jedem Boot ab. Für alle Booteinträge kann dieses Verhalten in /etc/grub.d/10_linux geändert werden, indem die menuentrys --unresticted
oder --user BENUTZERNAME
hinzugefügt werden. Dabei ermöglicht --unresticted
den Boot ohne Passwortabfrage im GRUB, während --user BENUTZERNAME
dem entsprechenden Benutzer das Booten des Eintrags ermöglicht. Zu beachten ist, dass diese Änderungen überschrieben werden, wenn eine Aktualisierung des Pakets für GRUB 2 aufgespielt wird. Die entsprechende Zeile sieht danach wie folgt aus:
1 | echo "menuentry '$(echo "$title" | grub_quote)' --unrestricted ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/" |
oder
1 | echo "menuentry '$(echo "$title" | grub_quote)' --users 'BENUTZERNAME' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/" |
Sollen nur bestimmte Einträge freigeschaltet werden, kann der entsprechende Eintrag in der /boot/grub/grub.cfg geändert werden. Diese Änderung muss jedoch nach jedem Lauf von update-grub
, beispielsweise bei einer Aktualisierung des Linux-Kernel-Pakets wiederholt werden.
1 | menuentry 'Ubuntu, mit Linux 3.5.0-17-generic' --unrestricted { |
1 | menuentry 'Ubuntu, mit Linux 3.5.0-17-generic' --users 'BENUTZERNAME' { |
Password Protection Passwortschutz für GRUB 2
Grub 2 (Title) Tweaks - diverse manuelle GRUB-Anpassungen
GRUB Customizer - grafisches Werkzeug zum Bearbeiten der Bootmanager-Konfiguration
Diese Revision wurde am 7. März 2017 16:03 von UlfZibis erstellt.