Because of the storms a couple of weeks ago, the harddrives in my one solaris box had failed. I bought a couple of new 500gb harddrives to replace the 80 that was in it. So I downloaded the newest update of Solaris 10 (update 7) and did the install. Everything worked perfect, then it rebooted. All I got was the “grub>” prompt. Nothing would let me boot it. I booted back off of the cdrom and updated the boot-archive, everything seemed fine, but it still would not boot off of the harddrive. So I tried to do it by hand at the grub> prompt:
grub> kernel /platform/i86pc/multiboot Error 18: selected cylinder exceeds maximum supported by bios
Great.. now what. It appears that you have to have the boot info in the first 1023 cylinders of the harddrive. Well this big 500GB harddrive has over 60,000+ cylinders on it. Guess what, the Solaris installer put the swap on 3-263 and then put the root on 58884 – some high number.. So obviously grub is going to have a problem.
So how do you fix this. There is 2 possible ways that I can think of and possibly a third.
The first would be for Sun to change the installer to not automatically place root at the end of the disk.
The second is when you are getting ready to do the install, pre-layout the disks using format from the command line.
The third is what I am trying, since the remaining of the disk has not been used yet, I am going to move the partitions around with dd. The first thing I did was delete the swap partition on slice 1. The second was to create a new temp partition on slice 3 that is the exact same size as slice 0. Now using dd I did the following:
dd if=/dev/dsk/c0d0s0 of=/dev/dsk/c0d0s3 bs=4096k
Hopefully this won’t take too long as the partition is only 15gb in size. You could have done the same thing with tar and have both partitions mounted. Once the dd finishes. I will delete the slice 0 and recreate it starting at cylinder 3 and give it the same size as it was before, and then dd the info back. Once that is done, delete the temp slice and recreate a swap partition. Hopefully this works.