Fix boot splash screen (Plymouth) on Ubuntu

 Author:   Posted on:   Updated on:  2017-12-25T20:38:01Z
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].

Fix boot splash screen (Plymouth) on Ubuntu
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
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
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).

2 comments :

  1. Any idea how to get this working under VMware? sudo gedit won’t load and gives me some kind of a magic cookie error & a GKT error.

    gksudo gives me a popup window for my password but won’t allow me to enter the password. Any guidance would be appreciated. I can’t get anyone to help on Ubuntu Forums.

    ReplyDelete
    Replies
    1. Use a console text editor like nano or vim.

      Delete

Please read the comments policy before publishing your comment.