I just had this problem. I caused the problem by changing the file system type on the root partition and then restoring the system files from backup.
The problem was caused by the fact that the initrd image did not have the proper driver for the new file system type, or that the root partition was listed with the wrong file system type.
The answer is to create a new initrd image. Here is what I did.
1) boot Linux from another partition or from a live CD.
2) mount the hard disk partition for the broken root file system to a temporary mount point.
3) mount the live /dev and /proc directories in the broken root file system.
4) use chroot to create a new environment on the broken root file system.
5) run mknitrd.
The following commands will fix a broken root file system on /dev/hda1.
Code:
mount /dev/hda1 /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
chroot /mnt /bin/bash
mkinitrd -d /dev/hda1 / ext3
mkinitrd -m ext3
I had previously been using the XFS file system for the root parition. I reformatted it in ext3 and then restored from backup. The new initrd image expects the root file system to be ext3 instead of XFS.
In your case you probably have to include some RAID module in the initrd. More information is available in the man page for mkinitrd.