By tdh on Feb 18, 2007
Okay, I just took the machine which has been running Fedora Core 4 for the longest time and installed Solaris Nevada b56 on it. And I had one of the most painful experiences ever with Solaris. The install went fine, but when it came up, GRUB dropped to a command line prompt and gave out:
error 17, cannot mount selected partition
When pushed with a 'cat /', it would also mention that it did not like partition type 0xbf.
I did everything, reboot the DVD, dropping into single user mode. I reinstalled GRUB, etc. No luck.
I thought it was my BIOS, I kept on changing the boot device. But that didn't make sense - it was at least booting into GRUB. In retrospect, it does. The BIOS would get the hard drive to boot, but GRUB had no idea about the very same hard drive that it was on.
Okay, I noticed that when I was booting in single user mode and when the bios was reporting the hard drives, that the single hard drive was on the 2nd IDE loop. I.e., it was /dev/dsk/c1d0s0. I checked /etc/vfstab, and it was slated to read from there.
I finally got mad enough and swapped the IDE cables - this took 10-15 minutes because the cables in my Shuttle SS51G are tight and I had to pull out the drive cage. Anyway, when I rebooted, I did get farther. It would go through the GRUB menu and reboot.
I got in single user mode and fixed up /etc/vfstab to use /dev/dsk/c0d0s0. Still no luck. A quick search turned up this goldmine: Swapping drives between Solaris machines. Okay, it wasn't as quick as I wanted, I had to go through several pages first. Anyway, I had suspected I had to touch 'devfsadm' and 'bootadm'. I was right.
I followed the instructions:
- Boot into Solaris Safeboot mode. You can get access at the Grub menu, usually the 2nd option. Note: I had to use the DVD install media to do this.
- Mount the found Solaris partition on /a Safeboot will usually find the slice on the disk with Solaris and ask if you want it to mount on /a. Select Yes.
- Move /a/dev, /a/devices, and /a/etc/path_to_inst to another name (I just append .orig) and then create new directories, (mkdir) /a/dev and /a/devices, and touch /a/etc/path_to_inst. I did not do this step.
- Run "devfsadm -r /a" to rebuild the device tree.
- Edit /a/boot/solaris/bootenv.rc and modify the line with "setprop bootpath '/pci@0,0....' to match the path you'll find mounted for /a (i.e. run a 'df -k' command, and you should see /a mounted from /dev/dsk/c1d0s0 or something, then run 'ls -l /dev/dsk/c1d0s0' or whatever your device listed was, and you should see the actual link point to ../../devices/pci@0,0/...) The path to bootpath you want should be the hard disk which is mounted as /a and you just need to find the expanded /devices/pci@0,0/... path and put that in the bootenv.rc file on the Solaris root filesystem on the hard disk (sans the /devices/ prefix of course). This is a key step.
- Now run "bootadm update-archive -v -R /a" to rebuild the boot-archive on /a.
- Make sure to edit /etc/vfstab
- run a 'touch /a/reconfigure'
- Run "cd /; sync; sync; sync; umount /a" And I skipped this one.
- and finally reboot.
The system came up.