# Debian kernel source

## Changes to the pristine kernel source

The kernels in Debian are distributed in binary form, built from the Debian kernel source. It is important to recognize that Debian kernel source may be (and in most cases is) different from the upstream (or "pristine") kernel source, distributed from www.kernel.org and its mirrors. Due to licensing restrictions, unclear license information, or failure to comply with the Debian Free Software Guidelines (DFSG), parts of the kernel are removed in order to distribute the source in the `main` section of the Debian archive. Such removal produces `linux_`version`.orig.tar.xz` tarball, which serves as the original upstream source. `version` is the actual upstream version.

The guidelines for firmware removal were set by the Handling source-less firmware in the Linux kernel General Resolution and the position statement by the release managers. As of version 2.6.31-1, all known sourceless firmware has been removed from the Debian package, but much of it is included in the firmware-nonfree package. Additional information about firmware licensing and removals may be found at the Debian Wiki page KernelFirmwareLicensing.

## Debian kernel patches

The source from which the Debian binary kernels are built is obtained by taking the source from `linux_`version`.orig.tar.xz` (that is, pristine kernel source with problematic parts removed) and applying a set of Debian patches. These patches typically implement essential fixes for serious bugs and security holes. The Debian version of the kernel packages has the form `version``-``revision` where `version` is the upstream version of the kernel (like 3.2.20) and `revision` determines the patchlevel. For example, the packages with version 3.2.20-1 are built from the `linux_3.2.20.orig.tar.xz` source, patched up to patchlevel 1. Certain packages include extra 'featuresets' not included in the upstream source, such as `rt`.

## Policy for patch acceptance

The general policy of the Debian kernel team is that a patch must either fix a bug or add hardware support, and must be based on a change already accepted by the upstream kernel maintainers. The change does not need to have been included in an upstream release yet. This policy allows the team to drop most patches when moving to a new upstream version, rather than having to maintain an increasing series of Debian-specific patches. The recommended procedure for inclusion of patches introducing optional features is to submit to the upstream maintainer.