====== Workaround beim Bootproblem bei doppelter Win-Installation ======
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