Aufgrund der kürzlichen Änderungen in den Prüfungszielen der LFCS-Zertifizierung, die ab dem 2. Februar 2016 wirksam sind, fügen wir die erforderlichen Themen zur hier veröffentlichten LFCS-Serie hinzu. Um sich auf diese Prüfung vorzubereiten, wird dringend empfohlen, auch die LFCE-Serie zu verfolgen.

In diesem Artikel stellen wir Ihnen GRUB vor und erklären, warum ein Bootloader notwendig ist und wie er die Vielseitigkeit des Systems erhöht.
Der Linux-Bootvorgang vom Zeitpunkt des Drückens der Ein-/Aus-Taste Ihres Computers bis zum Erhalt eines voll funktionsfähigen Systems folgt dieser Sequenz auf hoher Ebene:
- 1. Ein Prozess namens POST (Power-On Self Test) führt eine Gesamtprüfung der Hardwarekomponenten Ihres Computers durch.
- 2. Wenn POST abgeschlossen ist, übergibt es die Steuerung an den Bootloader, der wiederum den Linux-Kernel im Speicher lädt (zusammen mit initramfs) und ihn ausführt. Der meistverwendete Bootloader in Linux ist der GRand Unified Bootloader oder kurz GRUB.
- 3. Der Kernel überprüft und greift auf die Hardware zu und führt dann den Initialprozess aus (meistens bekannt unter seinem generischen Namen „init„), der wiederum den Systemstart durch das Starten von Diensten abschließt.
In Teil 7 dieser Serie („SysVinit, Upstart und Systemd„) haben wir die von modernen Linux-Distributionen verwendeten Dienstverwaltungssysteme und -tools vorgestellt. Sie sollten diesen Artikel möglicherweise überprüfen, bevor Sie weitermachen.
Vorstellung des GRUB-Bootloaders
In modernen Systemen finden sich zwei Hauptversionen von GRUB (v1 manchmal auch als GRUB Legacy bezeichnet und v2), obwohl die meisten Distributionen v2 standardmäßig in ihren neuesten Versionen verwenden. Nur Red Hat Enterprise Linux 6 und seine Derivate verwenden heute noch v1.
Daher werden wir uns in diesem Leitfaden hauptsächlich auf die Funktionen von v2 konzentrieren.
Unabhängig von der GRUB-Version ermöglicht ein Bootloader dem Benutzer:
- 1). die Art und Weise zu ändern, wie sich das System verhält, indem verschiedene Kernel spezifiziert werden,
- 2). zwischen alternativen Betriebssystemen zum Booten zu wählen, und
- 3). Konfigurationsabschnitte hinzuzufügen oder zu bearbeiten, um Bootoptionen zu ändern, unter anderem.
Heute wird GRUB vom GNU-Projekt gepflegt und ist auf ihrer Website gut dokumentiert. Es wird empfohlen, die offizielle GNU-Dokumentation zu verwenden, während Sie diesen Leitfaden durchgehen.
Beim Systemstart wird Ihnen der folgende GRUB-Bildschirm in der Hauptkonsole angezeigt. Zunächst werden Sie aufgefordert, zwischen alternativen Kernels zu wählen (standardmäßig wird das System mit dem neuesten Kernel gestartet) und dürfen eine GRUB-Befehlszeile eingeben (mit c
) oder die Startoptionen bearbeiten (durch Drücken der Taste e
).

Einer der Gründe, warum Sie erwägen würden, mit einem älteren Kernel zu booten, ist ein Hardwaregerät, das nach einem Upgrade „Probleme macht“ und zuvor ordnungsgemäß funktioniert hat (siehe diesen Link in den AskUbuntu-Foren für ein Beispiel).
Die Konfiguration von GRUB v2 wird beim Booten aus /boot/grub/grub.cfg
oder /boot/grub2/grub.cfg
gelesen, während /boot/grub/grub.conf
oder /boot/grub/menu.lst
in v1 verwendet werden. Diese Dateien dürfen NICHT von Hand bearbeitet werden, sondern werden basierend auf dem Inhalt von /etc/default/grub
und den Dateien in /etc/grub.d
modifiziert.
In einem CentOS 7 ist hier die Konfigurationsdatei, die beim ersten Installieren des Systems erstellt wird:
GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet" GRUB_DISABLE_RECOVERY="true"
Zusätzlich zur Online-Dokumentation können Sie das GNU GRUB-Handbuch auch mit info wie folgt finden:
# info grub
Wenn Sie speziell an den Optionen für /etc/default/grub interessiert sind, können Sie den Konfigurationsabschnitt direkt aufrufen:
# info -f grub -n 'Simple configuration'
Mit dem obigen Befehl finden Sie heraus, dass GRUB_TIMEOUT
die Zeit zwischen dem Moment, in dem der erste Bildschirm erscheint, und dem automatischen Systemstart festlegt, es sei denn, der Benutzer unterbricht ihn. Wenn diese Variable auf -1
gesetzt ist, wird der Startvorgang nicht gestartet, bis der Benutzer eine Auswahl getroffen hat.
Wenn mehrere Betriebssysteme oder Kernel auf demselben Computer installiert sind, erfordert GRUB_DEFAULT
einen ganzzahligen Wert, der angibt, welcher Betriebssystem- oder Kernel-Eintrag auf dem GRUB-Startbildschirm standardmäßig zum Booten ausgewählt werden soll. Die Liste der Einträge kann nicht nur im oben gezeigten Startbildschirm angezeigt werden, sondern auch mit dem folgenden Befehl:
In CentOS und openSUSE:
# awk -F\' '$1=="menuentry " {print $2}' /boot/grub2/grub.cfg
In Ubuntu:
# awk -F\' '$1=="menuentry " {print $2}' /boot/grub/grub.cfg
In dem im unteren Bild gezeigten Beispiel, wenn wir mit der Kernel-Version 3.10.0-123.el7.x86_64 (4. Eintrag) booten möchten, müssen wir GRUB_DEFAULT
auf 3
setzen (Einträge werden intern mit Null beginnend nummeriert) wie folgt:
GRUB_DEFAULT=3

Eine letzte GRUB-Konfigurationsvariable, die von besonderem Interesse ist, ist GRUB_CMDLINE_LINUX
, die verwendet wird, um Optionen an den Kernel zu übergeben. Die Optionen, die über GRUB an den Kernel übergeben werden können, sind im Kernel-Parameter-Dokument und in man 7 bootparam gut dokumentiert.
Aktuelle Optionen in meinem CentOS 7-Server sind:
GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet"
Warum möchten Sie die Standard-Kernelparameter ändern oder zusätzliche Optionen übergeben? Vereinfacht ausgedrückt kann es Zeiten geben, in denen Sie dem Kernel bestimmte Hardwareparameter mitteilen müssen, die er nicht selbst bestimmen kann, oder um die Werte zu überschreiben, die er ermitteln würde.
Das ist mir vor nicht allzu langer Zeit passiert, als ich Vector Linux, eine Derivate von Slackware, auf meinem 10 Jahre alten Laptop ausprobiert habe. Nach der Installation hat es die richtigen Einstellungen für meine Grafikkarte nicht erkannt, daher musste ich die Kerneloptionen, die über GRUB übergeben wurden, ändern, um es zum Laufen zu bringen.
Ein weiteres Beispiel ist, wenn Sie das System in den Einzelbenutzermodus bringen müssen, um Wartungsaufgaben durchzuführen. Sie können dies tun, indem Sie das Wort „single“ an GRUB_CMDLINE_LINUX
anhängen und neu starten:
GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet single"
Nach der Bearbeitung von /etc/default/grub
müssen Sie anschließend update-grub
(Ubuntu) oder grub2-mkconfig -o /boot/grub2/grub.cfg
(CentOS und openSUSE) ausführen, um grub.cfg
zu aktualisieren (ansonsten gehen die Änderungen beim Booten verloren).
Dieser Befehl wird die zuvor erwähnten Boot-Konfigurationsdateien verarbeiten, um die grub.cfg
zu aktualisieren. Diese Methode stellt sicher, dass Änderungen dauerhaft sind, während Optionen, die über GRUB beim Booten übergeben werden, nur für die aktuelle Sitzung gelten.
Behebung von Linux GRUB-Problemen
Wenn Sie ein zweites Betriebssystem installieren oder wenn Ihre GRUB-Konfigurationsdatei aufgrund menschlicher Fehler beschädigt wird, gibt es Möglichkeiten, wie Sie Ihr System wieder zum Laufen bringen und wieder booten können.
Drücken Sie auf dem Startbildschirm c
, um eine GRUB-Befehlszeile zu erhalten (denken Sie daran, dass Sie auch e
drücken können, um die Standard-Bootoptionen zu bearbeiten), und verwenden Sie Hilfe, um die verfügbaren Befehle im GRUB-Prompt anzuzeigen:

Wir werden uns auf ls konzentrieren, das die installierten Geräte und Dateisysteme auflistet, und wir werden untersuchen, was es findet. Im Bild unten können wir sehen, dass es 4 Festplatten gibt (hd0
bis hd3
).
Nur hd0
scheint partitioniert worden zu sein (wie durch msdos1 und msdos2 belegt, wobei 1 und 2 die Partitionnummern sind und msdos das Partitionierungsschema ist).
Lassen Sie uns nun die erste Partition auf hd0
(msdos1) untersuchen, um zu sehen, ob wir dort GRUB finden können. Dieser Ansatz wird es uns ermöglichen, Linux zu booten und dort andere hochrangige Tools zu verwenden, um die Konfigurationsdatei zu reparieren oder GRUB vollständig neu zu installieren, wenn dies erforderlich ist:
# ls (hd0,msdos1)/
Wie wir im markierten Bereich sehen können, haben wir das grub2-Verzeichnis in dieser Partition gefunden:

Sobald wir sicher sind, dass GRUB in (hd0,msdos1) vorhanden ist, sagen wir GRUB, wo es seine Konfigurationsdatei finden soll, und weisen es dann an, zu versuchen, sein Menü zu starten:
set prefix=(hd0,msdos1)/grub2 set root=(hd0,msdos1) insmod normal normal

Dann im GRUB-Menü wählen Sie einen Eintrag aus und drücken Sie Enter, um ihn zu starten. Sobald das System gebootet hat, können Sie den Befehl grub2-install /dev/sdX
ausführen (ersetzen Sie sdX
durch das Gerät, auf dem Sie GRUB installieren möchten). Die Bootinformationen werden dann aktualisiert und alle zugehörigen Dateien wiederhergestellt.
# grub2-install /dev/sdX
Weitere komplexere Szenarien sind dokumentiert, zusammen mit ihren vorgeschlagenen Lösungen, im Ubuntu GRUB2 Troubleshooting Guide. Die dort erklärten Konzepte gelten auch für andere Distributionen.
Zusammenfassung
In diesem Artikel haben wir Sie mit GRUB vertraut gemacht, darauf hingewiesen, wo Sie sowohl online als auch offline Dokumentation finden können, und erklärt, wie Sie mit einem Szenario umgehen, in dem ein System aufgrund eines bootloaderbezogenen Problems nicht mehr ordnungsgemäß bootet.
Zum Glück ist GRUB eines der am besten dokumentierten Tools, und Sie können leicht Hilfe entweder in den installierten Dokumenten oder online mit den Ressourcen finden, die wir in diesem Artikel geteilt haben.
Haben Sie Fragen oder Kommentare? Zögern Sie nicht, uns über das Kommentarformular unten zu informieren. Wir freuen uns darauf, von Ihnen zu hören!
Source:
https://www.tecmint.com/configure-and-troubleshoot-grub-boot-loader-linux/