MainlineBuilds

Differences between revisions 1 and 36 (spanning 35 versions)
Revision 1 as of 2010-07-20 12:55:59
Size: 5892
Editor: 193
Comment:
Revision 36 as of 2014-11-18 17:36:13
Size: 6437
Editor: penalvch
Comment: Due to LP#1387420 adjusted confusing wording on whether to install one or many packages.
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
Generally Ubuntu systems run with the stock Ubuntu kernels. However it is handy to be able to test with unmodified mainline kernels to help locate problems in the Ubuntu kernel patches, or to confirm that upstream has fixed the issue. To this end we now offer mainline kernel builds. These mainline kernels are made from unmodified kernel source but using the Ubuntu kernel configuration files. These are then packaged as Ubuntu .deb files for simple installation. = Introduction =
Line 7: Line 7:
We currently build four sets of mainline kernels,
two sets from Linus' tree, two sets from [[http://dri.freedesktop.org/wiki/DRM|DRM]]-development repositories, and one from a combined [[git://git.kernel.org/pub/scm/linux/kernel/git/smb/linux-2.6.32.y-drm33.z.git|v2.6.32.x/v2.6.33.y]] stable tree.
By default, Ubuntu systems run with the Ubuntu kernels provided by the Ubuntu repositories. However it is handy to be able to test with unmodified upstream kernels to help locate problems in the Ubuntu kernel patches, or to confirm that upstream has fixed the issue. To this end we now offer select upstream kernel builds. These kernels are made from unmodified kernel source but using the Ubuntu kernel configuration files. These are then packaged as Ubuntu .deb files for simple installation.
Line 10: Line 9:
From [[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary|Linus' tree]] we build:

 1. all formally tagged releases including -rcN
 2. the tip of the tree (master head) daily

The DRM-development builds are:

 1. the tip of the [[http://git.kernel.org/?p=linux/kernel/git/airlied/drm-2.6.git;a=shortlog;h=refs/heads/drm-next|drm-next]] head of Dave Airlie's [[http://git.kernel.org/?p=linux/kernel/git/airlied/drm-2.6.git;a=summary|drm-2.6]] repository daily
 2. the tip of the [[http://git.kernel.org/?p=linux/kernel/git/anholt/drm-intel.git;a=shortlog;h=refs/heads/drm-intel-next|drm-intel-next]] head of Eric Anholt's [[http://git.kernel.org/?p=linux/kernel/git/anholt/drm-intel.git;a=summary|drm-intel]] repository daily

For v2.6.32 kernel series, we build an additional set of kernels:
 
 1. tags from the combined [[http://git.kernel.org/?p=linux/kernel/git/smb/linux-2.6.32.y-drm33.z.git;a=summary|v2.6.32.x.y]] tree (by StefanBader) which is v2.6.32.x with DRM from 2.6.33.y
We currently build five sets of upstream kernels. All formal tags from Linus' tree and from the stable trees, plus:
 1. the daily tip of [[http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git|Linus' linux kernel source tree]],
 1. the tip of the [[http://cgit.freedesktop.org/~airlied/linux/log/?h=drm-next|drm-next]] head of Dave Airlie's [[http://cgit.freedesktop.org/~airlied/linux/|linux]] repository daily,
 1. the tip of the [[http://cgit.freedesktop.org/~keithp/linux/log/?h=drm-intel-next|drm-intel-next]] head of Keith Packard's [[http://cgit.freedesktop.org/~keithp/linux/|linux]] repository daily,
 1. the tip of the master branch of the debloat-testing tree daily,
 1. tags from the combined [[http://git.kernel.org/?p=linux/kernel/git/smb/linux-2.6.32.y-drm33.z.git;a=summary|v2.6.32.x.y]] tree (by StefanBader) which is v2.6.32.x with DRM from 2.6.33.y.
Line 26: Line 18:
= Upstream kernels archive =
Line 27: Line 20:
== Mainline Kernels Archive == The upstream kernels archive is located at the URL below. There is a directory for each build. Note, if you are testing for a bug, please do not use the daily folder, but use the latest mainline kernel at the top:
Line 29: Line 22:
The [[http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D|mainline kernels archive]] is located at the URL below, there is a directory for each mainline build:   [[http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=N;O=D|http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=N;O=D]]
Line 31: Line 24:
    {{{
http://kernel.ubuntu.com/~kernel-ppa/mainline
The tagged releases are found under a directory matching their tag name and which kernel configuration they were built with (<tag>-<series>). Daily releases are found in the {{{daily}}} sub-directory named for the date they were made.

Each build directory contains the header and image .deb files for the generic flavour i386 and amd64 architectures.

= Installing upstream kernels =

To boot into an upstream kernel you need to download and install the packages that corresponds to your architecture.

For example, let us use [[http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.14.4-utopic/]]. <<BR>> If you are using a 32-bit/i386 architecture, you would want those marked A. <<BR>> If you are using a 64-bit/amd64 architecture, B.
<<BR>> (Use generic kernel unless the issue is only reproducible in a lowlatency kernel).

{{{
B linux-headers-3.14.4-031404-generic_3.14.4-031404.201405130853_amd64.deb
A linux-headers-3.14.4-031404-generic_3.14.4-031404.201405130853_i386.deb
   linux-headers-3.14.4-031404-lowlatency_3.14.4-031404.201405130853_amd64.deb
   linux-headers-3.14.4-031404-lowlatency_3.14.4-031404.201405130853_i386.deb
AB linux-headers-3.14.4-031404_3.14.4-031404.201405130853_all.deb
B linux-image-3.14.4-031404-generic_3.14.4-031404.201405130853_amd64.deb
A linux-image-3.14.4-031404-generic_3.14.4-031404.201405130853_i386.deb
   linux-image-3.14.4-031404-lowlatency_3.14.4-031404.201405130853_amd64.deb
   linux-image-3.14.4-031404-lowlatency_3.14.4-031404.201405130853_i386.deb
Line 35: Line 47:
The tagged releases are found under a directory matching their tag name and which kernel configuration they were built with (<tag>-<series>). Daily releases are found in the {{{daily}}} sub-directory named for the date they were made.

Each build directory contains the header and image .deb files for the i386 and amd64 architectures, generic flavour.

== Mainline Kernel Mapping ==

In order to choose which is the closest mainline kernel to any particular Ubuntu release you can use the [[http://kernel.ubuntu.com/~kernel-ppa/info/kernel-version-map.html|Ubuntu to mainline mapping]] table, which contains mappings from Ubuntu releases and pockets to mainline versions.

Most likely that you want to download and test against the most [[http://kernel.ubuntu.com/~kernel-ppa/mainline/daily/current/|current]] version.

== Installing Mainline Kernels ==

To use the mainline kernel as-is you only only need to download and install the *image*.deb package that corresponds to your architecture, however if you need to build any external modules you also need the correct *header*.deb and *source*.deb packages.

To install, download the common headers, architecture specific headers, and the architecture specific image. For example for 2.6.27.15 we have the following files, for i386 you would need those marked with B and C, amd64 take those marked A & C:

    {{{
A linux-headers-2.6.27-02062715-generic_2.6.27-02062715_amd64.deb
B linux-headers-2.6.27-02062715-generic_2.6.27-02062715_i386.deb
C linux-headers-2.6.27-02062715_2.6.27-02062715_all.deb
A linux-image-2.6.27-02062715-generic_2.6.27-02062715_amd64.deb
B linux-image-2.6.27-02062715-generic_2.6.27-02062715_i386.deb
}}}

Once you have those downloaded they will need to be installed using dpkg:

    {{{
It is best to downloaded the files into a folder by themselves. Then, one may install all the packages simultaneously by executing the following in a terminal:
{{{
Line 65: Line 52:
When this process completes you should have a new entry on your boot menu representing the mainline kernel.  This will appear as an entry like this:

    
{{{
Ubuntu Intrepid, kernel 2.6.27-02062715-generic
When this process completes you should have a new entry on your boot menu representing the upstream kernel. This will appear as an entry like this:
{{{
Ubuntu Trusty, kernel 3.14.4-031404-generic
Line 71: Line 57:
== Uninstalling Mainline Kernels == The headers-<kernelname>_<architecture>.deb and headers-<kernelname>_all.deb packages allow one to build external modules.
Line 73: Line 59:
The mainline kernels have their own ABI namespace so they install side by side with the stock Ubuntu kernels (each kernel has a separate directory under /lib/modules/VERSION for example). This means that you can keep several mainline and Ubuntu stock kernels installed at the same time and select the one you need from the GRUB boot menu. == Problems installing an upstream kernel ==
Line 75: Line 61:
If you would like to uninstall a mainline kernel anyway, first use: /!\ Some have found issues installing an upstream kernel due to an error. For example: {{{
Error! Bad return status for module build on kernel: 3.7.0-030700rc2-generic (x86_64)
Consult /var/lib/dkms/virtualbox/4.1.18/build/make.log for more information.
}}} This would be due to a conflict with the installed software (VirtualBox, nvidia proprietary drivers, fglrx, wl, etc.). If possible, one would want to uninstall the conflicting package(s) first, then install the upstream kernel. This will allow you to test the upstream kernel, and provide another data point on if the removed software has a relationship to your problem.
Line 77: Line 66:
    {{{ = Uninstalling upstream kernels =

The upstream kernels have their own ABI namespace so they install side by side with the stock Ubuntu kernels (each kernel has a separate directory under /lib/modules/VERSION for example). This means that you can keep several mainline and Ubuntu stock kernels installed at the same time and select the one you need from the GRUB boot menu.

If you would like to uninstall an upstream kernel anyway, first use:
{{{
Line 82: Line 76:

    
{{{
{{{
Line 87: Line 80:
Remember that several packages belong to one kernel version: common headers, architecture specific headers and the architecture specific image. Remember that several packages can belong to one kernel version: common headers, architecture specific headers and the architecture specific image.
Line 89: Line 82:
<<Include(^Kernel/FAQ/DebuggingMainlineBuilds.*)>> = Mainline build tool chain =
Line 91: Line 84:
== Submitting to kerneloops.org == These kernels are built with the tool chain (gcc etc.) from the previous LTS (Ubuntu 8.04/10.04/12.04) depending on version. Therefore, out-of-tree kernel modules built with tools from other versions likely will not work. The file '''BUILD''' in later mainline builds detailing what was used.
Line 93: Line 86:
Ubuntu's default infrastructure for handling OOPSes will not work for these builds as they are external to Ubuntu. To contribute this information to kerneloops.org you will need to make a couple of changes. = Mainline kernel mapping to Ubuntu kernel =
Line 95: Line 88:
First, install the kerneloops-applet package which will handle the prompting and submission on any problem. Then edit /etc/kerneloops.conf and delete the ''submit-pipe'' line from the file, so that kerneloops-applet will be used. After a reboot
kerneloops-applet will then prompt you if there are any problems and you can choose to submit the information to kerneloops.org.
The Ubuntu kernel is not bit-for-bit the same as the mainline. However, one may find the upstream release that the Ubuntu kernel is based on via the [[http://people.canonical.com/~kernel/info/kernel-version-map.html|Ubuntu to mainline mapping]] table.

= Does the kernel team support the mainline kernel builds? =

The mainline kernels builds are produced for debugging purposes and therefore come with no support. Use them at your own risk.

Introduction

By default, Ubuntu systems run with the Ubuntu kernels provided by the Ubuntu repositories. However it is handy to be able to test with unmodified upstream kernels to help locate problems in the Ubuntu kernel patches, or to confirm that upstream has fixed the issue. To this end we now offer select upstream kernel builds. These kernels are made from unmodified kernel source but using the Ubuntu kernel configuration files. These are then packaged as Ubuntu .deb files for simple installation.

We currently build five sets of upstream kernels. All formal tags from Linus' tree and from the stable trees, plus:

  1. the daily tip of Linus' linux kernel source tree,

  2. the tip of the drm-next head of Dave Airlie's linux repository daily,

  3. the tip of the drm-intel-next head of Keith Packard's linux repository daily,

  4. the tip of the master branch of the debloat-testing tree daily,
  5. tags from the combined v2.6.32.x.y tree (by StefanBader) which is v2.6.32.x with DRM from 2.6.33.y.

This makes these kernels closer to the Lucid kernels which are based on 2.6.32 kernels with DRM backported from the 2.6.33 series.

Upstream kernels archive

The upstream kernels archive is located at the URL below. There is a directory for each build. Note, if you are testing for a bug, please do not use the daily folder, but use the latest mainline kernel at the top:

The tagged releases are found under a directory matching their tag name and which kernel configuration they were built with (<tag>-<series>). Daily releases are found in the daily sub-directory named for the date they were made.

Each build directory contains the header and image .deb files for the generic flavour i386 and amd64 architectures.

Installing upstream kernels

To boot into an upstream kernel you need to download and install the packages that corresponds to your architecture.

For example, let us use http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.14.4-utopic/.
If you are using a 32-bit/i386 architecture, you would want those marked A.
If you are using a 64-bit/amd64 architecture, B.
(Use generic kernel unless the issue is only reproducible in a lowlatency kernel).

B  linux-headers-3.14.4-031404-generic_3.14.4-031404.201405130853_amd64.deb
A  linux-headers-3.14.4-031404-generic_3.14.4-031404.201405130853_i386.deb
   linux-headers-3.14.4-031404-lowlatency_3.14.4-031404.201405130853_amd64.deb
   linux-headers-3.14.4-031404-lowlatency_3.14.4-031404.201405130853_i386.deb
AB linux-headers-3.14.4-031404_3.14.4-031404.201405130853_all.deb
B  linux-image-3.14.4-031404-generic_3.14.4-031404.201405130853_amd64.deb
A  linux-image-3.14.4-031404-generic_3.14.4-031404.201405130853_i386.deb
   linux-image-3.14.4-031404-lowlatency_3.14.4-031404.201405130853_amd64.deb
   linux-image-3.14.4-031404-lowlatency_3.14.4-031404.201405130853_i386.deb

It is best to downloaded the files into a folder by themselves. Then, one may install all the packages simultaneously by executing the following in a terminal:

sudo dpkg -i *.deb

When this process completes you should have a new entry on your boot menu representing the upstream kernel. This will appear as an entry like this:

Ubuntu Trusty, kernel 3.14.4-031404-generic

The headers-<kernelname>_<architecture>.deb and headers-<kernelname>_all.deb packages allow one to build external modules.

Problems installing an upstream kernel

Warning /!\ Some have found issues installing an upstream kernel due to an error. For example:

Error! Bad return status for module build on kernel: 3.7.0-030700rc2-generic (x86_64)
Consult /var/lib/dkms/virtualbox/4.1.18/build/make.log for more information.

This would be due to a conflict with the installed software (VirtualBox, nvidia proprietary drivers, fglrx, wl, etc.). If possible, one would want to uninstall the conflicting package(s) first, then install the upstream kernel. This will allow you to test the upstream kernel, and provide another data point on if the removed software has a relationship to your problem.

Uninstalling upstream kernels

The upstream kernels have their own ABI namespace so they install side by side with the stock Ubuntu kernels (each kernel has a separate directory under /lib/modules/VERSION for example). This means that you can keep several mainline and Ubuntu stock kernels installed at the same time and select the one you need from the GRUB boot menu.

If you would like to uninstall an upstream kernel anyway, first use:

dpkg -l | grep "linux\-[a-z]*\-"

to find the exact name of the kernel packages you want to uninstall, and then do:

sudo apt-get remove KERNEL_PACKAGES_TO_REMOVE

Remember that several packages can belong to one kernel version: common headers, architecture specific headers and the architecture specific image.

Mainline build tool chain

These kernels are built with the tool chain (gcc etc.) from the previous LTS (Ubuntu 8.04/10.04/12.04) depending on version. Therefore, out-of-tree kernel modules built with tools from other versions likely will not work. The file BUILD in later mainline builds detailing what was used.

Mainline kernel mapping to Ubuntu kernel

The Ubuntu kernel is not bit-for-bit the same as the mainline. However, one may find the upstream release that the Ubuntu kernel is based on via the Ubuntu to mainline mapping table.

Does the kernel team support the mainline kernel builds?

The mainline kernels builds are produced for debugging purposes and therefore come with no support. Use them at your own risk.

Kernel/MainlineBuilds (last edited 2023-11-10 10:07:24 by juergh)