Point Release upgrade from 14.04.1 to 14.04.2?

I wanted to upgrade to 14.04.2 point release from 14.04. What I did was:

sudo apt-get update && sudo apt-get upgrade &&  sudo apt-get dist-upgrade -y

Then I wanted to upgrade to 3.16 kernel, since it wasn't done with the the above command, so what I did was:

sudo apt-get install linux-generic-lts-utopic xserver-xorg-lts-utopic libegl1-mesa-drivers-lts-utopic xserver-xorg-video-all-lts-utopic xserver-xorg-input-all-lts-utopic
sudo apt-get install linux-signed-generic-lts-utopic

Now when I do:

uname -a I get

Linux Y500 3.16.0-33-generic #44~14.04.1-Ubuntu SMP Fri Mar 13 10:33:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

cat /etc/os-release | grep VERSION= I get

VERSION="14.04.2 LTS, Trusty Tahr"

And when I do lsb_release -a I get

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.2 LTS
Release:    14.04
Codename:   trusty

I know that uname -a and lsb_release -a both refer to different info, but why does cat /etc/os-release | grep VERSION= show different version?


TL;DR: That series of HWE kernels actually came out before the 14.04.2 point release.

The real question here is, why does uname -v output #44~14.04.1-Ubuntu SMP Fri Mar 13 10:33:29 UTC 2015 on Ubuntu 14.04.2? That is, why does a 14.04.2 system receive HWE kernels whose build numbers are tagged 14.04.1?

Here's why your question boils down to that specific point:

  • lsb_release -a and cat /etc/os-release | grep VERSION= agree; they both say you have 14.04.2 (which you do). Therefore the only apparent discrepancy is between information given by uname about your kernel and information in both /etc/lsb-release and /etc/os-release about your system as a whole.
  • You ran uname -a, not uname -v. But uname -a prints all available information ever printed by uname (it is equivalent to uname -snrvmpio, when -i and -o are known). The output you're interested in is confined to the field confusingly called "the kernel version" in man uname.
  • Although it's sometimes called the "kernel version," it's really better to think of it as a build number--or build identifier, if you don't like calling non-numeric strings "numbers." The output of uname -v changes to enable users to distinguish kernels built as separate releases in a series, even if they are of the same underlying "kernel release" (uname -r).

The first step in understanding why your "kernel version" contains 14.04.1 and not 14.04.2 is to note that most kernel version strings, including for downstream Ubuntu kernels, don't contain any version information about the operating system as a whole. For example, on my 15.04 system:

ek@Io:~$ uname -v
#12-Ubuntu SMP Fri Apr 3 04:03:26 UTC 2015

This is the more common situation. The first word (#12-Ubuntu) indicates this is the twelfth downstream Ubuntu build of this particular kernel--or, in any case, that it is the twelfth in a series of builds, which may or may not consist entirely of kernels with the same uname -r.

An HWE kernel in Ubuntu contains numbers indicating a particular release of Ubuntu because it is backported from a later Ubuntu release and should be readily distinguishable from that Ubuntu release's builds. To distinguish HWE builds of Linux 3.16 provided through linux-generic-lts-utopic Install linux-generic-lts-utopic for Trusty from those provided through linux-generic Install linux-generic for Utopic, the Trusty builds contain 14.04.1 in the kernel version string.

Why not 14.04.2 instead of 14.04.1? (After all, the 14.04.2 release notes say "this point release contains an updated kernel and X stack..." The 14.04.1 release notes say no such thing.)

The reason is that linux-generic-lts-utopic Install linux-generic-lts-utopic--and the first of the packages it pulled in as dependencies to actually install a 3.16 kernel--was released for and installable on Trusty between the 14.04.1 and 14.04.2 point releases.

To check this, you can visit Ubuntu on Launchpad and search for the linux-generic-lts-utopic package, revealing linux-meta-lts-utopic as the underlying source package. Then clicking on "View full publishing information" or "View full change log" reveals the history of the package.

In particular, in the publishing history, note:

  • All entires list Trusty as the target, so this pertains to your system; we are not looking at packages for the wrong Ubuntu release.
  • The first packages considered stable, i.e., rolled out to users in the updates or security pockets (rather than just the proposed pocket) begin with 3.16.0.25.19 on 2014-12-11 01:25:33 UTC.

That is, linux-meta-lts-utopic came out for Trusty on December 11, 2014, which was ten weeks before the 14.04.2 point release on February 20, 2015. When these kernels came out, they were built for and tested on 14.04.1 systems, not 14.04.2 systems, so their builds were (and should thus probably remain, for consistency) numbered with the pattern #N~14.04.1-Ubuntu.


Mitch that's basically the same question that I asked you here before :) I also tried to figure it out.

I tried googling and visiting different forums including Ubuntu official sources and in conclusion this what we get:

Ubuntu 14.04.2 ships with default Utopic kernel and it is 3.16.0.30 (stable) e.g. from apt-cache policy I get kernel:

Installed: 3.16.0-30.40~14.04.1

linux-headers-3.16.0-30-generic:
  Installed: 3.16.0-30.40~14.04.1
  Candidate: 3.16.0-30.40~14.04.1

linux-image-extra-3.16.0-30-generic:
  Installed: 3.16.0-30.40~14.04.1
  Candidate: 3.16.0-30.40~14.04.1

And what I did I downloaded and reinstalled Ubuntu using official image from ubuntu.com when I tried to upgrade it the way you did I got the same kernel as you are now. I think that's because it installes the latest Utopic kernel but not the stable one for Trusty Tahr, because I still get 3.16.0.30 kernel version.