Hi,
I have tried to read this topic and find a solution to my problem with with grub2 multiboot. I currently have 3 hdd and 3 operating systems: win7, ubuntu 9.10 x64 and osx. Actually I got 4 os because I got both Snow Leopard and Leopard through Chameleon R4 bootloader. SL is vanilla version with right E/E and S/L/E installed after iAtkos7 Leopard.
Here my fdisk -l list where you can see what hdd's I got.
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x7c155af2
Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 102400 7 HPFS/NTFS
Partition 1 does not end on cylinder boundary.
/dev/sda2 13 6494 52058112 7 HPFS/NTFS
/dev/sda3 6494 12996 52224000 7 HPFS/NTFS
/dev/sda4 12996 60802 383998976 7 HPFS/NTFS
Disk /dev/sdb: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000baf86
Device Boot Start End Blocks Id System
/dev/sdb1 9135 30402 170825319 af HFS / HFS+
/dev/sdb2 * 1 8892 71418880 83 Linux
/dev/sdb3 8892 9135 1951744+ 5 Extended
/dev/sdb5 8892 9135 1951744 82 Linux swap / Solaris
Partition table entries are not in disk order
WARNING: GPT (GUID Partition Table) detected on '/dev/sdc'! The util fdisk doesn't support GPT. Use GNU Parted.
Disk /dev/sdc: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xc223d2ae
Device Boot Start End Blocks Id System
/dev/sdc1 1 26 204819+ ee GPT
/dev/sdc2 26 30427 244193292 af HFS / HFS+
/dev/sdc3 * 30443 60785 243726308 af HFS / HFS+
Like you can see I got Windows 7 (sda2) and all ntfs other ntfs partitions in first sda/hd0 disk.
In second disk sdb/hd1 I got Timemachine BU-disk (sdb1) and Ubuntu (sdb2) and swap.
Third disk sdc/hd2 got SnowLeopard 10.6.3 (sdc2) and Leopard (sdc3).
I can boot to Win7 and Ubuntu through grub easily but not to osx.

If I change that sdc/hd2 as first boot disk I am able to boot up Win7 and both of osx through Chameleon bootloader.
Now I want to get my grub to work as only bootloader because it seems to be "the easiest" way to get multiboot work. Chameleon is not an option because sleep ain't working with win7 when I start it through Chameleon.
Here is my /boot/grub/grub.cfg and like you can see it is generated automatically. I tried to add couple osx entries manually without success.
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s /boot/grub/grubenv ]; then
have_grubenv=true
load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
saved_entry=${prev_saved_entry}
save_env saved_entry
prev_saved_entry=
save_env prev_saved_entry
fi
insmod ext2
set root=(hd1,2)
search --no-floppy --fs-uuid --set c8bb670b-35e3-493c-bde8-9f9555942b61
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=640x480
insmod gfxterm
insmod vbe
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don't
# understand terminal_output
terminal gfxterm
fi
fi
if [ ${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=10
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/white
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_os-prober ###
menuentry "Windows 7 (loader) (on /dev/sda1)" {
insmod ntfs
set root=(hd0,1)
search --no-floppy --fs-uuid --set a6fa52fbfa52c769
chainloader +1
}
menuentry "Mac OS X (on /dev/sdc2)" {
insmod hfsplus
set root=(hd2,2)
search --no-floppy --fs-uuid --set 18294667071f4c98
insmod vbe
do_resume=0
if [ /var/vm/sleepimage -nt10 / ]; then
if xnu_resume /var/vm/sleepimage; then
do_resume=1
fi
fi
if [ $do_resume == 0 ]; then
xnu_uuid 18294667071f4c98 uuid
if [ -f /Extra/DSDT.aml ]; then
acpi -e /Extra/DSDT.aml
fi
xnu_kernel /mach_kernel boot-uuid=${uuid} rd=*uuid
if [ /System/Library/Extensions.mkext -nt /System/Library/Extensions ]; then
xnu_mkext /System/Library/Extensions.mkext
else
xnu_kextdir /System/Library/Extensions
fi
if [ -f /Extra/Extensions.mkext ]; then
xnu_mkext /Extra/Extensions.mkext
fi
if [ -d /Extra/Extensions ]; then
xnu_kextdir /Extra/Extensions
fi
if [ -f /Extra/devtree.txt ]; then
xnu_devtree /Extra/devtree.txt
fi
if [ -f /Extra/splash.jpg ]; then
insmod jpeg
xnu_splash /Extra/splash.jpg
fi
if [ -f /Extra/splash.png ]; then
insmod png
xnu_splash /Extra/splash.png
fi
if [ -f /Extra/splash.tga ]; then
insmod tga
xnu_splash /Extra/splash.tga
fi
fi
}
menuentry "Mac OS X (on /dev/sdc3)" {
insmod hfsplus
set root=(hd2,3)
search --no-floppy --fs-uuid --set 11f705d93d3c7cac
insmod vbe
do_resume=0
if [ /var/vm/sleepimage -nt10 / ]; then
if xnu_resume /var/vm/sleepimage; then
do_resume=1
fi
fi
if [ $do_resume == 0 ]; then
xnu_uuid 11f705d93d3c7cac uuid
if [ -f /Extra/DSDT.aml ]; then
acpi -e /Extra/DSDT.aml
fi
xnu_kernel /mach_kernel boot-uuid=${uuid} rd=*uuid
if [ /System/Library/Extensions.mkext -nt /System/Library/Extensions ]; then
xnu_mkext /System/Library/Extensions.mkext
else
xnu_kextdir /System/Library/Extensions
fi
if [ -f /Extra/Extensions.mkext ]; then
xnu_mkext /Extra/Extensions.mkext
fi
if [ -d /Extra/Extensions ]; then
xnu_kextdir /Extra/Extensions
fi
if [ -f /Extra/devtree.txt ]; then
xnu_devtree /Extra/devtree.txt
fi
if [ -f /Extra/splash.jpg ]; then
insmod jpeg
xnu_splash /Extra/splash.jpg
fi
if [ -f /Extra/splash.png ]; then
insmod png
xnu_splash /Extra/splash.png
fi
if [ -f /Extra/splash.tga ]; then
insmod tga
xnu_splash /Extra/splash.tga
fi
fi
}
### END /etc/grub.d/10_os-prober ###
### BEGIN /etc/grub.d/11_linux ###
menuentry "Ubuntu, Linux 2.6.31-20-generic" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd1,2)
search --no-floppy --fs-uuid --set c8bb670b-35e3-493c-bde8-9f9555942b61
linux /boot/vmlinuz-2.6.31-20-generic root=UUID=c8bb670b-35e3-493c-bde8-9f9555942b61 ro quiet splash
initrd /boot/initrd.img-2.6.31-20-generic
}
menuentry "Ubuntu, Linux 2.6.31-20-generic (recovery mode)" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd1,2)
search --no-floppy --fs-uuid --set c8bb670b-35e3-493c-bde8-9f9555942b61
linux /boot/vmlinuz-2.6.31-20-generic root=UUID=c8bb670b-35e3-493c-bde8-9f9555942b61 ro single
initrd /boot/initrd.img-2.6.31-20-generic
}
menuentry "Ubuntu, Linux 2.6.31-14-generic" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd1,2)
search --no-floppy --fs-uuid --set c8bb670b-35e3-493c-bde8-9f9555942b61
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=c8bb670b-35e3-493c-bde8-9f9555942b61 ro quiet splash
initrd /boot/initrd.img-2.6.31-14-generic
}
menuentry "Ubuntu, Linux 2.6.31-14-generic (recovery mode)" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd1,2)
search --no-floppy --fs-uuid --set c8bb670b-35e3-493c-bde8-9f9555942b61
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=c8bb670b-35e3-493c-bde8-9f9555942b61 ro single
initrd /boot/initrd.img-2.6.31-14-generic
}
### END /etc/grub.d/11_linux ###
### BEGIN /etc/grub.d/12_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.
menuentry "Chameleon1" {
set root=(hd2,1)
exit
}
menuentry "Chameleon2" {
set root=(hd2,1)
multiboot (hd2,1)/boot
}
menuentry "Mac OS X Chameleon" {
insmod hfsplus
search --file --set=root /boot
multiboot /boot
}
menuentry "Mac OS X Chameleon" {
insmod hfsplus
set root=(hd2,2)
multiboot /boot
}
menuentry "MacOS X, chameleon, multi" {
insmod hfsplus
set root=(hd2,2)
multiboot /boot
}
menuentry "MacOS X, chameleon" {
insmod hfsplus
search --file --set=root /boot
multiboot /boot
}
menuentry "MacOSX" {
insmod hfsplus
# Set the root device for Mac OS X's loader.
set root=(hd2,2)
# Load the loader.
chainloader /usr/standalone/i386/boot.efi
}
menuentry "MacOSX" {
insmod hfsplus
# Search the root device for Mac OS X's loader.
search --set /usr/standalone/i386/boot.efi
# Load the loader.
chainloader /usr/standalone/i386/boot.efi
}
### END /etc/grub.d/12_custom ###
### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###
Long story but really hoping that someone could give me answer how to get my grub working like real multibootloader should!
Please help me,
-samp0