GRUB: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(28 dazwischenliegende Versionen von 7 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{righttoc}}
{{righttoc}}
'''GRUB ab Version 2''' ist die nächste Generation des ''GRand Unified Bootloaders'' und stellt eine komplette Neuentwicklung dar, an der aktiv gearbeitet wird.


'''GRUB ab Version 2''' ist die nächste Generation des ''GRand Unified Bootloaders'' (GRUB-legacy) und stellt eine komplette Neuentwicklung dar, an der aktiv gearbeitet wird.<br>
Die ältere Version des GRUB Bootloaders wird GRUB-legacy genannt.
Die ältere Version des GRUB Bootloaders wird GRUB-legacy genannt.  


== Upgrade ==
{{installation
|name=GRUB
|repo=core
|paket=grub
|zusatz=efibootmgr
|zusatzinfo=grub-install mit UEFI Unterstützung
}}


Um ein Upgrade von GRUB-legacy auf GRUB durchzuführen, kann man wie folgt vorgehen:
Wenn weitere Betriebssysteme auf dem PC vorhanden sind, z.B. Windows, empfiehlt es sich, [https://www.archlinux.de/?page=PackageDetails;repo=community;arch=i686;pkgname=os-prober os-prober] gleich mitzuinstallieren. Dann werden für die anderen Betriebssysteme die Start-Einträge gleich mitgeneriert.  
 
Zuerst sichern der aktuellen GRUB Konfiguration:
 
cp /boot/grub/menu.lst /tmp
 
Dann installieren des GRUB Paketes:
 
pacman -S grub
 
Es wird eine Meldung angezeigt:
grub-common und grub stehen miteinander in Konflikt. grub entfernen? [j/n] j
Antwort mit j<br>
grub-legacy wird deinstalliert und grub wird installiert.<br>
Anschließend GRUB in den MBR installieren:


'''Booten per BIOS:''' GRUB in den MBR (Master Boot Record) schreiben.
  grub-install /dev/sda
  grub-install /dev/sda
(Wurde der Datenträger mit [[gdisk]] Partitioniert benötigt Grub eine zusätzliche Partition von 1MiB Größe und dem Partitionstyp {{ic|ef02}}.)


Konvertieren der alten GRUB-legacy Konfiguration ins neue GRUB Format:
'''Booten per UEFI:''' GRUB ins UEFI eintragen.
  grub-menulst2cfg /tmp/menu.lst /boot/grub/grub.cfg
  grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch-Linux-grub
Theoretisch ist man jetzt fertig - es kann neu gebootet werden. Praktisch sollte auf jeden Fall aber noch ein Blick auf die neue Konfiguration geworfen werden, um sie ggf. zu ändern:


nano /boot/grub/grub.cfg
'''Nützliche Argumentoptionen'''<br>
Falls man einen Fehler bekommt, kann man genauere Informationen bekommen, wenn man die Argumente {{ic | --recheck}} und {{ic | --debug}} hinzufügt.
  grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch-Linux-grub --recheck --debug


Z.B. musste bei mir in der Zeile mit legacy_initrd der Eintrag 'systemd' durch '/bin/systemd' ersetzt werden.
Wenn man Leerzeichen in seinem Booteintrag haben möchte, muss man jediglich den Namen mit Anführungsstrichen hinschreiben.
 
  grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id="Ein schöner Bootname :)" --recheck --debug
Eine detaillierte Konfiguration von GRUB wird weiter unten beschrieben.
Eine andere Möglichkeit wäre die Verwendung von Backslashes, damit die Shell die Leerzeichen als "nun kommt das nächste Argument" interpretiert.
 
  grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Ein\ schöner\ Bootname\ \:\) --recheck --debug
Eine frische Installation von GRUB ohne bereits bestehendem GRUB wird im Teil "Installation" beschrieben.<br>
<br>
 
== Installation ==
Falls man eine gpt Partitionstabelle bevorzugt, so kann man GRUB benutzen. Genaueres hier: [[gpt]]<br>
Zuerst wird das GRUB-Paket installiert
 
pacman -S grub
 
Wenn weitere Betriebssysteme auf dem PC vorhanden sind, z.B. Windows, empfiehlt es sich, [https://www.archlinux.de/?page=PackageDetails;repo=community;arch=i686;pkgname=os-prober os-prober] gleich mitzuinstallieren.
Dann werden für die anderen Betriebssysteme die Start-Einträge gleich mitgeneriert.
 
Dann wird grub in den MBR (Master Boot Record) geschrieben.
 
grub-install /dev/sda


== Konfiguration ==
== Konfiguration ==
Zeile 54: Zeile 34:
Die grub.cfg ist die Konfigurations-Datei, die GRUB beim Starten verwendet.
Die grub.cfg ist die Konfigurations-Datei, die GRUB beim Starten verwendet.


Wenn man grafische Tools wie [https://aur.archlinux.org/packages.php?ID=47871 grub2-editor] ([[AUR]]) oder [https://aur.archlinux.org/packages.php?ID=17439 startupmanager] ([[AUR]]) verwenden möchte, muss die automatische Generierung (s.u.) gewählt werden.  
Wenn man grafische Tools wie  
*[http://pkgbuild.com/git/aur-mirror.git/tree/grub2-editor grub2-editor] (AUR Archiv)
*{{AUR|startupmanager}}
*{{AUR|grub-customizer}}
verwenden möchte, muss die automatische Generierung (s.u.) gewählt werden.  


Sonst kann die grub.cfg auch Manuell erstellt werden, was zu einer deutlich übersichtlicheren grub.cfg führt.
Sonst kann die grub.cfg auch manuell erstellt werden, was zu einer deutlich übersichtlicheren grub.cfg führt.


=== Automatisch generierte grub.cfg ===
=== Automatisch generierte grub.cfg ===
Zeile 64: Zeile 48:
  grub-mkconfig -o /boot/grub/grub.cfg
  grub-mkconfig -o /boot/grub/grub.cfg


 
Wenn dennoch einige Werte angepasst werden sollen, so geht das in der Datei {{ic|/etc/default/grub}}
 
Wenn dennoch einige Werte angepasst werden sollen, so geht das in der /etc/default/grub


Kernel Parameter können z.B. bei
Kernel Parameter können z.B. bei


  GRUB_CMDLINE_LINUX_DEFAULT="quiet"
  GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="loglevel=3"
Startverhalten kann z.B. bei
GRUB_TIMEOUT_STYLE=countdown


oder
angegeben werden.


  GRUB_CMDLINE_LINUX="loglevel=3"
Danach ist grub-mkconfig erneut wie oben angegeben aufzurufen.


angegeben werden. Danach ist grub-mkconfig erneut wie oben angegeben aufzurufen.
Bitte beim Update von GRUB unbedingt die {{ic|/etc/default/grub.pacnew}} Datei prüfen auf neue bzw. veraltete Optionen. Siehe auch https://wiki.archlinux.de/title/Pacnew-_und_Pacsave-Dateien


==== Windows ====
==== Windows ====


Wenn [https://www.archlinux.de/?page=PackageDetails;repo=community;arch=i686;pkgname=os-prober os-prober] installiert ist, sollten Windows Installationen beim automatischen Generieren berücksichtigt werden.
Wenn [https://www.archlinux.de/?page=PackageDetails;repo=community;arch=i686;pkgname=os-prober os-prober] installiert ist, sollten Windows Installationen beim automatischen Generieren berücksichtigt werden.


Falls man aber doch manuell erstellte Einträge benötigt, so wird dafür die
Falls man aber doch manuell erstellte Einträge benötigt, so wird dafür die
Zeile 88: Zeile 73:


verwendet.
verwendet.
'''Hinweis:'''
Mithilfe von [https://www.archlinux.de/?page=PackageDetails;repo=community;arch=i686;pkgname=os-prober os-prober] können auch andere Linux Distributionen für Grub entdeckt werden.


=== Manuell erstellte grub.cfg ===
=== Manuell erstellte grub.cfg ===


GRUB nutzt nun die Datei ''/boot/grub/grub.cfg'' als Konfigurationsdatei. Dabei ist darauf zu achten, dass GRUB die Festplatten anders als Linux und [[GRUB-legacy]] benennt:
GRUB nutzt nun die Datei ''/boot/grub/grub.cfg'' als Konfigurationsdatei. Dabei ist darauf zu achten, dass GRUB die Festplatten anders als Linux und GRUB-legacy benennt:


Es bezeichnet die Partitionen mit ''(hdX,Y)'', dabei ist
Es bezeichnet die Partitionen mit ''(hdX,Y)'', dabei ist
Zeile 99: Zeile 87:


Die '''erste''' Partition der '''ersten''' Festplatte ist also '''(hd0,1)''', die '''zweite''' Partition '''(hd0,2)''' und die '''erste''' Partition auf der '''zweiten''' Festplatte '''(hd1,1)''' usw..
Die '''erste''' Partition der '''ersten''' Festplatte ist also '''(hd0,1)''', die '''zweite''' Partition '''(hd0,2)''' und die '''erste''' Partition auf der '''zweiten''' Festplatte '''(hd1,1)''' usw..
=== Eigene Einträge ===
Wenn man beispielsweise über Grub den PC herunterfahren, neustarten oder in's UEFI möchte, dann kann man folgendes in die {{ic | /etc/grub.d/40_custom}} eintragen:
Für einen Menueeintrag, um von Grub den PC neuzustarten:
menuentry "System Neustarten" {
        echo "System rebooting..."
        reboot
}
Für einen Menueeintrag, um von Grub den PC herunterzufahren:
menuentry "System Herunterfahren" {
        echo "System shutting down..."
        halt
}
Für einen Menueeintrag, um von Grub in die UEFI-Einstellungen zu kommen:
if [ ${grub_platform} == "efi" ]; then
        menuentry "Systemeinstellungen" {
              fwsetup
        }
fi
{{Achtung | Diese Option funktioniert nur unter Systemen, die UEFI besitzen! (Deswegen die if-Bedingung!)}}
Am Ende kann die Datei {{ic | 40_custom}} folgendermaßen aussehen:
#!/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.
menuentry "System Neustarten" {
echo "System rebooting..."
reboot
}
menuentry "System Herunterfahren" {
echo "System shutting down..."
halt
}
if [ ${grub_platform} == "efi" ]; then
menuentry "Systemeinstellungen" {
fwsetup
}
fi
Nicht vergessen danach noch {{ic | sudo grub-mkconfig -o /boot/grub/grub.cfg}} auszuführen, da ansonsten die Einstellungen nicht übernommen werden.
Wenn man Menüeinträge vertauschen will, muss man einfach den jeweiligen Eintrag nach oben/unten "verschieben", bzw. kopieren. Als Beispiel:
if [ ${grub_platform} == "efi" ]; then
menuentry "Systemeinstellungen" {
fwsetup
}
fi
 
menuentry "System Neustarten" {
echo "System rebooting..."
reboot
}
menuentry "System Herunterfahren" {
echo "System shutting down..."
halt
}
Somit wäre der Menüeintrag {{ic | Systemeinstellungen}} über {{ic | System Neustarten}} und {{ic | System Herunterfahren}}, wenn man davor die Grubdatei neu erstellt hat.


==== Allgemeine Konfiguration ====
==== Allgemeine Konfiguration ====
Zeile 104: Zeile 158:
  set default=<Nummer_des_Eintrags>
  set default=<Nummer_des_Eintrags>


Dieser Eintrag wird automatisch geladen. (GRUB beginnt bei 0!)
Dieser Eintrag wird automatisch geladen. (GRUB beginnt bei 0!) <br>
Sollte man aber beispielsweise 2 Kernel haben, dann kann es sein, dass der default Eintrag (normalerweise der erste Booteintrag) den anderen Kernel auswählt.<br>
In dem Fall müssen Sie grub sagen, dass er ihren gewünschten Kernel auswählen soll, da man ansonsten manuell hinnavigieren muss. <br>
Man findet alle Einträge mit den verschiedenen Kerneln unter der Option {{ic | Advanced options for Arch Linux}}. Dort wird man, sofern man mehr als einen Kernel hat, 4 Einträge finden. <br>
Wenn man beispielsweise den zweiten Kernel, also den 3. Eintrag standardmäßig ausgewählt haben möchte, dann muss man folgendes in die {{ic | /etc/default/grub}} ersetzen:
GRUB_DEFAULT="1>2"
und dann die {{ic | grub.cfg}} neu generieren. <br>
Damit zeigt nämlich grub nach jeden Boot auf den '''zweiten''' Eintrag und in diesen widerrum auf den '''dritten''' Eintrag.


  set timeout=<Zeit_in_Sekunden>
  set timeout=<Zeit_in_Sekunden>
Zeile 174: Zeile 235:
  set root=(hd0,2)
  set root=(hd0,2)
  gfxpayload=1024x768x32
  gfxpayload=1024x768x32
  linux /boot/vmlinuz-linux root=/dev/sda2 ro
  linux /boot/vmlinuz-linux root=/dev/sda2 init=/usr/lib/systemd/systemd rw
  initrd /boot/initramfs-linux.img
  initrd /boot/initramfs-linux.img
  }
  }
Zeile 183: Zeile 244:
  }
  }


==Grub Bootcd erstellen==
=== Fehlermeldung von GRUB ===
Paket libisoburn installieren. (Wird zum Erstellen der isodatei benötigt)
 
Falls diese Fehlermeldung angezeigt wird und per BIOS gebootet wird:
 
grub-install /dev/sda
/sbin/grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists.
However, blocklists are UNRELIABLE and their use is discouraged..
/sbin/grub-setup: error: will not proceed with blocklists.
 
Dann konnte GRUB nicht installiert werden weil die zusätzliche Partition vom Typ ef02 nicht vorhanden ist. Abhilfe, man kann die Partition auch nachträglich anlegen. Zum Beispiel ans Ende der Festplatte.
 
Neu booten mit der Arch Linux Installations-CD:
gdisk /dev/sda
Neue Partition ans Ende der Festplatte anlegen:
Command (? for help): n
Partition number (1-3): 128
First sector (xx-yyyyyy, default = xxx) or {+-}size{KMGTP}: -3M
..
..
Last sector xx-yy,default = Sektorende) or {+-}size{KMGTP}: enter
Hex code or GUID (L to show codes, Enter = 8300): ef02
Changed type of partition to 'Bios boot partition'
Command (? for help): w
 
Am Ende der Platte ist jetzt die Partition installiert.
Mit chroot GRUB erneut installieren:
mount /dev/sdaX /mnt
sdaX ist die vorhandene Rootpartition des installierten Arch-Linux. Bitte entsprechend anpassen.
arch-chroot /mnt
Gpt-MBR nochmal auf sda schreiben:
grub-install /dev/sda
exit
reboot


Ein Verzeichnis anlegen z.B. :
==GRUB Boot-CD erstellen==
/home/user/zurgrub2iso/boot/grub/i386-pc
Paket libisoburn installieren. (Wird zum Erstellen der ISO-Datei benötigt)
 
Ein Verzeichnis anlegen z.B. :
/home/user/grub2iso/boot/grub/i386-pc


Darin die Datei grub.cfg kopieren.
Darin die Datei grub.cfg kopieren.
Zeile 199: Zeile 294:
  insmod ntfs
  insmod ntfs


Iso generieren mit:
ISO-Datei generieren mit:
  grub-mkrescue --output=grub2.iso /home/user/zurgrub2iso
 
  grub-mkrescue --output=grub2.iso /home/user/grub2iso
 
ISO-Datei brennen:


Iso brennen:
  cdrskin -v dev=/dev/sr0 speed=16 -eject grub2.iso
  cdrskin -v dev=/dev/sr0 speed=16 -eject grub2.iso


Bootcd testen.
Boot-CD testen.


==Grub auf einer separaten Bootloader Partition installieren==
==GRUB auf einer separaten Bootloader Partition installieren==
Manchmal ist es sinnvoll den Bootmanager auf einer separaten Bootloader Partition zu installieren. Die Anwendung wäre interessant für Benutzer mit mehreren Betriebssystemen von denen der Bootloader unabhängig sein soll.
Manchmal ist es sinnvoll den Bootmanager auf einer separaten Bootloader Partition zu installieren. Die Anwendung wäre interessant für Benutzer mit mehreren Betriebssystemen von denen der Bootloader unabhängig sein soll.


Zeile 232: Zeile 329:
  grub-setup: error: If you really want blocklists, use --force.
  grub-setup: error: If you really want blocklists, use --force.
Siehe auch [https://bbs.archlinux.org/viewtopic.php?pid=581760#p581760 diesen Thread] {{sprache|en}}
Siehe auch [https://bbs.archlinux.org/viewtopic.php?pid=581760#p581760 diesen Thread] {{sprache|en}}
== Grub vermischt Bootloader von unterschiedlichen Linux Distributionen ==
Sollten Sie mal außer Arch und Windows z.B. Gentoo installiert haben, dann kann es passieren, dass ''os-prober'' für beide Menüeinträge die gleiche initramfs-Datei gibt, wodurch jedesmal Arch Linux gebootet wird, auch wenn sie Gentoo in Grub ausgewählt haben.
In dem Fall müssen Sie einfach Ihren Grubordner löschen und neu generieren.
# Löscht Grub von der Boot-Partition
sudo rm -rf /boot/grub
# -- Generiert den Grubordner neu --
# Für UEFI
sudo grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch\ Linux --recheck --debug
# Für BIOS mit MBR
sudo grub-install /dev/sda
# Grubdatei neu erstellen
sudo grub-mkconfig -o /boot/grub/grub.cfg
Nun sollten die Einträge richtig stimmen und Sie werden Gentoo booten, wenn Sie ''gentoo'' in Grub ausgewählt haben.
   
   
==Siehe auch==
==Siehe auch==
* [[gpt]]
* [[gdisk]]
* [[fdisk]]
* [[Partitionierung]]


== Weblinks ==
== Weblinks ==

Aktuelle Version vom 4. Januar 2022, 09:48 Uhr

GRUB ab Version 2 ist die nächste Generation des GRand Unified Bootloaders und stellt eine komplette Neuentwicklung dar, an der aktiv gearbeitet wird.

Die ältere Version des GRUB Bootloaders wird GRUB-legacy genannt.

Installation

GRUB ist als grub in core verfügbar, und kann von dort mittels Pacman installiert werden.

# GRUB an sich
pacman -S grub

# grub-install mit UEFI Unterstützung
pacman -S efibootmgr

Wenn weitere Betriebssysteme auf dem PC vorhanden sind, z.B. Windows, empfiehlt es sich, os-prober gleich mitzuinstallieren. Dann werden für die anderen Betriebssysteme die Start-Einträge gleich mitgeneriert.

Booten per BIOS: GRUB in den MBR (Master Boot Record) schreiben.

grub-install /dev/sda

(Wurde der Datenträger mit gdisk Partitioniert benötigt Grub eine zusätzliche Partition von 1MiB Größe und dem Partitionstyp ef02.)

Booten per UEFI: GRUB ins UEFI eintragen.

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch-Linux-grub

Nützliche Argumentoptionen
Falls man einen Fehler bekommt, kann man genauere Informationen bekommen, wenn man die Argumente --recheck und --debug hinzufügt.

 grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch-Linux-grub --recheck --debug

Wenn man Leerzeichen in seinem Booteintrag haben möchte, muss man jediglich den Namen mit Anführungsstrichen hinschreiben.

  grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id="Ein schöner Bootname :)" --recheck --debug

Eine andere Möglichkeit wäre die Verwendung von Backslashes, damit die Shell die Leerzeichen als "nun kommt das nächste Argument" interpretiert.

  grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Ein\ schöner\ Bootname\ \:\) --recheck --debug

Konfiguration

Die grub.cfg ist die Konfigurations-Datei, die GRUB beim Starten verwendet.

Wenn man grafische Tools wie

verwenden möchte, muss die automatische Generierung (s.u.) gewählt werden.

Sonst kann die grub.cfg auch manuell erstellt werden, was zu einer deutlich übersichtlicheren grub.cfg führt.

Automatisch generierte grub.cfg

Man kann die grub.cfg mit folgendem Befehl automatisch generieren lassen.

grub-mkconfig -o /boot/grub/grub.cfg

Wenn dennoch einige Werte angepasst werden sollen, so geht das in der Datei /etc/default/grub

Kernel Parameter können z.B. bei

GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="loglevel=3"

Startverhalten kann z.B. bei

GRUB_TIMEOUT_STYLE=countdown

angegeben werden.

Danach ist grub-mkconfig erneut wie oben angegeben aufzurufen.

Bitte beim Update von GRUB unbedingt die /etc/default/grub.pacnew Datei prüfen auf neue bzw. veraltete Optionen. Siehe auch https://wiki.archlinux.de/title/Pacnew-_und_Pacsave-Dateien

Windows

Wenn os-prober installiert ist, sollten Windows Installationen beim automatischen Generieren berücksichtigt werden.

Falls man aber doch manuell erstellte Einträge benötigt, so wird dafür die

/etc/grub.d/40_custom

verwendet.

Hinweis: Mithilfe von os-prober können auch andere Linux Distributionen für Grub entdeckt werden.

Manuell erstellte grub.cfg

GRUB nutzt nun die Datei /boot/grub/grub.cfg als Konfigurationsdatei. Dabei ist darauf zu achten, dass GRUB die Festplatten anders als Linux und GRUB-legacy benennt:

Es bezeichnet die Partitionen mit (hdX,Y), dabei ist

  • X die Nummer der Festplatte, beginnend bei 0, und
  • Y die Zählnummer der Partition, beginnend bei 1.

Die erste Partition der ersten Festplatte ist also (hd0,1), die zweite Partition (hd0,2) und die erste Partition auf der zweiten Festplatte (hd1,1) usw..

Eigene Einträge

Wenn man beispielsweise über Grub den PC herunterfahren, neustarten oder in's UEFI möchte, dann kann man folgendes in die /etc/grub.d/40_custom eintragen:

Für einen Menueeintrag, um von Grub den PC neuzustarten:

menuentry "System Neustarten" {
       echo "System rebooting..."
       reboot
}

Für einen Menueeintrag, um von Grub den PC herunterzufahren:

menuentry "System Herunterfahren" {
       echo "System shutting down..."
       halt
}

Für einen Menueeintrag, um von Grub in die UEFI-Einstellungen zu kommen:

if [ ${grub_platform} == "efi" ]; then
       menuentry "Systemeinstellungen" {
              fwsetup
       }
fi

Achtung: Diese Option funktioniert nur unter Systemen, die UEFI besitzen! (Deswegen die if-Bedingung!)


Am Ende kann die Datei 40_custom folgendermaßen aussehen:

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

menuentry "System Neustarten" {
	echo "System rebooting..."
	reboot
}

menuentry "System Herunterfahren" {
	echo "System shutting down..."
	halt
}

if [ ${grub_platform} == "efi" ]; then
	menuentry "Systemeinstellungen" {
		fwsetup
	}
fi

Nicht vergessen danach noch sudo grub-mkconfig -o /boot/grub/grub.cfg auszuführen, da ansonsten die Einstellungen nicht übernommen werden. Wenn man Menüeinträge vertauschen will, muss man einfach den jeweiligen Eintrag nach oben/unten "verschieben", bzw. kopieren. Als Beispiel:

if [ ${grub_platform} == "efi" ]; then
	menuentry "Systemeinstellungen" {
		fwsetup
	}
fi
 
menuentry "System Neustarten" {
	echo "System rebooting..."
	reboot
}

menuentry "System Herunterfahren" {
	echo "System shutting down..."
	halt
}

Somit wäre der Menüeintrag Systemeinstellungen über System Neustarten und System Herunterfahren, wenn man davor die Grubdatei neu erstellt hat.

Allgemeine Konfiguration

set default=<Nummer_des_Eintrags>

Dieser Eintrag wird automatisch geladen. (GRUB beginnt bei 0!)
Sollte man aber beispielsweise 2 Kernel haben, dann kann es sein, dass der default Eintrag (normalerweise der erste Booteintrag) den anderen Kernel auswählt.
In dem Fall müssen Sie grub sagen, dass er ihren gewünschten Kernel auswählen soll, da man ansonsten manuell hinnavigieren muss.
Man findet alle Einträge mit den verschiedenen Kerneln unter der Option Advanced options for Arch Linux. Dort wird man, sofern man mehr als einen Kernel hat, 4 Einträge finden.
Wenn man beispielsweise den zweiten Kernel, also den 3. Eintrag standardmäßig ausgewählt haben möchte, dann muss man folgendes in die /etc/default/grub ersetzen:

GRUB_DEFAULT="1>2"

und dann die grub.cfg neu generieren.
Damit zeigt nämlich grub nach jeden Boot auf den zweiten Eintrag und in diesen widerrum auf den dritten Eintrag.

set timeout=<Zeit_in_Sekunden>

Der für "default" angegebene Eintrag wird nach dieser Zeit gestartet.

menuentry "Titel_des_Eintrags" { <Eintrag> }

Alle Befehle innerhalb der geschweiften Klammer beziehen sich auf diesen Eintrag, der im Menü mit dem hier angegebenen Titel angezeigt wird.

Linux

set root=<Partition>

Bezeichnet die Partition, auf der sich das Kernelimage bzw. die Ramdisk befindet.

linux <Pfad_zum_Kernel_und_Parameter>

Pfadangabe zum Linux-Kernel. Dahinter stehen die Parameter der Kernels. (Wenn eine "boot"-Partition verwendet wird liegt der Kernel in "/"!)

initrd <Pfad>

Pfadangabe zur Ramdisk. (Wenn eine "boot"-Partition verwendet wird liegt die Ramdisk in "/"!)

Hinweis: Der Parameter vga des Linux Kernels wird von GRUB nicht mehr unterstüzt. Statt dessen muss der Befehl gfxpayload verwendet werden.

gfxpayload <resolution>

Angabe der Auflösung des Linux Framebuffers. Beispiel: 1024x768x32.

Damit dieser Befehl funktioniert, muss noch das GRUB-Modul vbe in der allgemeinen Konfiguration geladen werden.

insmod vbe

Windows/Chainloading

GRUB bietet die Möglichkeit, Bootloader anderer Betriebssysteme zu starten (Chainloading). Dies ist bei Windows der Fall, das seinen Bootloader in den Partition Boot Record, den Bootsector einer Partition, im Regelfall (hd0,1) beinhaltet.

set root=<Partition>

GRUB verwendet hier im Gegensatz zu GRUB-legacy den gleichen Befehl zum Festlegen der Partition.

chainloader +1

Damit wird bewirkt, dass der Bootsektor der Partition geladen wird.

Beispieldatei

# Config file for GRUB - The GNU GRand Unified Bootloader
# /boot/grub/grub.cfg

# DEVICE NAME CONVERSIONS
#
#  Linux           Grub
# -------------------------
#  /dev/fd0        (fd0)
#  /dev/sda        (hd0)
#  /dev/sdb2       (hd1,2)
#  /dev/sda3       (hd0,3)
#

insmod vbe

set timeout=5

set default=0

menuentry "Arch Linux" {
set root=(hd0,2)
gfxpayload=1024x768x32
linux /boot/vmlinuz-linux root=/dev/sda2 init=/usr/lib/systemd/systemd rw
initrd /boot/initramfs-linux.img
}

menuentry "Windows" {
set root=(hd0,1)
chainloader +1
}

Fehlermeldung von GRUB

Falls diese Fehlermeldung angezeigt wird und per BIOS gebootet wird:

grub-install /dev/sda
/sbin/grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists.
However, blocklists are UNRELIABLE and their use is discouraged..
/sbin/grub-setup: error: will not proceed with blocklists.

Dann konnte GRUB nicht installiert werden weil die zusätzliche Partition vom Typ ef02 nicht vorhanden ist. Abhilfe, man kann die Partition auch nachträglich anlegen. Zum Beispiel ans Ende der Festplatte.

Neu booten mit der Arch Linux Installations-CD:

gdisk /dev/sda

Neue Partition ans Ende der Festplatte anlegen:

Command (? for help): n
Partition number (1-3): 128
First sector (xx-yyyyyy, default = xxx) or {+-}size{KMGTP}: -3M
..
..
Last sector xx-yy,default = Sektorende) or {+-}size{KMGTP}: enter
Hex code or GUID (L to show codes, Enter = 8300): ef02
Changed type of partition to 'Bios boot partition'
Command (? for help): w

Am Ende der Platte ist jetzt die Partition installiert. Mit chroot GRUB erneut installieren:

mount /dev/sdaX /mnt

sdaX ist die vorhandene Rootpartition des installierten Arch-Linux. Bitte entsprechend anpassen.

arch-chroot /mnt

Gpt-MBR nochmal auf sda schreiben:

grub-install /dev/sda
exit
reboot

GRUB Boot-CD erstellen

Paket libisoburn installieren. (Wird zum Erstellen der ISO-Datei benötigt)

Ein Verzeichnis anlegen z.B. : /home/user/grub2iso/boot/grub/i386-pc

Darin die Datei grub.cfg kopieren.

Es müssen noch einige Module mit in die grub.cfg eingetragen werden je nachdem was für ein Dateisystem und Partitionstabellentyp benutzt wird:

insmod vbe
insmod part_msdos
insmod ext2
insmod reiserfs
insmod ntfs

ISO-Datei generieren mit:

grub-mkrescue --output=grub2.iso /home/user/grub2iso

ISO-Datei brennen:

cdrskin -v dev=/dev/sr0 speed=16 -eject grub2.iso

Boot-CD testen.

GRUB auf einer separaten Bootloader Partition installieren

Manchmal ist es sinnvoll den Bootmanager auf einer separaten Bootloader Partition zu installieren. Die Anwendung wäre interessant für Benutzer mit mehreren Betriebssystemen von denen der Bootloader unabhängig sein soll.

Die Partition kann eine Größe von 16MB haben. Als Beispiel wäre die Partition für den Bootloader auf /mnt/Bootpart gemountet.

Installieren des GRUB auf die separate Partition und schreiben des MBR:

grub-install --no-floppy --root-directory=/mnt/Bootpart /dev/sda

grub.cfg wie oben ins Verzeichnis /mnt/Bootpart/boot/grub hinzufügen.

device.map in /mnt/Bootpart/boot/grub/ ändern wenn man statt dev-id sda benutzen will.

#(hd0)	/dev/disk/by-id/ata-ST3250318AS_9VY4G2HA
(hd0)	/dev/sda
reboot

msdos-style Fehlermeldung

Startet die erste Partition direkt hinter dem MBR (Sektor 63), also ohne das notwendige eine MiB Abstand (Sektor 2048) vor der ersten Partition (z.B. durch die Nutzung von cfdisk zum Partitionieren), kann bei der Installation von GRUB in einen VMware-Container folgende Fehlermeldung auftreten:

grub-setup: warn: This msdos-style partition label has no post-MBR gap; embedding will not be possible!
grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists.
            However, blocklists are UNRELIABLE and its use is discouraged.
grub-setup: error: If you really want blocklists, use --force.

Siehe auch diesen Thread

Grub vermischt Bootloader von unterschiedlichen Linux Distributionen

Sollten Sie mal außer Arch und Windows z.B. Gentoo installiert haben, dann kann es passieren, dass os-prober für beide Menüeinträge die gleiche initramfs-Datei gibt, wodurch jedesmal Arch Linux gebootet wird, auch wenn sie Gentoo in Grub ausgewählt haben. In dem Fall müssen Sie einfach Ihren Grubordner löschen und neu generieren.

# Löscht Grub von der Boot-Partition
sudo rm -rf /boot/grub
# -- Generiert den Grubordner neu --
# Für UEFI
sudo grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch\ Linux --recheck --debug
# Für BIOS mit MBR
sudo grub-install /dev/sda
# Grubdatei neu erstellen
sudo grub-mkconfig -o /boot/grub/grub.cfg

Nun sollten die Einträge richtig stimmen und Sie werden Gentoo booten, wenn Sie gentoo in Grub ausgewählt haben.

Siehe auch

Weblinks