I've installed Debian Squeeze on my server several days ago. During install process installer asked me to provide USB flash drive with firmware aic94xx-seq.fw (file disappeared likely due to licensing, you can find it on adaptec site: http://www.adaptec.com/en-us/speed/scsi/linux/aic94xx-seq-30-1_tar_gz.htm). All went fine. Today I installed all updates to my system with "U" in aptitude. Aptitude installed kernel update 2.6.32-5 and created initrd accordingly. But now I can't boot up my system because it can't find LVM volumes on harddrive connected to Adaptec RAID card. How can I boot my system now? I have USB with firmware. I have netboot CD. Unfortunately when I tried to edit boot records in grub I found that there is no my old kernel anymore. The only kernel grub sees is the new vmlinuz kernel and new initrd How take make my server alive?
Getting to where you need to get to fix this is going to be tough. If the livecd has the adaptec driver you need, if you can keep it from loading the driver until after you mount the USB stick and copy the file to /lib/firmware/ a reasonably good livecd should be able to load the firmware automatically. If you can't get it to load the firmware automatically, you'll need to do it by hand according to the instructions at the bottom of this page, which would involve probably something like
echo 1 > /sys/class/firmware/something/loading cat /some/usb/folder/aicwhatever.fw > /sys/class/firmware/something/data echo 0 > /sys/class/firmware/something/loading
(You have 10 seconds from when the driver loads to do this, or else the driver fails to load.)
That should get the raid controller to work in the livecd. From there, you'll have to mount your drives and recreate your kernel's initrd/initramfs. This page has instructions on doing this for Squeeze's netinstall CD image, theoretically the process should be the same for an installed system. Based on the comments at the end of the firmware section of the install guide, you need to install a package of the firmware in order to keep the version up-to-date, if you don't then you're responsible for keeping a version of the firmware that matches the kernel version.
Did you try to re-create initrd with drivers provided with your controller? In theory it should be done automatically during kernel upgrade but sometimes it does not work with custom drivers.
If you need to boot from the raid controller, you will need to re-generate the initramfs (using
update-initramfs) with the firmware-file copied in /lib/firmware.
Then you can boot using this initramfs, and you should have the firmware available.
You should use the
-b option on update-initramfs, or mount the root fs (and dev/proc/sys) and chroot in the root fs. Otherwise it will update the initramfs from the bootable cd..
You'll need to boot into Rescue Mode, modify your /etc/fstab to comment out the offending filesystems, then boot normally and rebuild your initrd.
Maybe you are missing the
lvm2 modules? Try this:
- Boot rescue
lvm2packages to rescue (I can't remember if rescue does it automatically, probably yes but check it)
- Use the
lvm2commands and modules to be able to see your partition
Use pvscan, vgscan and lvscan to find the
lvm chain and mount it. From there you can use
chroot to change to your production system and use the initramfs tools to regenerate it. Be sure to include all modules, just for sure. Quick tip: after chrooting to the correct partition, use
su - to apply environment variables to the chrooted environment, makes the work easier.