16.04 VirtualBox VM (from vhd file) hangs at "non blocking pool is initialized"

I'm trying to boot Canonical's Azure 16.04 .vhd file in a VirtualBox VM and it hangs at "non blocking pool is initialized".

It works in Hyper-V, so it may only be a bug in virtual box (5.0.20).


This is long-standing bug in the images released by Canonical.

  • https://bugs.launchpad.net/cloud-images/+bug/1573095
  • https://bugs.launchpad.net/ubuntu/+source/livecd-rootfs/+bug/1546108

The grub configuration is trying to use a serial port, but when it is not there, it fails to handle this gracefully. So, either add a serial port or change grub not to requires it.

Three options here to get it to boot the first time:

  1. if the grub menu is available, you can edit the boot arguments to remove console=ttyS0
  2. you can also enable a serial port in VirtualBox
  3. you can mount the drive from another VM or via loopback device and remove console=ttyS0 from /boot/grub/grub.cfg

Two options to get it to boot thereafter:

  1. leave a serial port attached via VirtualBox
  2. override the GRUB_CMDLINE_LINUX_DEFAULT value in /etc/default/grub or /etc/default/grub.d/*.cfg to not include console=ttyS0, then run sudo update-grub and verify /boot/grub/grub.cfg has your changes.

I had this problem on actual machine and the fix was to enable "nomodeset" option for kernel. It is doing this because Ubuntu is trying to switch to a high resolution video mode for the console and your hardware isn't cooperating. To fix this

Fixing this while at the machine

When Grub2 shows up highlight the menu item for Ubuntu and press 'e'

Go to the line where it loads the kernel and press 'End' to go to the end of the line Add 'nomodeset'

Press F10 or Ctrl-X to boot it

Fixing this for good

Update the grub config file nano /etc/init/grub

Find the line that starts with GRUB_CMDLINE_LINUX_DEFAULT

Edit the line to include nomodeset, in my case, the line looked like this afterwards: GRUB_CMDLINE_LINUX_DEFAULT="nomodeset"

Save/exit nano Run update-grub Reboot