while I was playing with a solaris 10 vm under VirtualBox , i changed the disk from port3 to port1 ,this should affect disk path to be (c0t0d0) ,before it was (c0t3d0).
So ,it is ok ,all i need is rebuild (/dev/dsk) and (/dev/rdsk) ,which I did
but still I get that error message and the vm will not boot.
till I found out there is file contains root disk ,this file is (/boot/solaris/bootenv.rc)
So ,I booted solaris in failsafe-mode and root-file-system is mounted under (/a) ,I edited (/a/boot/solaris/bootenv.rc) and corrected the disk as following :
setprop bootpath '/pci@0,0/pci8086,2829@d/disk@3,0:a'
I made it
setprop bootpath '/pci@0,0/pci8086,2829@d/disk@0,0:a'
So for any reason on Solaris 10 x86 ,and you changed disk path do these steps
1- boot from cdrom ( or boot in failsafe mood)
2- delete all under (/dev/dsk/* and /dev/rdsk/* ) ,mostly root will be mounted as (/a)
# rm /a/dev/rdsk*
3- delete or rename path_to_inst :
# mv /a/etc/path_to_inst /a/etc/path_to_inst.org
# touch /a/reconfigure ( so solaris will rebuild the file during boot )
3- rebuild device tree under affected root filesystem (/a)
devfsadm -r /a
4- check and confirm parameter (bootpath) inside file ( /a/boot/solaris/bootenv.rc) and confirm it points to the correct disk.
for example ls -l /a/dev/dsk/c0t0d0s0 is giving (/devices/pci@0,0/pci8086,2829@d/disk@0,0:a) , you just omit the (/devices) and put the rest inside file.
so , the line will be like
setprop bootpath ‘/pci@0,0/pci8086,2829@d/disk@0,0:a’
Hint: you may also need to edit (menu.lst) ,which is located (/a/boot/grub)to change disk locattion:
title Oracle Solaris 10 x86
example 1: root(hd0,a) <— disk 0 and slice 0 ( slices start with letter a)
example 2: root(hd1,a) <—– disk 1 and slice 0.