Dienstag, 27. Dezember 2011

Dualboot mit Grub 2

Falls man mehrere Betriebssysteme auf einem Computer installiert hat und mit Grub 2 bootet, kann es sein, dass eines der Betriebssysteme nicht gestartet werden kann, weil bei Grub 2 die Nummerierung der Partitionen geändert wurde.

Beispiel:
Auf einem meiner Computer ist auf der ersten Festplatte PCLinuxOS installiert und auf der zweiten Festplatte befindet sich Mint. Gebootet wird über den Bootloader von Mint. Grub 2 findet zwar PCLinuxOS, hat in der Datei /boot/grub/grub.cfg in dem Abschnitt für PCLinuxOS jedoch diesen fehlerhaften Eintrag erzeugt:

initrd (hd0,0)/boot/initrd.img

Grub 2 findet beim Hochfahren die Partition hd0,0 nicht, weil es sich dabei um die alte Bezeichnung handelt, die von der ersten Grub-Version verwendet wurde. Die erste Partition auf der ersten Festplatte müsste nach der neuen Numerierung hd0,1 lauten.

Man könnte zwar in der Datei /boot/grub/grub.cfg einfach den fehlerhaften Eintrag ändern, aber mit jedem Update von Grub wird die Datei überschrieben. Aus diesem Grund habe ich in die Datei /etc/grub.d/40_custom die Angaben für PCLinuxOS geschrieben. Hier ist die Datei:

#!/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.
# Von mir hinzugefügt:
menuentry "PCLinuxOS" {

insmod ext2

set root=(hd0,1)

linux (hd0,1)/boot/vmlinuz

initrd (hd0,1)/boot/initrd.img
}

Nach dem Eintrag in die Datei 40_custom muss man als root oder mit dem sudo-Befehl noch Grub 2 updaten, damit der Eintrag in die Datei grub.cfg übernommen wird. Der Befehl dafür lautet: update-grub2.
Beim Hochfahren taucht zwar immer noch der fehlerhafte Menü-Eintrag auf, aber auch der funktionierende Eintrag mit PCLinuxOS erscheint nun.