KERNEL-PACKAGE(5) Debian GNU/Linux manual KERNEL-PACKAGE(5)
kernel-package - A 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 look-
ing for instructions on how to use kernel-package, please have a look
at the manual make-kpkg (1). Configuring instructions are to be found
Advantages of using kernel-package
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 installa-
tion of kernels is a snap.
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 place.
v) Module hooks
Several other kernel module packages are hooked into ker-
nel-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 cre-
ates 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
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 to create a package with the headers, or the
sources, also as a deb file, and enables the package man-
agement 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 take
care of details like offering to make a boot disk, manip-
ulating symbolic links in / so that you can make boot
loader scripts static (just refer to the symbolic links,
rather than the real image files; the names of the sym-
bolic links do not change, but the kernel image file
names change with the version).
xi) Sub architecture support
There is support for the multitudinous sub architectures
that have blossomed under the umbrella of the m68k and
xii) kernel-patch support
There is support there for optionally applying patches to
the kernel provided as a kernel-patch .deb file, and
building a patched kernel auto-magically, and still
retain an UN-patched kernel source tree.
xiii) 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.
xiv) Customizations on the target host
The postinst looks at a configuration file on the instal-
lation machine (as opposed to the machine that the image
was compiled on), and allows the local admin to decide on
issues of symbolic links, and whether the boot loader
stuff must be run, and whether one wants to create a boot
floppy or not.
xv) runtime hooks
The postinst 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).
xvi) 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
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 tradition).
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)
make-kpkg(1), make(1), The GNU Make manual.
There are no bugs. Any resemblance thereof is delirium. Really.
This manual page was written by Manoj Srivastava <srivastaATdebian.org>,
for the Debian GNU/Linux system.
Debian May 25 1999 KERNEL-PACKAGE(5)