Getting the Nvidia distribution drivers installed with Ubuntu 14.10 and possibly later

So do to the fact that my HTPC died, and I didn’t want to restore the OS from a backup, I opted instead to install a fresh (and reasonably modern) version of Kubuntu. Once installed I quickly ran into problems with the binary video driver installation. Yes, yes, I realize that I could simply instruct Kubuntu (or Ubuntu) to utilize the Canonical tracked binary drivers, however they’re always generally behind quiet a few versions, and for this system I like running the bleeding edge.

So my adventure in Nvidia driver installation begins yet again, a road I’ve been down many times…

Assuming you’ve downloaded the latest binary driver from Nvidia and try to install it you’ll immediately run into problems with the binary installer complaining that:

  • X windows is still running
  • The Nouveau module is loaded
  • The compiler can’t be found
  • 32bit libraries are missing (assuming you’re running 64bit OS like I am)

By far the most frustrating of these is Nouveau. Listen I’m all for open software, however the reality is that Nouveau is a poor substitute for the real deal from Nvidia. Would it be great if Nvidia open sourced their driver? Hell yes, however since they’re not willing to I’m stick using it in a binary format… Anyways, below are the steps I’ve used (recently) to achieve success in installing this driver:

  • Obtain the latest driver from Nvidia
  • Remove the packages xserver-xorg-video-nouveau and xserver-xorg-video-all
sudo dpkg -r xserver-xorg-video-nouveau xserver-xorg-video-all
  • Install the linux-headers package matching your kernel and the dkms package
sudo apt-get install linux-headers-`uname -r` dkms
  • Install GCC and make packages
sudo apt-get install gcc make
  • Install 32bit OpenGL libraries (if you’re running 64bit OS)
apt-get install libgl1-mesa-dri:i386 libgl1-mesa-glx:i386
  • Modify your GRUB configuration to set nomodeset on boot
  • edit: /etc/default/grub and find the line starting with: GRUB_CMDLINE_LINUX_DEFAULT. This usually this looks like:
  • Add nomodeset to it:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"
  • Save the file and run update-grub
sudo update-grub
  • Reboot

Once rebooted make sure that X windows is shutdown. Usually if X is running on boot in Kubuntu or Ubuntu environments, it’s due to kdm, gdm, or lightdm

sudo stop lightdm

After that, try and run the nvidia binary driver installer and allow it to install the drivers. Hopefully all will go smoothly and your system will be ready to go. Once complete you can simply restart X windows:

sudo start lightdm

Good luck, and if you have problems feel free to let me know in the comments section!

Some thoughts about external journaling

As a general rule of thumb external journaling on ext4 / ldiskfs type file systems can and will greatly improve overall write performance. This is due to the fact that you’re off loading small (4K) writes to an external disk or array of disks. Couple that with the fact that these writes are linear and do not require you to move the heads around on the primary data target, great gains can be achieved (especially when performing sequential large I/O writes).

So this is all good right? Faster more optimized writes and the safety of having a journal, tracking all writes in the event of unexpected storage target failure or outage.

Except theres a problem… If your journal device experiences some kind of failure event, which results in journal record corruption or in-transit memory/CPU based errors things can go from good to very very bad quickly.

This is because, upon mount (either clean or unclean shutdown of the file system) the journal record is blindly replayed, regardless as to content. This means that if you have a corrupted transaction record within your journal, or the transaction record is corrupted in-flight (due to memory or CPU error) you are at risk of severe file system damage and likely data loss.

There is a solution, this is to either avoid external journaling (which only partially addresses the issue) or better, enable the journaling checksum feature (journal_checksum). This will go a long way to preventing corrupted data from reaching your file system and hopefully ensure that the file system structure remains undamaged.

Valve rocks, finally quality FPS for Linux!


After years of only being able to ‘work’ on my Linux desktop I’m finally able to play some of my favorite games again. These are provided by Valve through Steam for Linux.

I’ve noticed a few minor issues here and there (game locks up when changing resolutions and graphics detail, etc. but all and all it just works!

Oh how I’ve missed the Rats maps on counter-strike and half-life!