On Sat, 23 Apr 2011, Faheem Mitha wrote:
I've made some more changes - mostly additions - to your patch.
[snippage]
Oops, I accidentally included some redundant stuff. Resending
corrected patch.
Regards, Faheem
diff -r 657cba972ce9 -r 4f9540ff7c84 chapter-common-tasks.sgml
--- a/chapter-common-tasks.sgml Mon Apr 18 11:54:22 2011 +0530
+++ b/chapter-common-tasks.sgml Sat Apr 23 22:53:06 2011 +0530
@@ -45,7 +45,7 @@
The version <tt><em>version</em>-<em>N</em></tt> (like
2.6.18-8) of the <tt>linux-patch-debian-<em>version</em></tt>
- package contains all the individual patches applied to the
+ package contains all the individual patches applied to the
source to achieve any patchlevel up to <tt><em>N</em></tt>.
They are stored in the directory
<tt>/usr/src/kernel-patches/all/<em>version</em>/debian/</tt>.
@@ -90,7 +90,7 @@
</p>
</sect1>
<sect1>
- <heading>Applying patches</heading>
+ <heading>Applying patches or configuration changes</heading>
<p>
It is possible to apply extra patches to the source before
starting the build. First, you should apply the existing
@@ -104,6 +104,60 @@
(featuresets added). You should apply the extra patches in
the appropriate subdirectory.
</p>
+ <p>
+ To change the configuration before building, for example
+ for the 686-bigmem flavour on i386, run the commands:
+ <example>
+$ fakeroot make -f debian/rules.gen setup_i386_none_686-bigmem
+$ make -C debian/build/build_i386_none_686-bigmem menuconfig
+ </example>
+ </p>
+ <p>
+ Patches or configuration changes to the kernel may alter
+ the kernel Application Binary Interface (ABI).
+ </p>
+ <p>
+ If an exported function is conditional on CONFIG_FOO, or
+ it uses a type whose definition depends on CONFIG_FOO,
+ then turning CONFIG_FOO on or off changes the ABI of that
+ function, and thus of the kernel as a whole.
+ </p>
+ <p>
+ Enabling or changing the configuration of a single driver
+ usually doesn't change the ABI, because most drivers don't
+ export anything.
+ </p>
+ <p>
+ The kernel build process generates a 'symbol version' for
+ each exported function or variable. This is a hash of the
+ definitions that it depends on, and should change whenever
+ the function's ABI changes. The kernel module loader
+ detects incompatible modules by comparing symbol versions.
+ The whole set of symbol versions represents the kernel
+ ABI.
+ </p>
+ <p>
+ We collect the symbol versions for previously uploaded
+ packages under the directory debian/abi and then compare
+ the new kernel with those. If the ABI name is unchanged
+ but the ABI itself is changed - except for additions, or
+ changes that we have marked as acceptable - then the build
+ is aborted.
+ </p>
+ <p>
+ If the kernel ABI has changed you must then change the ABI
+ name. This is the part after the upstream version in
+ package names and in the output of
+ <tt>uname -r</tt>. For example, in the package name
+ <tt>linux-image-2.6.38-2-686-bigmem</tt> it is
+ the <tt>2</tt>. It is defined by the <tt>abiname</tt>
+ in <tt>debian/config/defines</tt>. For example,
+ <tt>abiname: custom1.0</tt>. Then run the command
+ <example>
+$ fakeroot debian/rules debian/control-real
+ </example>
+ to regenerate the package definitions for this ABI name.
+ </p>
</sect1>
<sect1>
<heading>Building many packages</heading>
@@ -125,17 +179,29 @@
<sect1>
<heading>Building packages for one flavour</heading>
<p>
- For example, to build only the binary packages for 686
- flavour on i386 architecture, use the following commands:
+ For example, to build only the
<tt>linux-image-<em>version</em></tt> and
+ <tt>linux-headers-<em>version</em></tt> binary packages
+ for 686 flavour on i386 architecture, use the following
+ commands:
<example>
$ fakeroot debian/rules source
$ fakeroot make -f debian/rules.gen binary-arch_i386_none_686
</example>
- The target in this command has the general form of
+ The <tt>debian/rules source</tt> copies and patches the
+ upstream source. The target in this command has the
+ general form of
<tt><em>target</em>_<em>arch</em>_<em>featureset</em>_<em>flavour</em></tt>.
Replace the <tt><em>featureset</em></tt> with
<tt>none</tt> if you do not want any of the extra
- featuresets.
+ featuresets. You will also need
+ the <tt>linux-headers-<em>version</em>-common</tt> binary
+ package, which can be built using the commands:
+ <example>
+$ fakeroot debian/rules source
+$ fakeroot make -f debian/rules.gen binary-arch_i386_none_real
+ </example>
+ The target in this command has the general form of
+
<tt><em>target</em>_<em>arch</em>_<em>featureset</em>_<em>real</em></tt>.
</p>
</sect1>
<sect1>
--
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive:
http://lists.debian.org/alpine.deb.2.00.1104232254230.16...@orwell.homelinux.org