### Fix boot splash screen (Plymouth) on Ubuntu

Plymouth is the Ubuntu application that displays the graphical splash screen when booting and shutting down the system[1]. It is long known that it has problems with proprietary Nvidia drivers. While on some computers it starts in low resolution mode, on others it works in text mode. It is claimed that this happens because Nvidia drivers load at a later point and are not available for GRUB and Plymouth[2]. Usually, Plymouth uses KMS (Kernel Mode Setting) to display graphics, but with proprietary drivers you must configure it to use framebuffer instead[3].

Here is what you will have to do. First, restart your system and hold Shift to display GRUB menu. Now press C to get to a command line. Things are now a bit different depending on your computer.

For an older BIOS based computer, write the following commands:
insmod vbe
vbeinfo
It will give you an output similar to this:
 vbeinfo example output
Here, look for you monitor's native resolution. If it is not there, look for the next smaller resolution. In my example, monitor native resolution is 1920x1080 (listed as Preferred mode) but Plymouth can only use maximum 1280x1024. I can only use a resolution from that list!

If you boot in UEFI mode, at the GRUB console write:
insmod video
videoinfo
The output will look like this:

 videoinfo example output

Remember the best resolution or make a photo of this screen, then press Esc to boot into the operating system. Besides resolution, keep in mind the UEFI driver (EFI GOP here and on most machines; there is also EFI UGA for Mac machines).

Let's tell GRUB to use the resolution and driver. Edit /etc/default/grub with root permissions (i.e. sudo gedit /etc/default/grub) and add the following lines[4, 5].

BIOS
GRUB_GFXPAYLOAD_LINUX="keep"
GRUB_VIDEO_BACKEND="vbe"
GRUB_GFXMODE="1280x1024x32"
UEFI
GRUB_GFXPAYLOAD_LINUX="keep"
GRUB_VIDEO_BACKEND="efi_gop"
GRUB_GFXMODE="1280x1024x32"
Replace 1280x1024x32 from my example with your resolution. Replace efi_gop with efi_uga if UGA has been detected by videoinfo.

Now we need to tell Plymouth to use framebuffer to display graphics. Open /etc/initramfs-tools/conf.d/splash with a text editor with root permissions and add this line:
FRAMEBUFFER=y
We're almost done. All that is left is to update GRUB and the kernel. Run the following commands:
sudo update-initramfs -u
sudo update-grub
Now you can reboot. You may still notice strange behavior. For example, on my computer, the Ubuntu logo appears for a short time, then it disappears and only the dots remain. But it's better than Plymouth in text mode.

References:
1. sambrightman. Plymouth on Ubuntu Wiki (CC-BY-SA 3.0).
2. BinaryTides. Fix low resolution grub and splash screen with Nvidia drivers on Ubuntu 14.04.
3. ArchLinux Wiki. Plymouth (GNU FDL).
4. If Not True Then False. Fedora 20 nVidia Drivers Install / Uninstall / Restore Plymouth.
5. Nolt. Answer on How to fix plymouth (splash screen) in all Ubuntu releases! at AskUbuntu (CC-BY-SA 3.0).