GRUB: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
K (GRand … ist die offizielle Schreibung.)
(Paketname grub2-bios ist geändert auf grub-bios der alte grub Bootloader wird als grub-legacy beschrieben.)
Zeile 1: Zeile 1:
{{righttoc}}
{{righttoc}}


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


== Upgrade ==
== Upgrade ==


Um ein Upgrade von GRUB auf GRUB2 durchzuführen, kann man wie folgt vorgehen:
Um ein Upgrade von GRUB-legacy auf GRUB durchzuführen, kann man wie folgt vorgehen:


Zuerst sichern der aktuellen GRUB Konfiguration:
Zuerst sichern der aktuellen GRUB Konfiguration:
Zeile 12: Zeile 12:
  cp /boot/grub/menu.lst /tmp
  cp /boot/grub/menu.lst /tmp


Dann installieren des GRUB2 Paketes:
Dann installieren des GRUB Paketes:


  pacman -S grub2-bios
  pacman -S grub-bios


Es wird eine Meldung angezeigt:
Es wird eine Meldung angezeigt:
  grub2-common und grub stehen miteinander in Konflikt. grub entfernen? [j/n] j
  grub-common und grub stehen miteinander in Konflikt. grub entfernen? [j/n] j
Antwort mit j<br>
Antwort mit j<br>
grub wird deinstalliert und grub2 wird installiert.<br>
grub-legacy wird deinstalliert und grub wird installiert.<br>
Anschließend GRUB2 in den MBR installieren:
Anschließend GRUB in den MBR installieren:


  grub-install /dev/sda
  grub-install /dev/sda


Konvertieren der alten GRUB Konfiguration ins neue GRUB2 Format:
Konvertieren der alten GRUB-legacy Konfiguration ins neue GRUB Format:
  grub-menulst2cfg /tmp/menu.lst /boot/grub/grub.cfg
  grub-menulst2cfg /tmp/menu.lst /boot/grub/grub.cfg
Fertig - es kann neu gebootet oder noch optional die neue Konfiguration angepasst werden:
Fertig - es kann neu gebootet oder noch optional die neue Konfiguration angepasst werden:
Zeile 30: Zeile 30:
  nano /boot/grub/grub.cfg
  nano /boot/grub/grub.cfg


Eine detaillierte Konfiguration von GRUB2 wird weiter unten beschrieben.
Eine detaillierte Konfiguration von GRUB wird weiter unten beschrieben.


Eine frische Installation von GRUB2 ohne bereits bestehendem GRUB wird im Teil "Installation" beschrieben.<br>
Eine frische Installation von GRUB ohne bereits bestehendem GRUB wird im Teil "Installation" beschrieben.<br>
<br>
<br>


== Installation ==
== Installation ==
Falls man eine gpt Partitionstabelle bevorzugt, so kann man grub2 benutzen. Genaueres hier:  [[gpt]]<br>  
Falls man eine gpt Partitionstabelle bevorzugt, so kann man GRUB benutzen. Genaueres hier:  [[gpt]]<br>  
Zuerst wird GRUB2 installiert
Zuerst wird GRUB installiert


  pacman -S grub2-bios
  pacman -S grub-bios


und dann in den MBR (Master Boot Record) geschrieben
und dann in den MBR (Master Boot Record) geschrieben
Zeile 51: Zeile 51:
oder per Hand eingeben:
oder per Hand eingeben:


GRUB2 nutzt nun die Datei ''/boot/grub/grub.cfg'' als Konfigurationsdatei. Dabei ist darauf zu achten, dass GRUB2 die Festplatten anders als Linux und [[GRUB]] 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 64: Zeile 64:
  set default=<Nummer_des_Eintrags>
  set default=<Nummer_des_Eintrags>


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


  set timeout=<Zeit_in_Sekunden>
  set timeout=<Zeit_in_Sekunden>
Zeile 88: Zeile 88:
Pfadangabe zur Ramdisk. (Wenn eine "boot"-Partition verwendet wird liegt die Ramdisk in "/"!)
Pfadangabe zur Ramdisk. (Wenn eine "boot"-Partition verwendet wird liegt die Ramdisk in "/"!)


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


  gfxpayload <resolution>
  gfxpayload <resolution>
Zeile 94: Zeile 94:
Angabe der Auflösung des Linux Framebuffers. Beispiel: 1024x768x32.
Angabe der Auflösung des Linux Framebuffers. Beispiel: 1024x768x32.


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


  insmod vbe
  insmod vbe
Zeile 100: Zeile 100:
=== Windows/Chainloading ===
=== Windows/Chainloading ===


GRUB2 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.
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>
  set root=<Partition>


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


  chainloader +1
  chainloader +1
Zeile 112: Zeile 112:
=== Beispieldatei ===
=== Beispieldatei ===


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

Version vom 20. Juli 2012, 15:37 Uhr

GRUB2 ist die nächste Generation des GRand Unified Bootloaders (GRUB) 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

Fertig - es kann neu gebootet oder noch optional die neue Konfiguration angepasst werden:

nano /boot/grub/grub.cfg

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 GRUB installiert

pacman -S grub-bios

und dann in den MBR (Master Boot Record) geschrieben

grub-install /dev/sda

Konfiguration

Man kann die Konfiguration automatisch durchführen lassen mit

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

oder per Hand eingeben:

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
}

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

Grub2 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 grub2 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

Siehe auch


Weblinks