Ubuntu 16.04 fails on reboot on VMware Fusion

I’ve been having this strange problem with Ubuntu 16.04 in VMware Fusion where it eventually fail with a graphics mode failure, it was horrible to debug but this is what helped:

  1. First when you have this kind of hang, see if you can get just a terminal windows with CTRL-ALT-F1. Now this is tricky on the new MacBook Pro’s with touch screens, but basically you hold the FN-CTRL-OPT F1. This should get you to a terminal window and you can login in character mode.
  2. Now you can check the /var/log/syslog to see what happened. In this case, look for Failed and you will see that Light Display Manager does not start
  3. First you should remove the quietness when Linux is starting, so you can at least see the error messages.
  4. You should edit the /etc/default/grub and remove “quiet splash” from theGRUB_CMDLINE_LINUX_DEFAULT line. Then run `sudo update-grub` and try to reboot. In many cases, this can be solved by making sure you are up to the latest version with `sudo apt-get upgrade` and then do see what you get, with things like Light Display Manager, you will often see packages held back.
  5. What is happening is that there is a deep change to a package and you can’t simply update it, instead, you use `sudo apt-get dist-upgrade` and this will handle dependencies. For instance this most often happens when there is a deep change in the kernel images say `linux-image-4.4.0-generic` gets bumped, then the packages that need it says `linux-image-generic` also needs a bump, so `dist-upgrade` handles this. You often see this `packages held back` which means that there was a deep update particularly in something like `xserver-xorg-*`
  6. Now this thing can cause big problems, so most of the time do a simple apt-get upgrade. Then just reboot and pray.

In this case, we see that Light Display Manager failed to start. At first I thought it was because of some problem with VMware, but now I can see that it was more likely a deep dependency in X11 server which runs the graphical interface.