The linux-image-*
packages that don't contain a kernel version number in their name are metapackages (see also this question). They work by providing no software directly, but instead always declaring the latest stable kernel provided for your Ubuntu release as a dependency. (Here's some more information on what dependencies are in general.)
This causes new kernels to be installed automatically when they are available (and does so without removing older kernels, so you can boot with an older kernel if something is broken for you in the newer one).
With all that said, the kernels linux-image-virtual
causes to be installed are (currently) the same ones as with linux-image-generic
. That is, in recent releases such as 14.04, Ubuntu no longer provides separate kernels for VMs. (But linux-image-virtual
still gives you a kernel and causes updated kernels to be installed; you don't have to install any other metapackage to make that happen.) Ubuntu 12.04 does have separate virtual kernel packages.
There is still a difference between linux-image-generic
and linux-image-virtual
, and that is that linux-image-generic
pulls in some extra kernel modules that may be considered nonessential, by depending not only on the latest linux-image-<VERSION>-generic
package, but also the latest linux-image-extra-<VERSION>-generic
package. In contrast, linux-image-virtual
depends on linux-image-<VERSION>-generic
but not on linux-image-extra-<VERSION>-generic
.
This fulfills (at least part of) the goal of having "the virtual machine kernel" be more lightweight.
Considering this, you might be confused by how a linux-image-extra-virtual
package still exists, even in Ubuntu 14.04. This works simply by declaring the linux-image-generic
metapackage as a dependency. Back when linux-image-extra-virtual
depended on actual linux-image-extra-<VERSION>-virtual
module-providing packages (i.e., back when such packages existed, such as in 12.04), it installed what was then a separate virtual kernel, plus the extra modules. Now there's no separate virtual kernel, so all linux-image-extra-virtual
needs to do is install the extra modules, which is achieved by making sure linux-image-generic
is installed.
linux-image-extra-virtual
is actually a transitional package in recent Ubuntu releases; it really only exists anymore so that old systems (e.g., 12.04) with linux-image-extra-virtual
have the necessary packages installed after being upgraded to newer systems (e.g., 14.04).
Sources:
There's a lot of documentation that hasn't been updated to reflect that linux-image-virtual
and linux-image-generic
provide the same kernels, in recent Ubuntu releases, which is why I've provided links to packages.ubuntu.com
to show the dependency relationships explicitly. (There's a slight bit of information in this question. Somewhere there are Ubuntu or Debian release notes that explicitly address this in more detail, I think.)
Or is the whole thing deprecated now?
That may be considered an accurate description of what has happened. The key point, though, is that this is not related to there being no actual kernel files provided directly by linux-image-virtual
; the linux-image-generic
metapackage doesn't provide them directly either.