How can I see what happens during the boot process?
When you get to Grub (hold left shift on boot), edit the top option by pressing e and search the boot command until you see the two words "quiet splash". Delete these from that line and press Control+X to boot.
This will show you what's happening behind the scenes (and what it's getting stuck on).
This is temporary. It will revert to the old behaviour on the next boot so it's fairly safe.
If you want to make it permanent, edit /etc/default/grub
as root, delete "quiet splash" from the GRUB_CMDLINE_LINUX_DEFAULT
variable, save and then run sudo update-grub
.
You can also use a program called Bootchart (click to install: bootchart and pybootchartgui) to plot a diagram of everything that's happening while booting. It will point out where most time is spent and whether there is anything seriously wrong.
This is what a typical bootchart looks like.