nVidia proprietary drivers and low-resolution Plymouth splash screen

Something I noticed immediately after installing the nvidia drivers in Ubuntu 10.04 was a low-resolution splash screen. This hasn’t bothered me too much in the past, but now that I’m using hard drive encryption it pushes the input box to the edge of the screen (and makes it ugly) as well as pushing the text above it off the screen. So I did some searching and happened about the following solution, which appears to have been tried by many users who report overwhelming success:

Original workaround posted April 26, 2010 by idyllictux (cleaned up for formatting)

* uvesafb required v86d package to be installed. hwinfo package is required for the next step as well.

sudo apt-get install v86d hwinfo

* Find out the supported resolution by using hwinfo:

sudo hwinfo --framebuffer

Sample output :

02: None 00.0: 11001 VESA Framebuffer
[Created at bios.464]
Hardware Class: framebuffer
Model: "(C) 1988-2005, ATI Technologies Inc. M92"
Vendor: "(C) 1988-2005, ATI Technologies Inc. "
Device: "M92"
Mode 0x0321: 640x480 (+2560), 24 bits
Mode 0x0322: 800x600 (+3200), 24 bits
Mode 0x0323: 1024x768 (+4096), 24 bits
Mode 0x03ee: 1366x768 (+1408), 8 bits
Mode 0x03ef: 1366x768 (+2752), 16 bits
Mode 0x03f0: 1366x768 (+5504), 24 bits
Config Status: cfg=new, avail=yes, need=no, active=unknown

* Edit /etc/default/grub to make sure we boot with uvesafb framebuffer. For the mode_option parameter change to your native screen resolution you see from running the above comment (if not just set to 1024x768-24 which is safest. Oh, Netbook user – please exercise some common-sense here) Non relevant lines are omitted for clarity.

<span style="font-family:Consolas, Monaco, 'Courier New', Courier, monospace;font-size:12px;line-height:18px;white-space:pre;">... </span><span style="font-family:Consolas, Monaco, 'Courier New', Courier, monospace;font-size:12px;line-height:18px;white-space:pre;">GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset video=uvesafb:mode_option=1366x768-24,mtrr=3,scroll=ywrap" </span>...

* Edit /etc/initramfs-tools/modules to include uvesafb by adding the following line.

uvesafb mode_option=1366x768-24 mtrr=3 scroll=ywrap

* Force the use of framebuffer:

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

(Note: What we’re doing here is creating the file /etc/initramfs-tools/conf.d/splash with the line FRAMEBUFFER=y. Feel free to use sudo then echo FRAMEBUFFER=y > /etc/initramfs-tools/conf.d/splash if you are more comfortable. tee is necessary when running as non-su. I wanted to know exactly what this command did in case I wanted to undo the changes.)

* Update and we are done :)

sudo update-grub2
sudo update-initramfs -u

My only change to this was to substitute the native resolution and color depth of my LCD panel as confirmed by hwinfo, specifically 1440×900-24. Everything else remained the same.

I was very skiddish about trying this as I have an encrypted hard drive, and if plymouth went south on me I wouldn’t be able to unlock my drive and fix it (easily). I was very happy to see that everything worked. Kudos to all involved. UPDATE: If you have an LVM/LUKS encrypted hard drive, you’ll be prompted for your hard drive password at a text-only prompt, so there’s no worry of a non-bootable system (at least for this reason) if you mess up the above.

, , ,