Scroll to navigation
||Debian GNU/Linux manual
kernel-package - system for creating kernel related packages
The kernel-package package grew out of desire to automate the routine
steps required to compile and install a custom kernel. If you are looking for
instructions on how to use kernel-package, please have a look at the
manual make-kpkg(1). Configuring instructions are to be found in
Advantages of using kernel-package¶
- i) Convenience.
- I used to compile kernels manually, and it involved a series of steps to
be taken in order; kernel-package was written to take all the required
steps (it has grown beyond that now, but essentially, that is what it
does). This is especially important to novices: make-kpkg takes all
the steps required to compile a kernel, and installation of kernels is a
- ii) Multiple images support
- It allows you to keep multiple version of kernel images on your machine
with no fuss.
- iii) Multiple Flavors of the same kernel version
- It has a facility for you to keep multiple flavors of the same kernel
version on your machine (you could have a stable 2.0.36 version, and a
2.0.36 version patched with the latest drivers, and not worry about
contaminating the modules in /lib/modules).
- iv) Built in defaults
- It knows that some architectures do not have vmlinuz (using vmlinux
instead), and other use zImage rather than bzImage, and calls the
appropriate target, and takes care of moving the correct file into
- v) Module hooks
- Several other kernel module packages are hooked into
kernel-package, so one can seamlessly compile, say, pcmcia
modules at the same time as one compiles a kernel, and be assured that the
modules so compiled are compatible.
- vi) dpkg support
- It enables you to use the package management system to keep track of the
kernels created. Using make-kpkg creates a .deb file, and dpkg can track
it for you. This facilitates the task of other packages that depend on the
- vii) Configuration tracking
- It keeps track of the configuration file for each kernel image in
/boot, which is part of the image package, and hence is the kernel
image and the configuration file are always together.
- viii) Multiple config files
- It allows you to specify a directory with config files, with separate
config files for each sub-architecture (even allows for different config
files for i386, i486, etc). It is really neat for people who need to
compile kernels for a variety of sub architectures.
- ix) Auxiliary kernel .deb packages
- It allows one to create a package with the headers, or the sources, also
as a deb file, and enables the package management system to keep track of
those (and there are packages that depend on the package management system
being aware of these packages).
- x) Maintainer script services
- Since the kernel image package is a full fledged Debian package, it comes
with maintainer scripts, which allow the user to add hook scripts to run
when the package status changes.
- xi) Sub architecture support
- There is support for the multitudinous sub architectures that have
blossomed under the umbrella of the m68k and power-PC architectures.
- xii) Portable kernel images
- Allows one to compile a kernel for another computer, for example using a
fast machine to compile the kernel for installation on a slower machine.
This is really nice since the modules are all included in the .deb; and
one does not have to deal with modules manually.
- xiii) runtime hooks
- The preinst, postinst, prerm and the postrm scripts allow the local admin
on the installation machine to add a script into runtime hooks; this can
allow, amongst other things, grub users to add and remove kernel image
stanzas from the grub menu (example scripts to do this are in the
package). There are directories under /etc/kernel where related
packages may drop off scripts that will be run by the maintainer scripts
of the packages created by kernel package. Before running these scripts,
the environment variable KERNEL_PACKAGE_VERSION shall be set to the
version of the kernel-package that created the package.
- xiv) Append descriptive bits to the kernel version
- One can append to the kernel version on the command line, or by setting an
environment variable. So if your kernel is called
kernel-image-2.4.1John.Home; it is unlikely to be overridden by the
official 2.4.1 kernel, since they are not the same version.
Disadvantages of using make-kpkg¶
- i) Automation.
- This is a cookie cutter approach to compiling kernels, and there are
people who like being close to the bare metal.
- ii) Non traditional
- This is not how it is done in the non-Debian world. This flouts tradition.
(It has been pointed out, though, that this is fast becoming Debian
- iii) Needs superuser
- It forces you to use fakeroot or sudo or super or be
root to create a kernel image .deb file (this is not as bad as it used to
be before fakeroot).
There are no bugs. Any resemblance thereof is delirium. Really.
This manual page was written by Manoj Srivastava <email@example.com>,
for the Debian GNU/Linux system.