Upgrade to 12.2 made Windows 8 partition not boot

Hi, I have a partition with Windows 8 Release Preview installed and the other one is Opensuse 12.2. I don’t know what to do, it just doesn’t start anymore and only redirects me to some Windows repair pages on boot. Does this have something to do with UEFI? It used to work fine with grub legacy in 12.1

Here is fdisk -l:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    41945087    20971520    f  W95 Ext'd (LBA)
/dev/sda2        41945088   251658239   104856576   83  Linux
/dev/sda3       251658240   252375039      358400    7  HPFS/NTFS/exFAT
/dev/sda4       252375040   351649791    49637376    7  HPFS/NTFS/exFAT
/dev/sda5            4096     4208639     2102272   82  Linux swap / Solaris
/dev/sda6         4210688    41945087    18867200   83  Linux

Here is grub2.cfg:

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#


### BEGIN /etc/grub.d/00_header ###
if  -s $prefix/grubenv ]; then
  load_env
fi
set default="${saved_entry}"


if  x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi


export menuentry_id_option


if  "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi


function savedefault {
  if  -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}


function load_video {
  if  x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}


if  x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_msdos
insmod ext2
set root='hd0,msdos7'
if  x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 --hint='hd0,msdos7'  64edb941-f167-4e1f-b7cb-87678a5000f1
else
  search --no-floppy --fs-uuid --set=root 64edb941-f167-4e1f-b7cb-87678a5000f1
fi
    font="/usr/share/grub2/unicode.pf2"
fi


if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_output gfxterm
insmod part_msdos
insmod ext2
set root='hd0,msdos7'
if  x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 --hint='hd0,msdos7'  64edb941-f167-4e1f-b7cb-87678a5000f1
else
  search --no-floppy --fs-uuid --set=root 64edb941-f167-4e1f-b7cb-87678a5000f1
fi
insmod gfxmenu
loadfont ($root)/boot/grub2/themes/openSUSE/DejaVuSans-Bold14.pf2
loadfont ($root)/boot/grub2/themes/openSUSE/DejaVuSans10.pf2
loadfont ($root)/boot/grub2/themes/openSUSE/DejaVuSans12.pf2
loadfont ($root)/boot/grub2/themes/openSUSE/ascii.pf2
insmod png
set theme=($root)/boot/grub2/themes/openSUSE/theme.txt
export theme
insmod part_msdos
insmod ext2
set root='hd0,msdos7'
if  x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 --hint='hd0,msdos7'  64edb941-f167-4e1f-b7cb-87678a5000f1
else
  search --no-floppy --fs-uuid --set=root 64edb941-f167-4e1f-b7cb-87678a5000f1
fi
insmod png
background_image -m stretch /boot/grub2/themes/openSUSE/background.png
if sleep --interruptible 0 ; then
  set timeout=8
fi
### END /etc/grub.d/00_header ###


### BEGIN /etc/grub.d/10_linux ###
menuentry 'openSUSE 12.2' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-64edb941-f167-4e1f-b7cb-87678a5000f1' {
	load_video
	set gfxpayload=keep
	insmod gzio
	insmod part_msdos
	insmod ext2
	set root='hd0,msdos7'
	if  x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 --hint='hd0,msdos7'  64edb941-f167-4e1f-b7cb-87678a5000f1
	else
	  search --no-floppy --fs-uuid --set=root 64edb941-f167-4e1f-b7cb-87678a5000f1
	fi
	echo	'Loading Linux 3.4.6-2.10-desktop ...'
	linux	/boot/vmlinuz-3.4.6-2.10-desktop root=UUID=64edb941-f167-4e1f-b7cb-87678a5000f1   resume=/dev/disk/by-id/ata-Corsair_Force_GS_12277912000018820035-part5 splash=silent quiet showopts
	echo	'Loading initial ramdisk ...'
	initrd	/boot/initrd-3.4.6-2.10-desktop
}
submenu 'Advanced options for openSUSE 12.2' $menuentry_id_option 'gnulinux-advanced-64edb941-f167-4e1f-b7cb-87678a5000f1' {
	menuentry 'openSUSE 12.2, with Linux 3.4.6-2.10-desktop' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.4.6-2.10-desktop-advanced-64edb941-f167-4e1f-b7cb-87678a5000f1' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos7'
		if  x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 --hint='hd0,msdos7'  64edb941-f167-4e1f-b7cb-87678a5000f1
		else
		  search --no-floppy --fs-uuid --set=root 64edb941-f167-4e1f-b7cb-87678a5000f1
		fi
		echo	'Loading Linux 3.4.6-2.10-desktop ...'
		linux	/boot/vmlinuz-3.4.6-2.10-desktop root=UUID=64edb941-f167-4e1f-b7cb-87678a5000f1   resume=/dev/disk/by-id/ata-Corsair_Force_GS_12277912000018820035-part5 splash=silent quiet showopts
		echo	'Loading initial ramdisk ...'
		initrd	/boot/initrd-3.4.6-2.10-desktop
	}
	menuentry 'openSUSE 12.2, with Linux 3.4.6-2.10-desktop (recovery mode)' --class opensuse --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.4.6-2.10-desktop-recovery-64edb941-f167-4e1f-b7cb-87678a5000f1' {
		load_video
		set gfxpayload=keep
		insmod gzio
		insmod part_msdos
		insmod ext2
		set root='hd0,msdos7'
		if  x$feature_platform_search_hint = xy ]; then
		  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 --hint='hd0,msdos7'  64edb941-f167-4e1f-b7cb-87678a5000f1
		else
		  search --no-floppy --fs-uuid --set=root 64edb941-f167-4e1f-b7cb-87678a5000f1
		fi
		echo	'Loading Linux 3.4.6-2.10-desktop ...'
		linux	/boot/vmlinuz-3.4.6-2.10-desktop root=UUID=64edb941-f167-4e1f-b7cb-87678a5000f1  showopts apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe
		echo	'Loading initial ramdisk ...'
		initrd	/boot/initrd-3.4.6-2.10-desktop
	}
}


### END /etc/grub.d/10_linux ###


### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###


### BEGIN /etc/grub.d/20_ppc_terminfo ###
### END /etc/grub.d/20_ppc_terminfo ###


### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Recovery Environment (loader) (on /dev/sda3)' --class windows --class os $menuentry_id_option 'osprober-chain-14B6CA3AB6CA1C5C' {
	insmod part_msdos
	insmod ntfs
	set root='hd0,msdos3'
	if  x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos3 --hint-efi=hd0,msdos3 --hint-baremetal=ahci0,msdos3 --hint='hd0,msdos3'  14B6CA3AB6CA1C5C
	else
	  search --no-floppy --fs-uuid --set=root 14B6CA3AB6CA1C5C
	fi
	drivemap -s (hd0) ${root}
	chainloader +1
}
menuentry 'Windows Recovery Environment (loader) (on /dev/sda4)' --class windows --class os $menuentry_id_option 'osprober-chain-F01AD7741AD735F6' {
	insmod part_msdos
	insmod ntfs
	set root='hd0,msdos4'
	if  x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4 --hint='hd0,msdos4'  F01AD7741AD735F6
	else
	  search --no-floppy --fs-uuid --set=root F01AD7741AD735F6
	fi
	drivemap -s (hd0) ${root}
	chainloader +1
}
### END /etc/grub.d/30_os-prober ###


### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###


### BEGIN /etc/grub.d/41_custom ###
if  -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif  -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###


### BEGIN /etc/grub.d/90_persistent ###
### END /etc/grub.d/90_persistent ###

If I can’t fix this,can I do this like I used to do in grub legacy:

grub
find /boot/grub/menu.lst
root (hd0,5)
setup (hd0)
quit
reboot

Except that I’m gonna “find /boot/grub2/grub2.cfg” instead. I really need Windows too and bootloaders are seriously complicated in my opinion, mainly because it’s so hard to debug/test things out…

So I do not know anything about Windows 8, but normally you install Windows first, then openSUSE Last. It is curious to have a Extended Partition First and to have it marked as bootable. While openSUSE can use this I doubt Windows can it it has been reported that running the Windows partition manager will blow the whole thing up if it finds such a setup. Consider that you would be better off with a couple or three partitions and using that disk space in a VM to run Windows. VirtualBox is one such solution and its good for testing new openSUSE versions as well. I have a bash utility that can help with Grub, but I doubt you will be able to undo the mess you have created.

GNU Grub2 Command Help/Config Editor - Version: 1.82 - Blogs - openSUSE Forums

Thank You,

Well, it worked just fine in 12.1 with grub legacy, so I don’t think it has anything to do with Windows or a mess. However I have to agree with you that I don’t understand all this partition vocabulary. I just opted for whatever was possible during the installation.
Here is my disk layout in the screenshot, the 107GB ext4 contains Linux, the 51gb NTFS contains Windows. Not sure why I needed all the other stuff, but that was the only way it allowed me to click next, … to say it with shame :frowning:
http://i.imgur.com/hICFA.png

How did you update? “zypper dup” retains grub legacy as bootloader and adds grub2 as additional menu.

can I do this like I used to do in grub legacy
No. GRUB2 does not have built-in “setup” command (and “find” became “search”, partition numbering changed, etc). Nor do I quite understand how would it help in this case.

Do you still have menu.lst from grub legacy that worked? Could you show it for comparison? I do not see anything particular wrong with your grub.cfg, except it may have found wrong partition. But that’s something we do not know and cannot guess …

What did you have before you performed the installation that Windows 8 was happy with?

openSUSE 12.2 installed a new boot loader called Grub 2 and replaced the Grub Legacy boot you had before the install. For any version of openSUSE, when it is doing a new install, must make room for its self on the hard disk and does not on purpose replace anything. That means two or more partitions must be added and space taken from existing partitions if no free (unpartitioned) space exists. Once you go past four primary partitions, extended partitions must be used. Logical Partitions (inside of extended ones) can’t be booted from directly unless Grub has been installed into the Master Boot Record (MRB), or can be setup in the Extended Partition, which is a more unorthodox setup that Windows does not like and can mess up for you. Windows 7, and it appears 8 as well, creates a small boot partition, which then loads the main Windows partition, so the first sda3 is likely the correct partition to boot from and you would ignore the exact terminology that Grub 2 has placed on the naming of the forth (2nd Windows) partition. Its my opinion that the best you can do automatically with the openSUSE installer, else requiring extensive manual intervention, is to install openSUSE second, after a standard install of Windows exists at the start of the disk, one or two partitions only. Anything else more complex that you might do is inviting disaster. I have a simple write up on partitions you can read about here:

http://forums.opensuse.org/content/111-partitioning-hard-disk-during-install.html

Again, consider that you may need to back up your data and start over again. Give VirtualBox serious consideration after you get openSUSE working again. Windows 8 will come out next month for real and so anything else already installed must be replaced in the future anyway. So, consider this a valuable lesson on getting Windows and openSUSE to work together in the future.

Thank You,

No. GRUB2 does not have built-in “setup” command (and “find” became “search”, partition numbering changed, etc). Nor do I quite understand how would it help in this case.

That’s bad, I was thinking that worst case I can reinstall Windows 8 and then I used to be able to just redo the grub setup thingy, and I was able to boot Opensuse again. But if that isn’t possible either, I’m out of luck…

I don’t have any saved old file, but I just reverted back to grub legacy and this is the menu.lst it has.

default 0timeout 8
##YaST - generic_mbr
gfxmenu (hd0,5)/boot/message
##YaST - activate

###Don’t change this comment - YaST2 identifier: Original name: linux###
title openSUSE 12.2
root (hd0,5)
kernel /boot/vmlinuz-3.4.6-2.10-desktop root=/dev/disk/by-id/ata-Corsair_Force_GS_12277912000018820035-part6 resume=/dev/disk/by-id/ata-Corsair_Force_GS_12277912000018820035-part5 splash=silent quiet showopts
initrd /boot/initrd-3.4.6-2.10-desktop-kdump

###Don’t change this comment - YaST2 identifier: Original name: windows###
title Windows
rootnoverify (hd0,3)
chainloader +1

###Don’t change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe – openSUSE 12.2
root (hd0,5)
kernel /boot/vmlinuz-3.4.6-2.10-desktop root=/dev/disk/by-id/ata-Corsair_Force_GS_12277912000018820035-part6 showopts apm=off noresume edd=off powersaved=off nohz=off highres=off processor.max_cstate=1 nomodeset x11failsafe
initrd /boot/initrd-3.4.6-2.10-desktop-kdump

###Don’t change this comment - YaST2 identifier: Original name: memtest86###
title Memory Test
kernel (hd0,5)/boot/memtest.bin

###Don’t change this comment - YaST2 identifier: Original name: linux###
title Kernel-3.4.6-2.10-desktop
root (hd0,5)
kernel /boot/vmlinuz-3.4.6-2.10-desktop root=/dev/disk/by-id/ata-Corsair_Force_GS_12277912000018820035-part6 resume=/dev/disk/by-id/ata-Corsair_Force_GS_12277912000018820035-part5 splash=silent quiet showopts
initrd /boot/initrd-3.4.6-2.10-desktop

I’ll restart now and see if it works…

What did you have before you performed the installation that Windows 8 was happy with?

I had Opensuse 12.1 installed. Then I installed Windows 8. Then I did the grub setup thing. Then I was able to boot both. Then I upgraded to 12.2. Then Windows 8 stopped booting, Opensuse still worked.

The second Windows menu entry in GRUB2 menu (‘Windows Recovery Environment (loader) (on /dev/sda4)’) refers to the same Windows partition as menu entry Windows in menu.lst. What happens when you try to boot it?

On 2012-09-16 19:36, Maxxi12 wrote:
>
> Hi, I have a partition with Windows 8 Release Preview installed and the
> other one is Opensuse 12.2. I don’t know what to do, it just doesn’t
> start anymore and only redirects me to some Windows repair pages on
> boot. Does this have something to do with UEFI? It used to work fine
> with grub legacy in 12.1

If you had grub legacy and now grub 2, that was not an upgrade you did. That was a fresh
install of 12.2 in the same place as 12.1. An upgrade respects the previous grub.

Then, if you can boot Linux, and if you attempt to boot Windows you get information on how to
repair Windows, I suspect that Windows is attempting to boot but is damaged, and grub is
correctly installed. But this is only a suspicion, I’m not familiar with grub 2.


Cheers / Saludos,

Carlos E. R.
(from 12.1 x86_64 “Asparagus” at Telcontar)