MainlineBuilds

Differences between revisions 3 and 14 (spanning 11 versions)
Revision 3 as of 2011-09-27 17:32:02
Size: 6097
Editor: 206
Comment: Add note about Mainline Build Tool chain
Revision 14 as of 2012-10-20 20:27:38
Size: 7045
Editor: penalvch
Comment: 1) As per https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1068816 , granularized == Installing Mainline Kernels ==. 2) Misc. minor syntax fixes.
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. 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.
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.

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/ickle/drm-intel.git;a=shortlog;h=refs/heads/drm-intel-next|drm-intel-next]] head of Chris Wilson's [[http://git.kernel.org/?p=linux/kernel/git/ickle/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 mainline kernels. All formal tags from Linus' tree and from the stable trees, plus:
 1. the tip of the master branch from [[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=summary|Linus' tree]] daily,
 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 16:
Line 29: Line 18:
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: 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:
Line 31: Line 20:
    {{{
http://kernel.ubuntu.com/~kernel-ppa/mainline
}}}
  [[http://kernel.ubuntu.com/~kernel-ppa/mainline|http://kernel.ubuntu.com/~kernel-ppa/mainline]]
Line 35: Line 22:
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. 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.
Line 37: Line 24:
Each build directory contains the header and image .deb files for the i386 and amd64 architectures, generic flavour. Each build directory contains the header and image .deb files for the generic flavour i386 and amd64 architectures.
Line 47: Line 34:
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 use the mainline kernel you only need to download and install the *image*.deb package that corresponds to your architecture. As well, if you need to build any external modules you also need the correct *header*.deb and *source*.deb packages. However, what specific files one will install depends on the version of the mainline you test.
Line 49: Line 36:
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: Let us use as an example [[http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.3.7-precise/|v3.3.7-precise]]. <<BR>> If you were testing i386, and your CPU supports PAE, you would need those marked with A and D. <<BR>> If you were testing i386, and your CPU does not support PAE, B and D. <<BR>> If you were testing amd64, C and D.
{{{
A linux-headers-3.3.7-030307-generic-pae_3.3.7-030307.201205211535_i386.deb
C linux-headers-3.3.7-030307-generic_3.3.7-030307.201205211535_amd64.deb
B linux-headers-3.3.7-030307-generic_3.3.7-030307.201205211535_i386.deb
D linux-headers-3.3.7-030307_3.3.7-030307.201205211535_all.deb
A linux-image-3.3.7-030307-generic-pae_3.3.7-030307.201205211535_i386.deb
C linux-image-3.3.7-030307-generic_3.3.7-030307.201205211535_amd64.deb
B linux-image-3.3.7-030307-generic_3.3.7-030307.201205211535_i386.deb
}}}
Line 51: Line 47:
    {{{
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
For another example, let us use [[http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.7-rc1-quantal/|v3.7-rc1-quantal]]. <<BR>> If you were testing i386, you would want those marked A. <<BR>> If you were testing amd64, B.
## 20121020 https://launchpad.net/~penalvch If not mistaken, the i386 will not work for non-PAE CPUs, because they are not built for this?! If so, may want caveat to note this.
{{{
B linux-headers-3.7.0-030700rc1-generic_3.7.0-030700rc1.201210161007_amd64.deb
A linux-headers-3.7.0-030700rc1-generic_3.7.0-030700rc1.201210161007_i386.deb
B linux-image-3.7.0-030700rc1-generic_3.7.0-030700rc1.201210161007_amd64.deb
A linux-image-3.7.0-030700rc1-generic_3.7.0-030700rc1.201210161007_i386.deb
B linux-image-extra-3.7.0-030700rc1-generic_3.7.0-030700rc1.201210161007_amd64.deb
A linux-image-extra-3.7.0-030700rc1-generic_3.7.0-030700rc1.201210161007_i386.deb
Line 60: Line 59:

    
{{{
{{{
Line 65: Line 63:
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:

    
{{{
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:
{{{
Line 76: Line 73:

    
{{{
{{{
Line 82: Line 78:

    
{{{
{{{
Line 87: Line 82:
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 95: Line 90:
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.
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.
Line 100: Line 94:
These kernels are built with the tool chain (gcc etc) from Hardy (Ubuntu 8.04), therefore out-of-tree kernel modules built with tools from other version won't work.
 
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.

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.

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

  1. the tip of the master branch from Linus' tree daily,

  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.

Mainline Kernels Archive

The mainline kernels archive is located at the URL below. There is a directory for each mainline build:

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.

Mainline Kernel Mapping

In order to choose which is the closest mainline kernel to any particular Ubuntu release you can use the 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 current version.

Installing Mainline Kernels

To use the mainline kernel you only need to download and install the *image*.deb package that corresponds to your architecture. As well, if you need to build any external modules you also need the correct *header*.deb and *source*.deb packages. However, what specific files one will install depends on the version of the mainline you test.

Let us use as an example v3.3.7-precise.
If you were testing i386, and your CPU supports PAE, you would need those marked with A and D.
If you were testing i386, and your CPU does not support PAE, B and D.
If you were testing amd64, C and D.

A       linux-headers-3.3.7-030307-generic-pae_3.3.7-030307.201205211535_i386.deb
C       linux-headers-3.3.7-030307-generic_3.3.7-030307.201205211535_amd64.deb
B       linux-headers-3.3.7-030307-generic_3.3.7-030307.201205211535_i386.deb
D       linux-headers-3.3.7-030307_3.3.7-030307.201205211535_all.deb
A       linux-image-3.3.7-030307-generic-pae_3.3.7-030307.201205211535_i386.deb
C       linux-image-3.3.7-030307-generic_3.3.7-030307.201205211535_amd64.deb
B       linux-image-3.3.7-030307-generic_3.3.7-030307.201205211535_i386.deb

For another example, let us use v3.7-rc1-quantal.
If you were testing i386, you would want those marked A.
If you were testing amd64, B.

B       linux-headers-3.7.0-030700rc1-generic_3.7.0-030700rc1.201210161007_amd64.deb
A       linux-headers-3.7.0-030700rc1-generic_3.7.0-030700rc1.201210161007_i386.deb
B       linux-image-3.7.0-030700rc1-generic_3.7.0-030700rc1.201210161007_amd64.deb
A       linux-image-3.7.0-030700rc1-generic_3.7.0-030700rc1.201210161007_i386.deb
B       linux-image-extra-3.7.0-030700rc1-generic_3.7.0-030700rc1.201210161007_amd64.deb
A       linux-image-extra-3.7.0-030700rc1-generic_3.7.0-030700rc1.201210161007_i386.deb

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

sudo dpkg -i *.deb

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

Uninstalling Mainline Kernels

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.

If you would like to uninstall a mainline 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.

Why do mainline kernel builds have a -<series> suffix?

Each mainline build is named by the base upstream version suffixed with an Ubuntu release name, 2.6.35-maverick. This tells us the upstream version which was built, and additionally which configuration was used to build it. This tells us which release is most compatible with the kernel as built. This does not prevent the kernel being used on other releases, though it is most likely to work correctly on the release it is build for, or earlier ones. The further away from your base kernel release you are the more likely that there will be an incompatible userspace interaction which will prevent them working for you.

Do mainline kernel builds include Ubuntu specific drivers?

By definition the mainline kernel builds are made from virgin unaltered mainline kernel sources and therefore do not, and should not, include any Ubuntu patches or drivers. There are also no binary drivers for these kernels.

Submitting to kerneloops.org

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.

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.

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.

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