Als ich versucht habe mit GRUB-2 mehrere Betriebssysteme, darunter 2x fast gleiche WinXP, in einem Bootmenü unterzubringen, bin ich auf das Problem gestoßen - GRUB wollte immer (unabhängig von der Menüauswahl) nur das eine WinXP von den beiden starten. Mit Linuxen hat alles einwandfrei funktioniert.
Eine kurze Analyse des Files grub.cfg (unter /boot/grub) hat ergeben, dass GRUB keine eindeutige Unterscheidung im Bootmenü zwischen mehreren Win-Installationen macht. (Es ist, meiner Meinung nach, ein Bug im GRUB-2.)
Der relevante Abschnitt hat wie folgt ausgesehen:
### BEGIN /etc/grub.d/30_os-prober ### menuentry "Microsoft Windows XP Professional (on /dev/sda2)" --class windows --class os { insmod part_msdos insmod ntfs set root='(hd0,msdos2)' search --no-floppy --fs-uuid --set=root 5E9862BA98628FF7 drivemap -s (hd0) ${root} chainloader +1 } menuentry "Microsoft Windows XP Professional (on /dev/sda3)" --class windows --class os { insmod part_msdos insmod ntfs set root='(hd0,msdos3)' search --no-floppy --fs-uuid --set=root 5E9862BA98628FF7 drivemap -s (hd0) ${root} chainloader +1 } ### END /etc/grub.d/30_os-prober ###
Da die beiden WinXP in den NTFS-Partitionen installiert wurden, haben sie keine UUID, dafür aber die VolumeLabels. Die Partition des 1. WinXP (hda2) hatte das Label wxp_sys, die des 2. (hda3) - das Label surfer_w.
Um das Problem zu lösen, habe ich die Zeile:
search --no-floppy --fs-uuid --set=root 5E9862BA98628FF7
…in beiden Abschnitten wie folgt geändert:
Im oberen:
search --no-floppy --set=root --label wxp_sys --hint hd0,msdos2
Im unteren:
search --no-floppy --set=root --label surfer_w --hint hd0,msdos3
Damit die "zu startende" Windows-Partition auch als aktiv markiert wird (es ist eigentlich nicht zwingend notwendig), habe ich vor den o.g. Zeilen zusätzlich das GRUB-Kommando parttool (hd0,2) boot+ (oben) bzw. parttool (hd0,3) boot+ (unten) hinzugefügt.
Zum Schluss sehen die beiden Abschnitte wie folgt aus:
### BEGIN /etc/grub.d/30_os-prober ### menuentry "MS Windows XP Pro - mOffice (on /dev/sda2)" --class windows --class os { insmod part_msdos insmod ntfs parttool (hd0,2) hidden- parttool (hd0,2) boot+ set root='(hd0,msdos2)' # search --no-floppy --fs-uuid --set=root 5E9862BA98628FF7 search --no-floppy --set=root --label wxp_sys --hint hd0,msdos2 drivemap -s (hd0) ${root} chainloader +1 } menuentry "MS Windows XP Pro - mSurfer (on /dev/sda3)" --class windows --class os { insmod part_msdos insmod ntfs parttool (hd0,2) hidden+ parttool (hd0,3) boot+ set root='(hd0,msdos3)' # search --no-floppy --fs-uuid --set=root 5E9862BA98628FF7 search --no-floppy --set=root --label surfer_w --hint hd0,msdos3 drivemap -s (hd0) ${root} chainloader +1 } ### END /etc/grub.d/30_os-prober ###
Problem gelöst!
Stand: 02.08.2013
EOF