Welcome to the Kernel Developer Frequently Asked Questions (FAQ), part of the overall Kernel/FAQ! The aim of this page is to provide an list of common questions that we get. We encourage you to update this document when something is missing so it becomes a core source of information for the project. Each question has its own page which are listed on the Kernel/FAQEdit page, which also contains guidance on editing the FAQ.
When I try to build the kernel I get an error telling me to run "make mrproper" what should I do?
This implies there are left over files in your tree which are not meant to be in a clean tree. A clean source tree is required for an out of tree (make O=<directory> style) build, which is what the Ubuntu packaging uses. The most common cause is the creation of the include/config directory. You can try removing this:
If that does not work it is normally safest to clean all extraneous file out of your tree as below. Note that this removes each and every file which is not committed to git, it will remove any patches etc you have lying around within the build directory:
git clean -x -f -d
Where can I find Development resources and documentation?
We maintain a wiki of development resources to share across the team and the community in the kernel team wiki in the development section, Kernel/Dev.
What is a Kernel Flavour?
It is impossible to build a single kernel for every occasion, any such configuration cannot be optimal for all use cases. As a result we offer a number of kernel variants for each release, these variants termed flavours. We commonly refer to those flavours using the flavour name, for example: generic, generic-pae, and server.
How do we choose which Flavours are supported in a release?
At the Ubuntu Developer Summit (UDS) we will discuss the current flavours and their applicability. During this discussions we will make recommendations for additions to or removals from the supported flavours. Those recommendations feed into the development for that upcoming release.
What are Kernel Flavour transitions?
Over time the supported kernel flavours have evolved. This means that sometimes it is necessary to move from one kernel flavour to another for a specific use case. More details on why we might need such transitions, and information on the transitions which have been needed previously can be found on the Kernel/Dev/Flavours page.
What Kernel Flavours exist for each release?
The flavours available for all supported releases are documented on the Kernel/Dev/Flavours page. This includes information on where support is obtained for these flavours.
Can I get a patch included in the Ubuntu Kernel? / How can I submit a patch to the Ubuntu Kernel?
Normally we consider patches for inclusion which are sent to the email@example.com email list. See Kernel/Dev/KernelPatches for more details.
Why does a local build produce such enormous packages?
Our build includes CONFIG_DEBUG_INFO in order to produce linux-debug-image packages. We then manually strip the modules after build.
If you re-use our config for your own build, your best bet is to change this line in the config:
# CONFIG_DEBUG_INFO is not set
Where can I find Kernel related bugs to work on?
The Kernel bugs are maintained in LaunchPad, the full list is at https://bugs.launchpad.net/ubuntu/+source/linux/+bugs
Where can I find the Ubuntu Kernel source code?
You can access all the kernels for previous and current development releases at http://kernel.ubuntu.com/git. There are repositories for each supported release under ubuntu/ubuntu-<release>.git. We use git to maintain all our trees. See Kernel/SourceCode for more details.
What are the supported Kernel Meta Packages?
The Ubuntu kernel meta packages facilitate the use of the different supported kernel flavors. These meta packages group a set of existing kernel related packages into a single set. Information documenting the set of supported kernel meta packages can be obtained at Kernel/Dev/Meta-Pkgs.
What are these topic branches in the Ubuntu Kernel?
Normally all of the source code for the Ubuntu Kernels are stored on the master branch of the Ubuntu git repository for a release. However where there are significantly different kernels for different systems, for example it may be at an older mainline level, or may contain very invasive changes, those cannot be merged safely into the master branch. In this case the source code is maintained on a topic branch (see Kernel/Dev/TopicBranches). We use a split debian system to allow these to cleanly coexist in the same repository (see KernelTeam/AbstractedDebian)
How do I use git with the Ubuntu kernel?
git is a fairly complex program to use and you are recommended to read up on and understand git's philosophy before attempting to work with the Ubuntu kernel trees, we recommend at least reading the Git Community Book. Once you are conversant with git you should read the KernelTeam/KernelGitGuide which describes how to find our respositories and how we use them. You may also find the KernelTeam/GitCheatSheet useful.
There are also 2 books that we know of:
- Pragmatic Version Control Using Git by Travis Swicegood
- Version Control with Git by Jon Loeliger
Why is feature X not enabled in the Ubuntu Kernel?
Often features have never been requested before and therefore not enabled, in other cases they may be incompatible with other features and cannot be enabled. Contact the Kernel Team (See How do I find the kernel team?) and ask.
Why is patch X not applied to Release Y?
It is not always possible to backport a fix to an older release. The key requirement for any changes applied to older releases is that they not introduce any regressions for other users. The fix may help your case but cause issues on other systems. This introduces risk in releasing fixes in older releases and may sometimes prevent us fixing your problem. Often we will only be able to fix these types of issues in the next release. This is outside the kernel team's control, see the StableReleaseUpdates and KernelTeam/KernelUpdates pages for details.