Ubuntu – Ubuntu update caused system to freeze on boot at purple screen. Recovery mode fails and brings up BusyBox

bootfreezegrub2plymouthrecovery-mode

I've searched through existing questions, but nothing addresses my problem.

My system running Ubuntu 14.04 went through a partial-update a few days ago. Ever since, my system will not boot. It freezes on the purple screen. (plymouth?) When I attempt to boot to recovery, I get a "gave up waiting for root" error along with numerous libkmod errors.

I've booted from a liveCD and attempted some troubleshooting. I can mount the root partition from there and chroot over. I checked /var/log/boot and found 2 small failures – samba and ksplice – nothing that should prevent booting. I tried to reinstall grub with the following, after mounting the boot partition to /boot:

sudo grub-install --efi-directory=/boot /dev/sdc

Unfortunately, this produces the same libkmod errors that appear when I try to get to recovery. (I do have an efi, not BIOS)

Here's what recovery ends with:

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; Is /dev) 
ALERT! /dev/mapper/ubuntu--vg-root does not exist. Dropping to a shell! 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 2: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 3: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 4: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 5: ignoring bad line starting with '#'
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 2: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 3: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 4: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 5: ignoring bad line starting with '#'
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 2: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 3: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 4: ignoring bad line starting with '#' 
libkmod: ERROR ../libkmod/libkmod-config.c:686 kmod_config_parse: /etc/modprobe.d/zfs.conf line 5: ignoring bad line starting with '#'

I have ZFS installed, but the boot drive is not ZFS. I don't understand why commented out lines would be interpreted as bad.

Here's my fstab:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu--vg-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sdb2 during installation
UUID=10d83bf1-14a9-40bf-8ada-7ffbf6220bf9 /boot           ext2    defaults
  0       2
# /boot/efi was on /dev/sdb1 during installation
UUID=BD9B-EA73  /boot/efi       vfat    defaults        0       1
/dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0

And parted info for my boot drive:

Model: ATA Corsair CSSD-V32 (scsi)
Disk /dev/sdc: 32.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  538MB   537MB   fat32              boot
 2      538MB   794MB   256MB   ext2
 3      794MB   32.0GB  31.2GB                     lvm

I have no other OSes installed. I've tried to reinstall from the liveCD, but it does not recognize my existing install – even after I mount my root partition manually. I would prefer to avoid re-installing from scratch, and would really like to learn what is causing this for my own Linux knowledge betterment. Any help would be greatly appreciated.

Best Answer

When you chroot into your system, regenerate your initial RAM-disk.

It is likely that modules are missing causing this problem to occur.

update-initramfs -k all -c

Before chrooting, mount /dev, /proc and /sys inside chroot:

mount -t proc /proc /mnt/proc
mount -o bind /dev /mnt/dev
mount -o bind /sys /mnt/sys

I'm assuming here that you mounted your disk to /mnt. From my experience such errors are in 90% related to missing modules in ramdisk.

Also I'd suggest to continue the failed upgrade inside chroot using

dpkg --configure -a
apt-get -f install
apt-get upgrade
Related Question