Solaris10 x86 mirror. Making second disk booteable when failure

grubsolarisx86x86-64

Did a mirror (RAID1) with Solaris 10 in x86. Everything OK. Now, I´m trying to make the second disk booteable, this is: from grub or in case of failure of disk1.

I edited /boot/grub/menu.lst:

#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Solaris 10 9/10 s10x_u9wos_14a X86 
findroot (rootfs1,0,a)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive
#---------------------END BOOTADM--------------------
#---------- ADDED BY BOOTADM - DO NOT EDIT ---------- 
title Solaris failsafe
findroot (rootfs1,0,a)
kernel /boot/multiboot -s
module /boot/amd64/x86.miniroot-safe
#---------------------END BOOTADM--------------------
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Solaris failsafe
findroot (rootfs1,0,a)
kernel /boot/multiboot kernel/unix -s
module /boot/x86.miniroot-safe
#---------------------END BOOTADM--------------------

#Make second disk booteable!!!!!!!
title alternate boot
findroot (rootfs1,1,a)
kernel /boot/multiboot kernel/unix -s
module /boot/x86.miniroot-safe

But is not working. In the BIOS, when I select "alternate boot" I get:

Error 15: 15 file not found

also, how to configure to GRUB to make the disk2 to boot in case of error in disk1?

Additionally, I did (but not related to GRUB):

eeprom altbootpath=/devices/pci@0,0/pci108e,5352@1f,2/disk@1,0:a

Here is the output of some commands that may help you:

/sbin/biosdev
0x80 /pci@0,0/pci108e,5352@1f,2/disk@0,0
0x81 /pci@0,0/pci108e,5352@1f,2/disk@1,0


ls -l /dev/dsk/c1t?d0s0
lrwxrwxrwx   1 root     root          50 Jul  7 12:01 /dev/dsk/c1t0d0s0 -> ../../devices/pci@0,0/pci108e,5352@1f,2/disk@0,0:a
lrwxrwxrwx   1 root     root          50 Jul  7 12:01 /dev/dsk/c1t1d0s0 -> ../../devices/pci@0,0/pci108e,5352@1f,2/disk@1,0:a


more /boot/solaris/bootenv.rc
setprop ata-dma-enabled '1'
setprop atapi-cd-dma-enabled '0'
setprop ttyb-rts-dtr-off 'false'
setprop ttyb-ignore-cd 'true'
setprop ttya-rts-dtr-off 'false'
setprop ttya-ignore-cd 'true'
setprop ttyb-mode '9600,8,n,1,-'
setprop ttya-mode '9600,8,n,1,-'
setprop lba-access-ok '1'
setprop prealloc-chunk-size '0x2000'
setprop bootpath '/pci@0,0/pci108e,5352@1f,2/disk@0,0:a'
setprop keyboard-layout 'US-English'
setprop console 'text'
setprop altbootpath '/pci@0,0/pci108e,5352@1f,2/disk@1,0:a'



cat /etc/vfstab 
#device         device          mount           FS      fsck    mount   mount
#to mount       to fsck         point           type    pass    at boot options
#
fd      -       /dev/fd fd      -       no      -
/proc   -       /proc   proc    -       no      -
#/dev/dsk/c1t0d0s1      -       -       swap    -       no      -
/dev/md/dsk/d1  -       -       swap    -       no      -
/dev/md/dsk/d0  /dev/md/rdsk/d0 /       ufs     1       no      -
/devices        -       /devices        devfs   -       no      -
sharefs -       /etc/dfs/sharetab       sharefs -       no      -
ctfs    -       /system/contract        ctfs    -       no      -
objfs   -       /system/object  objfs   -       no      -
swap    -       /tmp    tmpfs   -       yes     -


df -h
Filesystem             size   used  avail capacity  Mounted on
/dev/md/dsk/d0         909G    11G   889G     2%    /
/devices                 0K     0K     0K     0%    /devices
ctfs                     0K     0K     0K     0%    /system/contract 
proc                     0K     0K     0K     0%    /proc
mnttab                   0K     0K     0K     0%    /etc/mnttab
swap                    14G   972K    14G     1%    /etc/svc/volatile
objfs                    0K     0K     0K     0%    /system/object
sharefs                  0K     0K     0K     0%    /etc/dfs/sharetab
/usr/lib/libc/libc_hwcap1.so.1
           909G    11G   889G     2%    /lib/libc.so.1
fd                       0K     0K     0K     0%    /dev/fd
swap                    14G    40K    14G     1%    /tmp
swap                    14G    28K    14G     1%    /var/run

Best Answer

On an x86 system you have to tell the BIOS to use the second disk before you boot into grub. This can be done in ILOM according to http://docs.oracle.com/cd/E19860-01/E21549/z40015871020900.html or you can push the F2 key (or CTRL-e if you do this through the serial console) during bootup to enter the BIOS settings.

On the Solaris side of things you don't need any special entries in menu.lst for booting from the alternate disk. The error you are getting means that grub couldn't find the boot signature rootfs1 on partition 2, slice a (root partition), something you probably didn't want to do. The second parameter of findroot is not the drive number but the number of the partition (starting at 0).

Now, in the case you want to boot grub from the primary disk and then use it to boot the system from an alternate disk, you can use the root command in menu.lst which allows you to set a drive (Shamelessly stolen from http://it.toolbox.com/wiki/index.php/Solaris_x86_root_filesystem_mirroring):

title alternate boot
root (hd1, 0, a)
kernel /boot/multiboot kernel/unix -s
module /boot/x86.miniroot-safe