Long story short, trying to boot from a ZFS pool, grub's "find" command will fudge about the location of "menu.lst". Somehow it seems to hard code the location of that file.
I am skipping over some steps, but pkg install SUNWgrub will put files in "/rpool/ROOT/opensolaris/boot/grub" including stage1, stage2, some other files and a dummy menu.lst. Try to boot from this filesystem and get the "grub> " prompt. "find /boot/grub/menu.lst" returns "Error 15: File not found" but "find /boot/grub/stage1" will return "(hd0,0,a). "find" on any other file in "boot/grub" will also return "(hd0,0,a)" except when trying to find "menu.lst". If on the other hand I create "/rpool/boot/grub/menu.lst" and issue "find /boot/grub/menu.lst" then grub returns "(hd0,0,a)". The above is easy to setup: zpool create -f rpool c4d0s0 zfs set compression=on rpool zfs create -o mountpoint=legacy rpool/ROOT zfs create -o mountpoint=/a rpool/ROOT/opensolaris zpool set bootfs=rpool/ROOT/opensolaris rpool pkg image-create -f -F -a opensolaris.org=http://pkg.opensolaris.org /a pkg refresh pkg install SUNWgrub -- This message posted from opensolaris.org