I was trying to migrate a Solaris x86 VMware VM to Xen source, but after move all data and turn on the machine in XEN, I received this error message and a panic:
cannot mount root path
after some searches i found this solution in vmware communities, valid as well for me.
Let’s imagine you have changed the default boot disk, as well as the SCSI controller, you have moved from VMware with a specific SCSI device to XEN with another different SCSI device, but your bootarchive looks like it was yet installed in the old disk and SCSI device, you must clean these references and update it
- Boot in single user mode (add -s after kernel$ line in grub)
- Allow it to mount the root disk (under /a, the default), or mount it by yourself
- Run “mount” and note the /devices/… path used for the root disk. It can be something like:/devices/pci@0,0/pci1000,30@10/sd@0,0:a I’ll use XXX to represent your pathname after /devices/ below just in case (e.g. XXX=/pci@0,0/pci1000,30@10/sd@0,0:a in my case)
- vi /a/boot/solaris/bootenv.rc
- update property “bootpath” (from above): setprop bootpath XXX. in my case it was: setprop bootpath /pci@0,0/pci1000,30@10/sd@0,0:a
- cp /etc/path_to_inst /a/etc/path_to_inst
- rm /a/etc/devices/*
- update bootarchive: bootadm update-archive -R /a
- Edit /etc/vfstab and update the line of root disk. Replace the /dev/dsk/??? path with /devices/XXX, and replace the /dev/rdsk/??? path with /devices/XXX,raw (e.g. /devices/pci@0,0/pci1000,30@10/sd@0,0:a,raw). This is necessary because before device reconfiguration occurs the kernel will try to see if the / filesystem needs checking, by reading /etc/vfstab, but until reconfiguration occurs there is no /dev entry for the / filesystem. So you need to use the absolute /devices path until reconfiguration can be performed and a /dev alias path is created.
- Reboot
- At the Grub screen where you choose the kernel you want, select the normal kernel, but press ‘e’ to edit it.
- Move down to the 2nd (kernel) line, and type ‘e’ to edit it Append “-r -s” to force device reconfiguration and boot single-user, then press Return, to return to the previous screen
- Type ‘b’ to boot this temporarily-modified configuration
- When you enter single-user, do an ls -l /dev/dsk to find the c?txdxsx disk that corresponds to the /devices path you are using. It’s probably c2t0d0s0
- Touch up /etc/vfstab to use the /dev/* paths which correspond to your disk (don’t forget to update the swap entry as well, using the same txdxsx with the correct c? value for your disk).
- Type ^D to go to multi-user
Done! Be careful typing those long /devices path names!
But also your network interfaces have been changed and replaced with different models, so we must update your network configuration files. In my case, the network interface changed from rtls0 to pcn0 driver, so after recreate the /etc/path_to_ints and booting with kernel options -a(to recreate path_to_inst file) -r (check HW) and -s (single user), did the trick. In your case, maybe you must repeat deleting the path_to_inst file and boot with those three options (-a -s -r) one more time.
Remember to rename /etc/hostname.rtls0 to /etc/hostname.pcn0, or the device solaris will use.
Some steps found under http://communities.vmware.com/thread/99064