X86 Solaris boot failure

We had a power outage last weekend that seems to have done some very bad things to one of our x86 Solaris machines. It is refusing to boot, and dropping me to the "grub>" prompt when started. I can get it to recognize the multiboot kernel and module, and it will try to start booting, but it hangs almost immediately. These are the commands I'm entering and their results:

grub> find /boot/grub/stage1
 (hd1,0,a)
 (hd2,0,a)
 (hd4,0,a)

grub> root (hd1,0,a)

grub> kernel /platform/i86pc/multiboot kernel/unix
   [Multiboot-elf, <0x1000000:0x141eb:0x128f5>, shtab=0x1027258, entry=0x1000000]

grub> module /platform/i86pc/boot_archive
   [Multiboot-module @ 0x1034000, 0x5ed3800 bytes]

grub> boot

After I issue the boot command, the terminal tries to clear, the cursor goes back to top-left, and I see this on the top line:

                             eric_138889-08 32-bit     

and then the whole system hangs.

It's been long enough since I've poked Solaris that I have no idea what to do next to try and get this beast booted - can anyone give me some advice on where to go / what to try next?


Solution 1:

For ufs file system

1) boot from solaris media (DVD) in single-user mode

2) Mount the root file system to /a, e.g:

mount /dev/dsk/c0t0d0s0 /a

3)Install grub and update the boot_archive file on your boot disks:

cd /a/boot/grub

installgrub -fm stage1 stage2 /dev/rdsk/c0t0d0s0

4) update the boot_archive via bootadm command:

bootadm update-archive -fv -R /a

if you using zfs file system

1) boot from solaris media (DVD) in single-user mode

2) Import the ZFS root pool on the /a mountpoint

zpool import -R /a rpool

3) Mount the data set which contains the operating system

zfs mount rpool/ROOT/sol10-u10

4)Install grub and update the boot_archive file on your boot disks:

cd /a/boot/grub

installgrub -fm stage1 stage2 /dev/rdsk/c0t0d0s0

5) update the boot_archive via bootadm command:

bootadm update-archive -fv -R /a