Cannot find root device after latest kernel upgrade

Solution 1:

Ok, first of all, there is tons of scruff in your kernel list, purge them:

sudo apt-get purge linux-image-2.6.* linux-image-3.0.* linux-image-3.2.*

The problems seems to have different causes, from software to hardware, but some of them doesn't apply to you since you are able to boot other kernels. So, what to do?

While you use other kernels, remove and reinstall the both new kernel:

 sudo apt-get clean
 sudo apt-get purge linux-image-3.8.0-31-generic linux-image-3.8.0-32-generic
 sudo apt-get install linux-image-generic

The first line will remove kernel packages in the local cache and make sure you have enough free space to install new kernels.

Now, if you see this block:

Gave up waiting for root device. Common problems:
- Boot args (cat /proc/cmdline)
  - Check rootdelay= (did the system wait long enough?)
  - Check root= (did the system wait for the right device?)
- Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/disk/by-uuid/a0c70102-b5d8-4b82-a14c-225330e1c4d4 does not exist. Dropping to a shell!


BusyBox v1.13.3 (Ubuntu 1:1.13.3-1ubuntu11) built-in shell (ash)
Enter 'help' for a list of built-in commands.

(initramfs) _ 

Then here the common "solutions" with their causes:

  1. You attempted to fix the issue using rootdelay=, sadly that doesn't work in your case, since the problem could be elsewhere.

    /boot/vmlinuz-3.8.0-31-generic root=UUID=c690c1e6-beb9-46e7-85c2-145cd07d44ac rootdelay=120 ro quiet splash
  2. If you are using a RAID (doubtful since other kernels boot) this could cause problems. Mooving the partition to a non-raid filesystem should do the trick. Or checking if /etc/initramfs-tools/modules has the correct modules then running sudo update-initramfs -u.

  3. While you use (initramfs) built-in shell, you could type exit and should boot too. Again, problems is elsewhere.

  4. Bad filesystems could cause this. Running fsck from a live system should help.

  5. If you remove quiet splash you could get even more details about what exactly fails. If you experience this issue, remove the quiet splash from your grub script, that would really help.

  6. You might have simply forgotten to install linux-image-extra-X.YY.Z-PP for your kernel version, or the install is incomplete for some reason (rc in output of dpkg -l | grep linux-image). The fierce thing is that /boot/initrd.img-X.YY.Z-PP will get built in both cases, but for your hardware the extra modules in linux-image-extra might be absolutely necessary. In this case, you will have to interpret "Cannot find root device" as "Cannot find needed extra drivers or modules".

This are some tips I collected here and there, if you experience the same problem, please use the 5 tip and give full output of the kernel messages.