Installing Newer Kernels in Ubuntu
As part of the ongoing TV streaming project i’m working on, I tried a new DVB-T tuner (the August DVB-T210). Whilst it is supported by the Linux TV project, support is only available in kernel version 3.14 and newer.
At the time of writing, Kernel 3.14 is so new that it only received a stable release a week ago. Naturally, no Linux distribution is providing this kernel as a default option yet as it is so new.
But what if you’re dependent on a new bit of hardware support or a new feature in a newer kernel? In the past, you would have needed to download the new source and compile the new kernel from scratch – not an easy process. Luckily though, Ubuntu provides pre-compiled, packaged kernels which can be easily installed! These are known as mainline kernels, instead of the default stable kernel which is part of the current version of Ubuntu.
These kernels are located at http://kernel.ubuntu.com/~kernel-ppa/mainline/. Then, find the kernel version you wish to install, in this case v3.14. The word after the version denotes which version of Ubuntu this kernel is meant for – at the moment 3.14 is only available for Trusty (Ubuntu 14.04). If you’re not running this version of Ubuntu, you can try installing the kernel, but things will likely break!
Inside the folder for the version you wish to install, you’ll find a multitude of files. First, decide on the variant of kernel you want – in most cases this will be generic. At this point, you should also know what platform you’re running on, most systems now are 64-bit, so you’ll likely want the amd64 platform.
Now, download the following files in to an empty directory;
For example, if I wanted the 3.14 generic 64-bit kernel, I would have downloaded;
Once downloaded, we need to install the new kernel packages. To do this, use the dpkg -i command. If you’ve downloaded the packages to an empty directory, you can simply run dpkg -i * to install all of them, otherwise you’ll need to specify each file after the dpkg -i command. Installing packages requires root privileges, so prefix the dpkg command with sudo if you’re not already root.
dpkg will now install the kernel for you and update your GRUB configuration so that next time you reboot, the new kernel is loaded instead of your current one. Once the installation is complete, just issue a reboot command and wait for your computer to reboot. While your computer is rebooting, pay careful attention to the GRUB screen, it should show your new kernel in the list of available boot options and it should also be the default.
Once the reboot is completed, check that the new kernel is loaded by running uname -a. This will output the current kernel version. For example, after installing the above packages, uname -a outputs;
Linux hostname 3.14.0-031400-generic #201403310035 SMP Mon Mar 31 04:36:23 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
This is all the confirmation we need that the kernel installation was successful. If the output does not match the kernel version, variant and platform you installed before, then the installation likely went wrong or another kernel version has taken precedence.
Of course, running a non-stable kernel does come with inherent risks. You’re now running a kernel which hasn’t been certified against the packages for that version of Ubuntu and you’re also now responsible for updating the kernel to receive bug and security fixes. Switching to the mainline kernel isn’t a decision that should be taken lightly and you should only do it if there’s a specific feature you need in a newer kernel.