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