181

Currently I'm running Linux-3.0 and I want to update it to Linux-3.3.1 the latest stable kernel release as mentioned at http://www.kernel.org. Can I update to 3.3.1 in Ubuntu without any risk of crashes? I'm updating my kernel regularly as provided by the Update Manager..Currently I have Linux-3.0.0.17..Can I update?

NOTE:

The latest kernel version any user is supposed to use in Ubuntu is updated automatically via the Update Manager, so no action is normally required by user regarding kernel upgrades. What the question author is referring to is mainline kernel, see: Should I upgrade to the "mainline" kernels?

Suchith JN
  • 2,161

17 Answers17

147

The simplest set of instructions I always used for kernel upgrade / downgrade are by ubuntuforums.org user by the name of lykwydchykyn (url modified by me for this post):

  1. Go here: http://kernel.ubuntu.com/~kernel-ppa/mainline/
  2. Download 3 (maybe 4) debs to a folder somewhere:

    linux-headers-VERSION-NUMBER_all.deb
    linux-headers-VERSION-NUMBER_amd64.deb
    linux-image-VERSION-NUMBER_amd64.deb
    linux-image-extra-VERSION-NUMBER_amd64.deb   # if available
    
  3. Install the debs with whatever package manager front-end you use (is gdebi still around?), or use these commands:

    cd /path/to/folder/where/you/put/the/debs
    sudo dpkg -i *.deb
    

Sources:

Jorge Castro
  • 71,754
Bucic
  • 4,044
  • 5
    for example here you find two versions for each architecture: lowlatency and generic, which to take? http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.14.1-trusty/ – rubo77 Aug 07 '14 at 02:42
  • No luck. I was coming from the 64-bit Utopic lowlatency kernel (3.16.0-31) in the standard repo. I upgraded to v3.16.7-ckt8 ( linux-image-3.16.7-031607-lowlatency_3.16.7-031607.201503111033_amd64.deb) which is running but still no trackpad. This is for an Acer C710. – Ubuntourist Mar 22 '15 at 23:58
  • I had touch pad problems. My default bios was set to advanced mode. It says in the bios there may be problems using advanced mode without a driver. However basic mode works well in ubuntu. Unfortunately, basic mode works terrible in windows! I hope this helps in the easy way. – Bhikkhu Subhuti Mar 04 '16 at 01:11
  • 1
    For completeness, in addition to @Bucic's steps -- (4) accept the new grub boot loader (1st option). This is probably what most people need. In case you would like to see exactly what changes, do a comparison to check, but it'll probably just rewrite your Grub conf file with the new kernel info you want. (5) reboot. Additionally, this is the much safer route, which will also upgrade your Linux version: sudo apt-get update && sudo apt-get dist-upgrade && sudo reboot. In either scenario, after rebooting, run echo $(uname -r) to confirm that you successfully booted into your new kernel. – Manuel J. Diaz Jun 01 '16 at 04:18
  • 1
    @rubo77 on lowlatency vs generic: http://askubuntu.com/questions/126664/why-to-choose-low-latency-kernel-over-generic-or-realtime-ones – Noremac Dec 12 '16 at 17:10
  • Can I do this in Kubuntu 16.10? I'm on 4.8.0-46-generic and I need 4.10.1 but in Kubuntu it will come with kubuntu 17.04 and backports I guess. – Hrvoje T Apr 11 '17 at 07:19
  • @Hrvoje yes you can, don't forget to also update the compiler(kmake) if necessary. recompiling kernel mods may also be necessary. – ravery Jun 18 '17 at 19:26
  • @Ubuntourist -- did you recompile the kernel modules? – ravery Jun 18 '17 at 19:28
  • last edit 2014; content still valid in 2018; +1 – Willi Mentzel May 04 '18 at 20:19
  • @WilliMentzel: not for me. I tried installing 5.9.12, then 5.9.10 and when booting, I keep getting "can't find command hwmatch", and that the kernel has an invalid signature. – Dan Dascalescu Dec 13 '20 at 08:43
  • 1
    Be aware that linux-image-extra-... meanwhile is called linux-modules-extra-.... – Wolfson May 05 '21 at 16:47
  • I simply hit this commant: 'sudo reboot' and the kernel in use changed to the most recent version – Abe Dec 19 '21 at 07:02
  • I suggest simplifying the 3rd point by using apt install ./*.deb. This will allow to remove mention of gdebi, and apt handles any potential dependencies. As a side note: it is important that the filename(s) should start with ./, otherwise apt wouldn't resolve that to a local file, and will try to download a remote package with that name instead. – Hi-Angel Dec 18 '22 at 15:10
86

You could always do the following:

apt-cache search linux-image

Pick the one you want and then do:

sudo apt-get install linux-image-your_version_choice linux-headers-your_version_choice linux-modules-extra-your_version_choice
Zoltán
  • 776
user118932
  • 871
  • 6
  • 2
  • 4
    That would not give a mainline kernel; rather, it would give an Ubuntu build (of the specified version number). – Eliah Kagan Jan 05 '13 at 09:17
  • 17
    Probably better than going with a mainline one though, since it's been massaged for the target OS. – quickshiftin Oct 02 '13 at 03:43
  • Worked like a charm in Debian 8. Thank you! – GTodorov Feb 02 '15 at 18:54
  • This loads up to lightdm for me, but my laptops keyboard and USB ports don't work. – Goddard Dec 02 '15 at 21:48
  • 11
    don't forget to install kernel headers too: sudo apt-get install linux-headers-[version]-generic. [version] should be the same as kernel version – mauek unak Feb 23 '16 at 20:49
  • I just crashed my system with a busy box boot. I think apt is not doing what it was supposed to do. It "recommended" other installs, but they did not work from the names suggested. And I think it did not install the headers a, extras and headers all. It also recommended me to auto remove on library. DO NOT TRY THIS. Find the latest version from the kernal site and then google how to install that version. Rc6 gave me this link (which will change in due time for you) http://www.yourownlinux.com/2016/03/how-to-install-linux-kernel-4-5-rc6-in-linux.html – Bhikkhu Subhuti Mar 04 '16 at 15:15
  • 1
    This entry should be changed so it also instructs the user to install the linux-image-extra package because without it some things might not work - like an USB keyboard you use for entering the password to decrypt your disk. – wojci Jan 01 '17 at 15:01
  • @EliahKagan Now days I've noticed the Ubuntu build of the mainline kernel appears in a day or two. So I think http://kernel.ubuntu.com/~kernel-ppa/mainline/ is appropriate one to use. – WinEunuuchs2Unix Jan 15 '18 at 02:06
29

My answer is, YES you can. The stable release was 3.4, but in this tutorial i use 3.3.1.

Ubuntu (32-bit) Generic PAE:

Run the following commands:

mkdir kernel\ v3.3.1-precise && cd kernel\ v3.3.1-precise
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/linux-headers-3.3.1-030301-generic-pae_3.3.1-030301.201204021435_i386.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/linux-headers-3.3.1-030301_3.3.1-030301.201204021435_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/linux-image-3.3.1-030301-generic-pae_3.3.1-030301.201204021435_i386.deb
sudo dpkg -i linux-*.deb 
sudo update-grub
sudo reboot now

Ubuntu (64-bit):

Run the following commands:

mkdir kernel\ v3.3.1-precise && cd kernel\ v3.3.1-precise
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/linux-headers-3.3.1-030301-generic_3.3.1-030301.201204021435_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/linux-headers-3.3.1-030301_3.3.1-030301.201204021435_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.1-precise/linux-image-3.3.1-030301-generic_3.3.1-030301.201204021435_amd64.deb
sudo dpkg -i linux-*.deb 
sudo update-grub
sudo reboot now

Enjoy!

penreturns
  • 5,950
  • i install the kernel 3.8.5-raring as you said on my Ubuntu 12.04. but now my OS is down and there is no cli or any grub menu. just thinking. – shgnInc Apr 02 '13 at 16:05
  • Good but needs to be updated. I recommend finding the version and then google how to install it. Click the pages until you find something like this. For rc6 I found this http://www.yourownlinux.com/2016/03/how-to-install-linux-kernel-4-5-rc6-in-linux.html – Bhikkhu Subhuti Mar 04 '16 at 15:17
20

Contrary to some answers here Ubuntu releases the new kernel within a day or two of the main kernel team. I used to upgrade the hard way like some of the answers here suggest but I found this is an easier way.

Implications of manually installing Kernels

Manually installing kernels requires extra work.

There are reasons why you want to install the latest mainline kernel:

  • A bug in the last Ubuntu LTS kernel update and you can't downgrade
  • You have new hardware not supported in the current Ubuntu LTS kernel update stream or HWE updates
  • You want a security upgrade or new feature only available in the latest mainline kernel version.

As of January 15, 2018 the latest stable mainline kernel is 4.14.13. At the time of writing many are interested to install it for protection against Meltdown security hole. If you choose to manually install it you should know:

  • Older LTS kernels will not get updated until they are greater than the main menu first option titled Ubuntu.
  • Manually installed kernels are not removed with the usual sudo apt auto-remove command. You need to follow this: How do I remove old kernel versions to clean up the boot menu?
  • Monitor developments in the older kernels for when you want to get back on the regular LTS kernel update method. Then delete the manually installed mainline kernel as described in the previous bullet point link.
  • After manually removing the newest mainline kernel run sudo update-grub and then Ubuntu's latest LTS kernel will be the first option called Ubuntu on Grub's main menu.

Finding the latest kernel

Go to (kernel.ubuntu.com - Kernel PPA Mainline) and press the End key:

Mainline kernel 1

Now click on the link 4.9.8 (or a newer one if available when you read this) and the following appears:

mainline kernel 2

Note the links with the black airbrush marks. These are the three we will download for Ubuntu 16.04 64-Bit using Intel or AMD processors.

Installing using Terminal

Open a terminal session with Ctrl+Alt+T and use:

cd ~/Downloads # Change to your downloads directory
ll linux*.deb  # Check if any previous downloads still exist
rm linux*.deb  # Use this command if any previous downloads found

Now switch back to the download screen above and single-click on all three of the .deb kernel downloads. After downloads complete (you'll see status in your browser) switch back to terminal session and use:

sudo dpkg -i linux*.deb
rm linux*.deb
sudo reboot

Voila! - you are running the latest kernel when the first option in grub boot menu is selected. Your older kernel versions are still available under grub's Advanced Options menu.

After installing the newest kernel a dozen times you will ask the question "How do I remove older kernel versions?" and you will find those answers here in Ask Ubuntu.

15

Late but new answer.

I will add some more information in my answer. Now my old kernel was linux-headers-4.8.0-53. To find out which kernel you have type uname -r in terminal. Now type this command to get list of available kernels.

apt-cache search linux-image

This will give you a very big output. Now chose one of them that you want to install and install it by following commands(Don't type these commands like this, replace the words kernal_version with the kernel version which you wish to install)

sudo apt-get install linux-image-kernal_version
sudo apt-get install linux-image-extra-kernal_version
sudo apt-get install linux-headers-kernal_version

Now in my case I choose linux-image-4.10.0-22-generic so my command will look like this

sudo apt-get install linux-image-4.10.0-22-generic 
sudo apt-get install linux-image-extra-4.10.0-22-generic
sudo apt-get install linux-headers-4.10.0-22-generic

Now in the end remove old kernel by command

sudo apt-get autoremove

Now when I first did it, I Don't know is it my hardware problem or because of removing the old kernel, but my laptop shows me black screen which happens to my laptop sometimes. Thus I remove it's battery and rebooted and typed the command. Also I don't suffer from my black screen issue any more.

uname -r

and it gives me

linux-image-4.10.0-22-generic

which means kernel is updated.

Gryu
  • 7,559
  • 9
  • 33
  • 52
  • 4
    Yoour black screen issue may be because you removed the kernel in use. After you install the new kernel, you have to reboot. Then remove old kernel. – ravery Oct 02 '17 at 03:05
  • 1
    Great answer. Although things have changed a little bit now, I had to change linux-image-extra into linux-modules-extra for version 4.18.0-22-generic to make this work. – deerchao Aug 27 '19 at 12:08
9

There is a much simpler way of doing this, and it's the way I use. Simply download the Ubuntu Mainline Kernel Updater script and run it from a terminal. It will download the .deb's for you, install the new kernel, and optionally remove the old one (not recommended) then optionally reboot.

Example output (copied from my terminal):

evilsupahfly@the-black-beast:~$ sudo KernelUpdateChecker -no-rc -r utopic
Run this command to install the new kernel
/tmp/kernel-update
root@the-black-beast:~# /tmp/kernel-update
Config Notes:
Rejecting Release Candidates
Accepting Latest Kernel
Accepting kernels compiled for utopic
Accepting kernels with a version higher than 3.15.0-031500-lowlatency

Information:
Origin: 
    http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.15.1-utopic
Kernel Version:
    3.15.1-031501
Release Date:
    2014/06/16 @ 18:41 (YYYY/MM/DD @ HH:MM)

Care to look at the change log? (y=Yes, n=No) (n)

(download output skipped)    

Greetings root
    I (the-black-beast) am now self aware and a sentient being, have a nice day.
    Oh and by the way SKYNET is now active.

Installing Linux 3.15.1-031501:

(installer output skipped)

The New Kernel looks to have been installed

WARNING: If the new kernel does not boot you may regret saying yes here.
Would you like to remove the current one? (y=Yes, n=No) (n): n

Are you ready to Reboot? (y=Yes, n=No) (n): n

Almost entirely automated, and completely problem free.

  • It was fine in 2014 when I posted the comment originally, however, since then, I've found it easier just to go with the answer @Bucic gave earlier - download the .debs to a folder (/home/evilsupahfly/Downloads/Kernels/X.XX-something/ in my case) and just do cd {.deb location} then dpkg -i *.deb in the terminal. No messing with PHP or SkyNet. – EvilSupahFly Jun 28 '20 at 20:02
7

Run the following Terminal commands to install a new Ubuntu mainline kernel.

sudo apt-get update
sudo apt-get install python-bs4 python-apt
cd /tmp
rm -rf medigeek-kmp*
wget https://github.com/medigeek/kmp-downloader/tarball/master -O kmpd.tar.gz
tar xzf kmpd.tar.gz
cd medigeek-*
python kmpd.py -d

The script is hosted at Github. Just press Enter instead of a number if you get stuck on a certain question in the Python script.

  • 3
    I'm the author of that script. I've just fixed it. Please file bug reports, most of the time programmers don't know bugs exist until someone files a report. :) – Savvas Radevic Jul 19 '13 at 19:29
  • What is the advantage of your script from just doing the install of the deb package like described by the best answer here? – rubo77 Aug 07 '14 at 02:27
  • I was just thinking of this type of tool since I crashed because apt did not install dependencies for me. You would think that apt was all about dependencies. Wrong. A script can be updated for the latest release or search for one and let the user choose. All that said, if I get my system up again, I will go direct since I found the terminal commands for rc6 – Bhikkhu Subhuti Mar 04 '16 at 15:21
  • @SavvasRadevic ImportError: No module named apt_pkg – Yahya Mar 11 '19 at 10:37
  • @Yahya try installing python-apt apt install python-apt – Savvas Radevic Mar 23 '19 at 16:29
  • 1
    @SavvasRadevic I already did, but just reporting as per your request. – Yahya Mar 23 '19 at 20:42
7

I wrote a script and always will be up to date.

ukupgrade: Ubuntu Kernel Upgrade

  • Open your favorite terminal and run the follwing commands
  • Give executable permission to file

    chmod +x ./ukupgrade

  • Call the script

    ./ukupgrade

muhasturk
  • 3,476
  • 3
  • 13
  • 9
7

If you don't want to go through the hassle to manually upgrade the kernel you can try UUKU. Works fine even on Ubuntu derivatives like elementory, mint.

I used it to fix my WiFi issue as sometimes some new hardware won't be detected by old kernel. Other than hardware driver update I don't find the need to upgrade kernel. New kernels do have security and slight performance upgrade but also have tendency to break things like your VM.

sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install ukuu
ukuu-gtk

SOURCE:

http://www.makeuseof.com/tag/upgrade-kernel-ukuu-ubuntu/

http://www.teejeetech.in/2016/07/ukuu-v167.html?m=1

anonymous2
  • 4,298
ubu
  • 71
3

Another option is to try customized and optimized builds, such as this i3/i5/i7 optimized 3.2.1 kernel for Ubuntu:

DuoPetalFlower, My Experiments with Linux - 3.2.1 kernel

He also has Intel atom optimized builds which can work quite well if you're trying to squeeze every last ounce of performance out of a netbook.

There are other kernels like Liquorix that claim to be better optimized for desktop performance.

Though not recommended by some, you can often run official kernels from later versions of Ubuntu without issues. I'm currently running the 3.3.3 precise kernel on oneiric and my machine works better than ever. Performance & battery life increased, while temperatures dropped a few degrees. My issue of a black screen when resuming from standby has also disappeared. Though I personally haven't had issues from using newer kernels, you will find some people who are strongly opposed to doing this.

Veazer
  • 1,431
2

to install the latest kernel install Ubuntu Kernel Update Utility

$ sudo add-apt-repository ppa:teejee2008/ppa

$ sudo apt-get install ukuu

disable access control with the following command:

$ sudo xhost +

then install with ukuu

$ sudo ukuu

$ sudo ukuu --install-latest

then run for secure

$ sudo xhost -

and reboot

$ sudo reboot
2

As you've seen, Ubuntu does provide versions of the Linux kernel, but not always as fast as they are released upstream, you can always compile the 3.3.1 kernel yourself, but that may be more effort than you were looking for. If not, search around and I'm sure you'll find a tutorial you can follow such as this one. (note that I haven't checked that one thoroughly so be wary as kernels are dangerous beasts)

agc93
  • 709
2

I created this script kernel-upgrade.sh that downloads and installs a selected kernel from http://kernel.ubuntu.com/~kernel-ppa/mainline:

TMP=/var/tmp/kernel
mkdir -p "$TMP" && cd "$TMP"
rm -f "$TMP"/*
F=v4.16-rc6
V=4.16.0-041600rc6
R=$(wget -qO - "http://kernel.ubuntu.com/~kernel-ppa/mainline/$F/0005-debian-changelog.patch" | sed -ne '/^+linux/{s/.*\.\([0-9]\+\)).*/\1/p;q}')
B="$V.$R"
URL=http://kernel.ubuntu.com/~kernel-ppa/mainline
set -x
wget "$URL/$F/linux-headers-$V-generic_${B}_amd64.deb" \
    "$URL/$F/linux-headers-${V}_${B}_all.deb" \
    "$URL/$F/linux-image-$V-generic_${B}_amd64.deb"
sudo dpkg -i "linux-headers-$V-generic_${B}_amd64.deb" \
    "linux-headers-${V}_${B}_all.deb linux-image-$V-generic_${B}_amd64.deb"
# now enter: sudo reboot now

In case Ubuntu doesn't start with the new kernel, you can select "advanced settings" in your grub menu and select to start the last running kernel there.


Note: since 4.15-rc7 the kernel has the KPTI fix against meltdown attacks and since 4.15.1 for "Spectre Variant 2, Mitigation 2" (check with http://github.com/speed47/spectre-meltdown-checker/)

David Foerster
  • 36,264
  • 56
  • 94
  • 147
rubo77
  • 32,486
  • I'm having some difficulty running this script. I may be doing something wrong, so here are my steps: 1. Disabled secure boot in BIOS, 2. saved the script to kernel-upgrade.sh, and chmod 777 kernel-upgrade.sh. I then ran it as sudo ./kernel-upgrade.sh. I then get the errors: rm: cannot remove '/var/tmp/kernel/*': No such file or directory; then ++ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.16...Connecting to kernel.ubuntu.com (kernel.ubuntu.com)|91.189.94.216|:80... connected. HTTP request sent, awaiting response... 404 Not Found The 404 happens 3x – Leftover Salad Apr 14 '18 at 02:19
  • the first warning by rm could be ignored (I added rm -f now). the rest is not clear, what is the problem. truncating url here is not helping, solving the problem. can you post the output in https://pastebin.com/, so we can see what the resulting url would be? – rubo77 Apr 14 '18 at 16:41
  • sure, pasted over here https://pastebin.com/KcdVdKQr – Leftover Salad Apr 14 '18 at 20:36
  • also if it matters, I am running ubuntu 17.10 – Leftover Salad Apr 14 '18 at 21:04
  • It said this is the wrong path: http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.16-rc6/linux-headers-4.16.0-041600rc6-generic_4.16.0-041600rc6._amd64.deb check this for the right path: http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.16-rc6/ – rubo77 Apr 17 '18 at 21:28
  • I think the problem may be that the script is adding a sequence of numbers twice? It tries to get linux-headers-4.16.0-041600rc6-generic_4.16.0-041600rc6.201803182230201803182230_amd64.deb and it 404s. Though on the site I can see a url for linux-headers-4.16.0-041600rc6-generic_4.16.0-041600rc6.201803182230_amd64.deb. The constructed url in the script is the same as this except it repeats 201803182230 twice – Leftover Salad Apr 18 '18 at 06:20
  • feel free to edit this script so it works for you. SO has an edit function (if you have enough reputation) – rubo77 Apr 20 '18 at 08:35
  • cool, with a quick fix to the wget lines it works like a charm! ty! – Leftover Salad Apr 20 '18 at 23:46
2

None of the above answers satisfied my problem of manually update the kernel to the latest stable version. (My current laptop is very sensitive to RCs, Dell XPS 9365).

I created a shell script that searches for more recent kernel versions and shows them as options to be installed. You can give it a try, it's on github, please be sure to read the README.

1

Actually I found a really easy commandline interface for upgrading which is hassle free, its a single bash script called ubuntu-mainline-kernel Install:

apt install wget
wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh
chmod +x ubuntu-mainline-kernel.sh
sudo mv ubuntu-mainline-kernel.sh /usr/local/bin/

then for help

ubuntu-mainline-kernel.sh -h

or just checkout the README.md on the first link. Easy and doesn't install extra junk

CpILL
  • 113
1

There is a fork of UKUU, it is named Mainline, it is located at Github.
And installable from PPA as follows:

sudo add-apt-repository ppa:cappelikan/ppa
sudo apt-get update
sudo apt-get install mainline

And then it will be available as mainline (CLI) and mainline-gtk (GUI).

N0rbert
  • 99,918
0

Check Your Kernel Version $ uname -sr

Download Kernel v5 for 32 bit

$ wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.0/linux-headers-5.0.0-050000-generic_5.0.0-050000.201903032031_i386.deb
$ wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.0/linux-image-5.0.0-050000-generic_5.0.0-050000.201903032031_i386.deb
$ wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.0/linux-modules-5.0.0-050000-generic_5.0.0-050000.201903032031_i386.deb`

Download Kernel v5 for 64 bit

$ wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.0/linux-headers-5.0.0-050000-generic_5.0.0-050000.201903032031_amd64.deb
$ wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.0/linux-image-unsigned-5.0.0-050000-generic_5.0.0-050000.201903032031_amd64.deb
$ wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.0/linux-modules-5.0.0-050000-generic_5.0.0-050000.201903032031_amd64.deb`

Install it

$ sudo dpkg -i *.deb

Then Reboot

sudo reboot

Rishon_JR
  • 1,013
pranz
  • 1