GRUB: Unterschied zwischen den Versionen
Zeile 39: | Zeile 39: | ||
== Installation == | == Installation == | ||
Falls man eine gpt Partitionstabelle bevorzugt, so kann man GRUB benutzen. Genaueres hier: [[gpt]]<br> | Falls man eine gpt Partitionstabelle bevorzugt, so kann man GRUB benutzen. Genaueres hier: [[gpt]]<br> | ||
Zuerst wird GRUB installiert | Zuerst wird das GRUB-Paket installiert | ||
pacman -S grub-bios | pacman -S grub-bios | ||
Wenn | 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 | 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 | grub-install /dev/sda |
Version vom 24. März 2013, 14:49 Uhr
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.
Die ältere Version des GRUB Bootloaders wird GRUB-legacy genannt.
Upgrade
Um ein Upgrade von GRUB-legacy auf GRUB durchzuführen, kann man wie folgt vorgehen:
Zuerst sichern der aktuellen GRUB Konfiguration:
cp /boot/grub/menu.lst /tmp
Dann installieren des GRUB Paketes:
pacman -S grub-bios
Es wird eine Meldung angezeigt:
grub-common und grub stehen miteinander in Konflikt. grub entfernen? [j/n] j
Antwort mit j
grub-legacy wird deinstalliert und grub wird installiert.
Anschließend GRUB in den MBR installieren:
grub-install /dev/sda
Konvertieren der alten GRUB-legacy Konfiguration ins neue GRUB Format:
grub-menulst2cfg /tmp/menu.lst /boot/grub/grub.cfg
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
Z.B. musste bei mir in der Zeile mit legacy_initrd der Eintrag 'systemd' durch '/bin/systemd' ersetzt werden.
Eine detaillierte Konfiguration von GRUB wird weiter unten beschrieben.
Eine frische Installation von GRUB ohne bereits bestehendem GRUB wird im Teil "Installation" beschrieben.
Installation
Falls man eine gpt Partitionstabelle bevorzugt, so kann man GRUB benutzen. Genaueres hier: gpt
Zuerst wird das GRUB-Paket installiert
pacman -S grub-bios
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.
Dann wird grub in den MBR (Master Boot Record) geschrieben.
grub-install /dev/sda
Konfiguration
Die grub.cfg ist die Konfigurations-Datei die GRUB beim starten verwendet.
Wenn man Tools wie Grafische Tools wie grub2-editor (AUR) oder startupmanager (AUR) verwenden möchte, muss die Automatisch Generierung 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 man dennoch einige Werte anpassen werden sollen so geht das in der /etc/default/grub
Kernel Parameter können z.B bei
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
oder
GRUB_CMDLINE_LINUX="loglevel=3"
angegeben werden. Da Arch auch für den zweiten Eintrag nicht recovery Modus beim erstellen verwendet, macht es keinen unterschied welchen der Einträge man verwendet.
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 ro initrd /boot/initramfs-linux.img } menuentry "Windows" { set root=(hd0,1) chainloader +1 }
Grub Bootcd erstellen
Paket libisoburn installieren. (Wird zum Erstellen der isodatei benötigt)
Ein Verzeichnis anlegen z.B. : /home/user/zurgrub2iso/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 generieren mit:
grub-mkrescue --output=grub2.iso /home/user/zurgrub2iso
Iso brennen:
cdrskin -v dev=/dev/sr0 speed=16 -eject grub2.iso
Bootcd 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