56

When you boot from live CD, or doing the first boot after installing Ubuntu, splash screen looks awesome. But as soon as you enable nvidia-current driver, installed with apt-get, splash screen goes all crazy.

With crazy I mean that resolution is very low, font(I assume) is very weird and it all looks like it's been broken.

This happened with 10.04 and now again with 10.10.

How do I fix splash screen after enabling nvidia drivers?

Jorge Castro
  • 71,754
neziric
  • 869
  • 1
    In X my resolution is set do 1600x900, but with sudo hwinfo --framebuffer or in grub's console, the maximum resolution is 1152x864. Anyone can tell me why is that???

    Thankx

    –  Feb 16 '11 at 21:20
  • It also happened in 12.04, but instead I have an ATI driver – Emerson Hsieh May 24 '12 at 23:56
  • I only get a flash with nvidia's logo for about 1 aec and then it's all normal. – Alvar Jun 06 '13 at 07:53
  • Be really careful with this if you set an ATA password. I did and for whatever reason it repeatedly crashed trying to read a disk it should have been waiting a password for... – MrMesees Jan 02 '18 at 23:36
  • Above comments based on xenial 16.04, not 10.04 or 10.10 – MrMesees Jan 03 '18 at 08:43

4 Answers4

57

That is easy. First of all:

sudo apt-get install v86d hwinfo
sudo hwinfo --framebuffer

This will show you your supported resolutions. Take note.

Then:

gksudo gedit /etc/default/grub

Search for - GRUB_GFXMODE=

below this you need to type: GRUB_GFXPAYLOAD_LINUX=1024x768 <- your-resolution-here

Save the file and then:

echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash
sudo update-grub2
sudo update-initramfs -u
user3243
  • 594
  • 2
    Is there a downside to doing this? – ændrük Oct 11 '10 at 16:54
  • I used to install cryptsetup instead of your second step. It works same. – Extender Oct 16 '10 at 07:58
  • 1
    It doesn't work for me, I'm using an NVIDIA 8600M. It used to work nicely with Maverick... – nerdy_kid Apr 27 '11 at 23:50
  • 2
    excellent, this works fine on 12.04 in case anyone was wondering – Anake Apr 28 '12 at 14:13
  • Yes this is not working in ubuntu 12.04 64 bit. I have a nVidia GT 240M. I followed this steps and now I got a ugly black splash screen. Please update this answer (if possible) so that it will work in ubuntu 12.04! – Ravi Jun 14 '12 at 15:18
  • This fix worked for me with an Nvidia GeForce GT 620 on Ubuntu 12.10, 64 bit. My actual screen resolution of 1600x900 was not available but the 1600x1200 looks much closer to 'normal' than what I was getting. – KD353 Dec 29 '12 at 04:52
  • I confirm this works in Ubuntu 12.04.2 LTS, I have GeForce 680 GTX. – karni Apr 13 '13 at 14:28
  • 1
    Just to confirm this also work with ubuntu 14.04 and nvidia, just ignore the hwinfo part since it is not available not... and everything is the same... – Mohammad ZeinEddin Apr 20 '14 at 17:47
15

The above solution might not work for you. In my case e.g. hwinfo doesn't show the supported resolutions. You can, however, get this information directly from grub.

Press c to get in the grub console and then enter insmod video_all followed by videoinfo to get the supported resolutions. If your native resolution is supported, use it. Also use it directly as shown (i.e. 1680x1050x32, so include the colordepth). Get back by pressing ESC.

When you have the supported resolution edit /etc/default/grub and the file to include these two lines:

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=1680x1050x32
GRUB_GFXPAYLOAD_LINUX=keep

Now run the following lines to make the splash show earlier and to actually commit the changes to grub.

echo "FRAMEBUFFER=y" | sudo tee -a /etc/initramfs-tools/conf.d/splash
sudo update-initramfs -u -k all
sudo update-grub

Hope this helps.

mniess
  • 10,546
  • 1
    No, hwinfo did not give the correct resolution, but I used the nearest - which works OK. I also tried pressing C while booting (tried Shift and Escape too) but couldn't get into Grub console. – neziric Oct 11 '10 at 20:00
  • 1
    If you don't get the regular grub-screen (where you can select which kernel or OS to boot) you have to hold SHIFT while booting. When you get the grub screen, you press C to enter the console. – mniess Oct 12 '10 at 22:44
  • Worked like a charm for me! In my case the command in grub console was 'videoinfo' and not 'vbeinfo' . – BrozzSama Mar 31 '14 at 16:37
  • Why is the supported resolution is very much lower than my actual resolution – ray Apr 28 '14 at 13:47
  • +1. But note that insmod video_all always returns "file « /boot/grub/i386-pc/video_all.mod » not available. On my Ubuntu 14.04.1. Also hwinfo is not available in repositories. – 1111161171159459134 Dec 12 '14 at 11:24
  • @1111161171159459134 the correct command is insmod all_video not insmod video_all – guttermonk May 30 '20 at 14:21
3

Here is a easy script to fix this: http://www.webupd8.org/2010/10/script-to-fix-ubuntu-plymouth-for.html

I don't know if this will change your alt+F2 problem as well


I think the problem is, that Nvidia GPUs need proprietary drivers that can't be built into the kernel, so they are loaded at a very late boot stage. So if I remember correctly, this script makes your computer load a generic vesa driver to show the splash screen. This actually makes your computer take longer to start (but I don't know if we're talking about seconds or milliseconds).

I personally wouldn't bother changing core parts of my system for an eyecandy, but as long as it works, it shure is nice.

sBlatt
  • 4,489
3

The above fixes didn't work for me, they didnt go far enough. I've tested this with 13.04 but the author on his blog used it for lower ubuntu versions. Original information from this blog: http://jechem.blogspot.be/2011/04/fix-plymouth-splash-screen-in-ubuntu-on.html

First install hwinfo by running the following command:

sudo apt-get install v86d hwinfo

After the installation run the following command and note down the highest resolution:

sudo hwinfo --framebuffer

For me this was Mode 0x0361: 1280x800 (+5120), 24 bits, next edit the following file:

gksu gedit /etc/default/grub

This will open the GRUB config file, we now look for GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" and change it with the following, change your resolution with mine and also add the color depth (for me 24 could be 16 or 32).

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset video=uvesafb:mode_option=1280x800-24,mtrr=3,scroll=ywrap"

Then find the following line (uncomment if needed) and change your resolution again, note that you don't include the color depth:

GRUB_GFXMODE=1280x800

Save and exit, next edit the following file:

gksu gedit /etc/initramfs-tools/modules

Scroll to the end of the file and add the following line, again add your resolution and the colordepth like you did before:

uvesafb mode_option=1280x800-24 mtrr=3 scroll=ywrap

Then in the terminal type the following commands and then reboot:

echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash
sudo update-grub
sudo update-initramfs -u

For me this fixed the problem, I tried all the other suggestions and scripts, none of them worked but this does, good luck!

DanFritz
  • 211
  • 2
  • 6