Workaround beim Bootproblem der Win-Installation

Nachdem ich Ubuntu von der Version 12.04 LTS auf 14.04 aktualisiert habe, wollte das parallel installierte WinXP nicht mehr starten. Mit Ubuntu selbst hat jedoch alles einwandfrei funktioniert.

Eine Analyse des Files grub.cfg (unter /boot/grub) hat ergeben, dass GRUB versucht das Filesystem über UUID zu referenzieren und den Boot-Vorgang über BIOS und/oder UEFI abzuwickeln, was anscheinend nicht mit jedem BIOS/UEFI einwandfrei funktioniert. (An dem betroffenen Rechner ist kein UEFI vorhanden.)

Der relevante Abschnitt hat wie folgt ausgesehen:

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Microsoft Windows XP Professional (auf /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-065C76FB5C76E4B9' {
	insmod part_msdos
	insmod ntfs
	set root='hd0,msdos1'
	if [ x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 065C76FB5C76E4B9
	else
	  search --no-floppy --fs-uuid --set=root 065C76FB5C76E4B9
	fi
	parttool ${root} hidden-
	parttool ${root} boot+
	drivemap -s (hd0) ${root}
	chainloader +1
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
  set timeout=10
fi
### END /etc/grub.d/30_os-prober ###

WinXP ist in einer NTFS-Partition installiert. Diese hat keine UUID, dafür aber ein VolumeLabel.

Um das Problem zu lösen, habe ich die Zeilen:

search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 065C76FB5C76E4B9

bzw.

search --no-floppy --fs-uuid --set=root 065C76FB5C76E4B9

wie folgt geändert:

	search --no-floppy --set=root --label WinXP_sys --hint-bios=hd0,msdos1  065C76FB5C76E4B9

bzw.:

	search --no-floppy --set=root --label WinXP_sys  065C76FB5C76E4B9

Ich habe nicht weiter untersucht, welcher der beiden if-Zweige bei mir tatsächlich greift. Hauptsache, der Boot-Vorgang funktioniert wie erwartet.

:!: Achtung: Der im BIOS aktivierte Virenschutz, der verhindert, dass MBR beschrieben werden kann, kann die o.g. Kommandos "parttool ${root} hidden-" und "parttool ${root} boot+" aus dem Tritt bringen.


Stand: 09.07.2014

EOF