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