GRUB

Aus wiki.archlinux.de

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

Falls man eine GPT Partitionstabelle erstellt und per BIOS booten möchte, so ist noch eine Bootloader Partition mit ca. 3MB vom Typ EF02 erforderlich.

Falls man eine GPT Partitionstabelle erstellt und per UEFI booten möchte, so ist noch eine Bootloader Partition mit 512MB vom Typ EF00 erforderlich.

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

Booten per UEFI: GRUB ins UEFI eintragen.

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

Konfiguration

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

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.

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..

Allgemeine Konfiguration

set default=<Nummer_des_Eintrags>

Dieser Eintrag wird automatisch geladen. (GRUB beginnt bei 0!)

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
}

Siehe auch

Weblinks