Differences between revisions 5 and 7 (spanning 2 versions)
Revision 5 as of 2007-12-21 17:35:05
Size: 3641
Editor: ?maximilianattems
Comment: adding a patch
Revision 7 as of 2007-12-21 17:37:05
Size: 3648
Editor: ?maximilianattems
Comment: fixing path
Deletions are marked like this. Additions are marked like this.
Line 20: Line 20:
~/src/linux-2.6-2.6.24~rc6$ cp ~/special-fix.patch debian/patch/bugfix/
~/src/linux-2.6-2.6.24~rc6$ echo "+ bugfix/special-fix.patch" >> debian/patches/series/1~experimental.1
~/src/linux-2.6-2.6.24~rc6$ cp ~/special-fix.patch debian/patches/bugfix/
~/src/linux-2.6-2.6.24~rc6$ echo "+ bugfix/special-fix.patch" \
>> debian/patches/series/1~experimental.1

This Page is about Rebuilding an official Debian kernel package

There is the Kernel Handbook about this: http://kernel-handbook.alioth.debian.org/

We are following section 4.2: Rebuilding an official Debian kernel package

Reasons to do this

  1. Modifying the Debian configuration to change the preemption model.

  2. Modifying the Debian configuration to change the timer frequency.

  3. Modifying the Debian configuration to change to Pata.

What you'll get is exactly the kernel that Debian releases but with those added changes.

Add a Patch to linux-2.6

Assuming you are working inside of ~/src/linux-2.6-2.6.24~rc6.

~/src/linux-2.6-2.6.24~rc6$ cp ~/special-fix.patch debian/patches/bugfix/
~/src/linux-2.6-2.6.24~rc6$ echo "+ bugfix/special-fix.patch" \
  >> debian/patches/series/1~experimental.1 

Now check that your patch applies

~/src/linux-2.6-2.6.24~rc6$ make -f debian/rules source-all

Then fire off debuild.


You are just interested in building one flavor of a kernel-image.

10 easy (albeit time consuming) steps

  1. Create the directory where you will build the kernel package as a normal user.
  2. Get the kernel source. You could install the kernel source package:

apt-get install linux-source-2.6
  1. Download the Debian diff.gz file. That is the file that contains all the Debian changes for this kernel package. E.g http://ftp.debian.org/debian/pool/main/l/linux-2.6/linux-2.6_2.6.20-3.diff.gz

  2. Patch the source with that. Cd into the tree of where you put the source, e.g. /home/hugo/linux-2.6.20-3-build/linux-2.6.20. You created linux-2.6.20-3-build and your script put linux-2.6.20 into it, cd into the latter and then:

zcat <path>linux-2.6_2.6.20-3.diff.gz| patch -p1

Now your tree holds the source and all changes Debian made to it.

  1. Make debian/rules executable. In your tree there is a directory named debian, in there is a file called rules, that has to be made executable, because it is executed.

  2. Change the file debian/bin/abicheck.py. After line 18 that contains ret = 0 add a line that says return 0. This will stop you from doing the abicheck.

  3. Prepare the tree for build. Still in the tree directory where you patched, do:

fakeroot debian/rules debian/build debian/stamps
fakeroot make -f debian/rules.gen setup-i386-none-k7

This presumes you are only interested in building a k7 AMD processor image! If you where interested in a 686 processor image do:

fakeroot make -f debian/rules.gen setup-i386-none-686

This will build a tree in the debian/build/build-i386-none-k7 or debian/build/build-i386-none-686 directory. Cd to that directory.

  1. Change the .config file. Do:

make menuconfig

and make any changes you had in mind. E.g the changes mentioned above in Reasons for doing this. Also this is the time to add additional patches, e.g. the Debian Logo patch.

  1. Compile the kernel and generate the image and headers debs. Do:

fakeroot make -f debian/rules.gen binary-arch-i386-none-k7


fakeroot make -f debian/rules.gen binary-arch-i386-none-686

And on a 2.0GHz CPU the compile will take 1 hour and 20 minutes and 2 deb files will be generated: the image file and the headers file, e.g.

  1. Install them with dpkg and now you have installed the stock Debian kernel with your changes in it. Congratulations ;-)