GRUB2 | |||||
Leider hat sich mit der Einführung von GRUB2 die Bedienung gegenüber seinem Vorgänger GRUB (wurde mit Einführung von GRUB2 in GRUB legacy umbenannt) grundlegend geändert. Die zentrale Konfigurations-Datei von GRUB namens /boot/grub/menu.lst wurde durch /boot/grub/grub.cfg ersetzt. Öffnet man diese Datei zum editieren, sticht einem sofort der Eintrag:
#
ins Auge, da diese Datei von update-grub automatisch erstellt wird. In dem Sinne hat das Skript update-grub die gleiche Tätigkeit wie früher. Es sucht nach Betriebssystemen und Kerneln und erstellt automatisch die erforderlichen Menüeinträge für besagte Systeme. Beim alten GRUB wurde so eine menu.lst automatisch erstellt und bei GRUB2 ist es eben besagte grub.cfg. Der grundlegene Unterschied ist allerdings, daß man eigene Anpassungen des Bootloaders beim alten GRUB noch direkt in der Datei menu.lst vornahm, während man bei GRUB2 die Konfigurationsdatei /etc/default/grub für grundlegende Bootloader-Einstellungen editiert und Änderungen in der Menüstruktur mittels Shell-Skripte im Verzeichnis /etc/grub.d vornimmt. Um geänderte Einstellungen zu übernehmen, muß mittels update-grub eine neue grub.cfg geschrieben werden. Daher ist es zwingend erforderlich nach jeder Änderung der Konfiguration den Befehl Die Datei /etc/default/grub
In /etc/default/grub kann man die Standardvariablen definieren für das Verhalten oder das Aussehen von GRUB2. Zum Beispiel wählt Skripte in /etc/grub.d
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 die folgenden Skripte enthalten: Ein eigenes GRUB2-Menü
Wie bereits erwähnt, arbeitet GRUB2 mit einer automatischen Generierung der Menüeinträge, was für das eigene System über das Shell-Skript 10_linux erreicht wird. Schaltet man die Automatik nicht vorher ab, werden sämtliche selbsterstellten Einträge nur zusätzlich zum Bootmenü hinzugefügt. Also ist die Vorgehensweise um sein eigenes Bootloader-Menü zu erstellen ein kleiner Umweg: Zuerst sollte man die Automatik abschalten, in dem man besagtes Skript nicht ausführbar macht.
Wie man sieht, können benötigte Module mittels insmod durch GRUB2 geladen werden um z.B. überhaupt auf eine Festplatte mit einem fremden Format zugreifen zu können. Warum bei diesem Beispiel (das ich im Internet gefunden habe) die umständliche Lösung mit cat << EOF in das Skript eingebaut wurde, entzieht sich meiner Logik. Sehen wir uns etwas simplere Menüeinträge an, z.B. für ein Debian wheezy System:
Wer noch eine menu.lst vom alten Bootloader GRUB im Kopf hat, wird ganz schnell die frappierende Ähnlichkeit mit den ehemaligen Einträgen entdecken. In dem Sinne hat sich eigentlich bei den Menüeinträgen nicht viel geändert. Lediglich die Handhabung des neuen Bootloaders mit den Shell-Skripten und anschließendem update-grub ist grundlegend anders und Bedarf einer Umgewöhnung. Noch drei weitere Beispiele, einmal für einen Debian lenny Eintrag:
Für einen Debian squeeze Eintrag:
Und zum Abschluß für einen WinXP-Eintrag:
Und nicht vergessen: Die Skripte ausführbar machen und anschließend update-grub ausführen! Ab neueren Versionen von grub2, z.B. 2.02~beta2 unter Debian jessie fügt die Automatik zwei Einträge für das Eigene Linux-System hinzu, einen zum normalen Abstarten des Systems und ein Submenü-Eintrag. Möchte man letzteren nicht haben, hilft unter /etc/default/grub der Eintrag Auch ist es möglich eine eigene default Schriftart für das Menü einzustellen. Dummerweise hat grub2 ein eigenes Schriften-Format, daher muß man mit dem Befehl Hat man eine geeignete Schrift gefunden, kopiert man sie in das Verzeichnis /boot/grub/fonts/ und bindet sie mittels folgender Zeile in der /etc/default/grub ein:
Ab Debian jessie wird anstatt SysVinit systemd als zentrales Systemverwaltungs-Managment verwendet. systemd soll dabei den Vorteil bieten, daß es alle Dienste möglichst gleichzeitig startet um die vorhandenen Rechner-Ressourcen maximal auszunutzen, was zu einem beschleunigten Start des Linux-Systems führt. Ab systemd sind standardmäßig die Bootmeldungen beim Start deaktivert. Möchte man das nicht, weil man schon gerne sehen will, ob beim booten nicht irgendein Fehler vorliegt, muß man dem Kernel den Boot-Parameter systemd.show_status=1 beim booten mitgeben. Dazu editiert man entweder die /etc/default/grub und ergänzt folgenden Parameter grub-reboot Hat man ein Dualboot-System mit Linux und Windows und befindet man sich jetzt nicht zu Hause um das zu startende Betriebssystem im Grub-Menü auszuwählen, kann man sich des Befehls grub-reboot bedienen um zwischen den Systemen zu wechseln. Dabei sollte das Default-System Linux sein, da man unter Windows gewöhnlich nicht auf mit ext-Dateisystem formatierte Linux-Partitionen zugreifen kann. Ein entfernter Zugriff auf Grub mit z.B. ssh ist nicht möglich, da ja noch kein Betriebssystem geladen ist, welches die Netzwerkkarte oder die ssh Funktionalität zur Verfügung stellt. Daher bietet grub-reboot die einzige Möglichkeit zwischen den Systemen aus der Ferne hin und her zu wechseln, da es genau für diesen Zweck entwickelt wurde. Mittels grub-reboot kann man das System anweisen beim nächsten Neustart ein anderes System zu starten. Ein erneuter Neustart des anderen Systems lädt dann automatisch wieder das Default-System. Zuvor müssen wir die korrekte Nummer unseres Grub-Menü-Eintrags herausfinden. Dabei hilft folgender Befehl: # awk -F\'\|\" '/(submenu|menuentry) / { printf "%s\t%s\n", $1, $2}' /boot/grub/grub.cfg Er zeigt das momentan aktive Grub-Menü an, das z.B. so aussehen könnte: menuentry Debian GNU/Linux submenu Advanced options for Debian GNU/Linux menuentry Debian GNU/Linux, with Linux 6.6.13-amd64 menuentry Debian GNU/Linux, with Linux 6.6.13-amd64 (recovery mode) menuentry Debian GNU/Linux, with Linux 6.6.9-amd64 menuentry Debian GNU/Linux, with Linux 6.6.9-amd64 (recovery mode) menuentry Windows 10 menuentry Memory test (memtest86+x64.bin, serial console) Wie man sieht enthält dieses Menü Submenüs. Dabei wäre dann die Zählung wie folgt (Der submenu Eintrag mit der Nr. 1 kann natürlich nicht zum starten verwendet werden da er lediglich die submenu-Einträge einleitet!) 0 menuentry Debian GNU/Linux 1 submenu Advanced options for Debian GNU/Linux 1>0 menuentry Debian GNU/Linux, with Linux 6.6.13-amd64 1>1 menuentry Debian GNU/Linux, with Linux 6.6.13-amd64 (recovery mode) 1>2 menuentry Debian GNU/Linux, with Linux 6.6.9-amd64 1>3 menuentry Debian GNU/Linux, with Linux 6.6.9-amd64 (recovery mode) 2 menuentry Windows 10 3 menuentry Memory test (memtest86+x64.bin, serial console) Möchte man nun den Kernel 6.6.9 booten gibt man folgende Zeile ein: # grub-reboot '1>2' Überprüfen kann man die Einstellung mittels: # grub-editenv - list next_entry=1>2 Das ist schon alles. Es müssen keine weiteren Einstellungen vorgenommen werden und nach dem nächsten Neustart wird der Linux-Eintrag mit Kernel 6.6.9 ausgewählt sein. Nach erneutem Neustart des Systems sieht der letzte Befehl dann so aus:
# grub-editenv - list next_entry= Wie man sieht ist der Eintrag leer und damit startet wieder das alte Default-System. |
|||||
Zurück zur Auswahl |