The primary problem is weirdness in the Ubuntu /boot/grub/menu.lst file.
The first main problem is that it appears you have done at least 4 kernel upgrades, each of which have added another pair of boot stanzas for the new kernel version. So you have a total of 10 boot stanza pairs (for regular boot and for recovery mode), when in all probability only 1 pair will actually work (others may, but only if you kept backup copies of those kernels, and those kernels would not match up with other updated code which is kept in sync with the latest installed kernel). There is a setting in the file which controls how many of these stanzas should be retained; that setting is disabled. There is also a setting which controls which boot stanza is the default; currently that is set to the Windows stanza.
The second main problem is that in all the stanzas the Ubuntu root partition is being specified as (hd0,5) - which is sda6; this is also controlled by a single control setting. But that is wrong, it should be (hd0,4), i.e., sda5.
I think the following will straighten it all out: First, mount the Ubuntu root partition in openSUSE as you did earlier, in a terminal window after switching to root:
mount -t ext3 /dev/sda5 /mnt
Then open the grub file with a text editor as root. Press Alt-F2 and a run dialog box will pop up. In KDE type:
kdesu kwrite /mnt/boot/grub/menu.lst
or if in Gnome, then it’s:
gnomesu gedit /mnt/boot/grub/menu.lst
Make all of the following changes:
- Change “default 12” to “default 0”
- Change “# groot=(hd0,5)” to “# groot=(hd0,4)”
- In each of the boot stanzas, change “root (hd0,5)” to “root (hd0,4)”.
- Change the Windows stanza to the following:
Save the file. Reboot. From the openSUSE menu select Ubuntu. Once back in Ubuntu, open a terminal window and do:
That will tell you which kernel is actually installed and active. Then do:
sudo gedit /boot/grub/menu.lst
And remove the boot stanzas you no longer want/need. It may be all but the first two. Reboot and test. Also test booting Windows from the Ubuntu menu; it should work identically as it does from openSUSE. Now boot back into openSUSE, open a terminal, switch to root, and do:
sfdisk -A1 /dev/sda
Because you have 2 sda partitions marked “active”. That’s wrong. This will make only sda1 active, which Windows needs in order to boot. Then open the openSUSE /boot/grub/menu.lst in a text editor as root (as you previously did for the Ubuntu version of the file). Then remove the “windows 2” thru “windows 4” stanzas, only “windows 1” works and is needed. Finally, there is a duplicate line under the Ubuntu stanza, remove it. Save the file. Done.
A last thought: Look at the partition table as displayed by fdisk, the logical partitions (sda5-9) within the extended primary (sda2). The partition numbers are not in the sequence as the physical partitions actually reside on the disk. The order is sda7,8,9,5,6. Now, that is not necessarily a problem in itself. However, there is a gap of unassigned space between sda9 and sda5 - some 54GB worth. If you want to use that space, in YaST Partitioner you can add an sda10 logical there to use for whatever. I strongly advise against creating a partition there with Windows; that is very risky.