How to Install Latest Linux Kernel 4.8 on Ubuntu 16.04
Linux kernel 4.8 was released on October 2, 2016. This tutorial is going to show you how to install Linux kernel 4.8 on Ubuntu 16.04 LTS.
Hightlights in this release includes:
- Microsoft Surface 3 touchscreen support
- Supports AMD OverDrive technology, which means you can overclock your AMD graphics card with Linux kernel 4.8.
- The open source Nouveau driver now has initial support for Nvidia Pascal GPU architecture.
- Raspberry Pi 3 Broadcom BCM2837 SoC is supported.
- HDMI CEC (Consumer Electronics Control) is supported.
- Btrfs ENOSPC enhancements
Install Linux Kernel 4.8 on Ubuntu 16.04 LTS
Fire up a terminal window (CTRL+ALT+T) and run the following commands to download Linux kernel 4.8 header and Linux kernel 4.8 image binaries from Ubuntu website.
For 64 bits system:
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8/linux-headers-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8/linux-headers-4.8.0-040800_4.8.0-040800.201610022031_all.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8/linux-image-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb
Once the download is complete, install all of the above kernel packages with dpkg.
sudo dpkg -i linux*4.8*.deb
The Grub boot menu will be automatically updated during installation. Once they are installed, reboot your computer with the following command:
sudo shutdown -r now
The Ubuntu boot entry with Linux kernel 4.8 should be the first in Grub boot menu. To check your Linux kernel version, run this command:
uname -r

How to Remove Linux Kernel 4.8
If for any reason you want to uninstall it, then reboot your computer, select a previous kernel version from the Grub boot menu and run the below command to remove 4.8.
sudo apt remove 'linux-headers-4.8*' 'linux-image-4.8*'
How to Rescue the System When Linux Kernel Failed to Install
In rare cases, the Linux kernel might fail to install on the system, after Grub boot loader registered the new kernel. So next time, you can’t boot the system. If you have another Ubuntu-based Linux distro, either on the same computer or on another computer, you can copy the initrd.img and vmlinuz file to the unbootable system under the /boot/ directory, then it will boot successfully.
Install Latest Linux Kernel on Ubuntu LTS (Simple Method)
Ubuntu LTS often ships a stable Linux kernel but not the latest version. If you like to use a newer Linux kernel, run the following command. Replace 24.04 with the version of your Ubuntu system.
sudo apt install linux-image-generic-hwe-24.04
That’s it! As always, if you found this post useful, then subscribe to our free newsletter. Thanks for visiting!



Selecting previously unselected package linux-headers-4.8.0-040800.
(Reading database … 187154 files and directories currently installed.)
Preparing to unpack linux-headers-4.8.0-040800_4.8.0-040800.201610022031_all.deb …
Unpacking linux-headers-4.8.0-040800 (4.8.0-040800.201610022031) …
Selecting previously unselected package linux-headers-4.8.0-040800-generic.
Preparing to unpack linux-headers-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb …
Unpacking linux-headers-4.8.0-040800-generic (4.8.0-040800.201610022031) …
Selecting previously unselected package linux-image-4.8.0-040800-generic.
Preparing to unpack linux-image-4.8.0-040800-generic_4.8.0-040800.201610022031_amd64.deb …
Examining /etc/kernel/preinst.d/
run-parts: executing /etc/kernel/preinst.d/intel-microcode 4.8.0-040800-generic /boot/vmlinuz-4.8.0-040800-generic
Done.
Unpacking linux-image-4.8.0-040800-generic (4.8.0-040800.201610022031) …
Setting up linux-headers-4.8.0-040800 (4.8.0-040800.201610022031) …
Setting up linux-headers-4.8.0-040800-generic (4.8.0-040800.201610022031) …
Examining /etc/kernel/header_postinst.d.
run-parts: executing /etc/kernel/header_postinst.d/dkms 4.8.0-040800-generic /boot/vmlinuz-4.8.0-040800-generic
Error! Bad return status for module build on kernel: 4.8.0-040800-generic (x86_64)
Consult /var/lib/dkms/bcmwl/6.30.223.248+bdcom/build/make.log for more information.
Setting up linux-image-4.8.0-040800-generic (4.8.0-040800.201610022031) …
Running depmod.
update-initramfs: deferring update (hook will be called later)
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.8.0-040800-generic /boot/vmlinuz-4.8.0-040800-generic
run-parts: executing /etc/kernel/postinst.d/dkms 4.8.0-040800-generic /boot/vmlinuz-4.8.0-040800-generic
ERROR: Cannot create report: [Errno 17] File exists: ‘/var/crash/bcmwl-kernel-source.0.crash’
Error! Bad return status for module build on kernel: 4.8.0-040800-generic (x86_64)
Consult /var/lib/dkms/bcmwl/6.30.223.248+bdcom/build/make.log for more information.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.8.0-040800-generic /boot/vmlinuz-4.8.0-040800-generic
update-initramfs: Generating /boot/initrd.img-4.8.0-040800-generic
W: Possible missing firmware /lib/firmware/radeon/hainan_k_smc.bin for module radeon
W: Possible missing firmware /lib/firmware/radeon/oland_k_smc.bin for module radeon
W: Possible missing firmware /lib/firmware/radeon/verde_k_smc.bin for module radeon
W: Possible missing firmware /lib/firmware/radeon/pitcairn_k_smc.bin for module radeon
W: Possible missing firmware /lib/firmware/radeon/tahiti_k_smc.bin for module radeon
W: Possible missing firmware /lib/firmware/radeon/hawaii_k_smc.bin for module radeon
W: Possible missing firmware /lib/firmware/radeon/bonaire_k_smc.bin for module radeon
run-parts: executing /etc/kernel/postinst.d/unattended-upgrades 4.8.0-040800-generic /boot/vmlinuz-4.8.0-040800-generic
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 4.8.0-040800-generic /boot/vmlinuz-4.8.0-040800-generic
Generating grub configuration file …
Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
Found linux image: /boot/vmlinuz-4.8.0-040800-generic
Found initrd image: /boot/initrd.img-4.8.0-040800-generic
Found linux image: /boot/vmlinuz-4.4.0-36-generic
Found initrd image: /boot/initrd.img-4.4.0-36-generic
done
The following set of scripts makes this process MUCH easier:
https://github.com/mtompkins/linux-kernel-utilities
Thanks for the suggestion. Mark 🙂 Will look into it.