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:
* 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" SubVendor: "ATI ATOMBIOS" ... 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.
... GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset video=uvesafb:mode_option=1366x768-24,mtrr=3,scroll=ywrap" ... GRUB_GFXMODE=1366x768 ...
* 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
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.