Man Linux: Main Page and Category List


       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
       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 kernel-pkg.conf(5).

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 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
                     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

              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
                     kernel packages.

              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 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  package 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 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)


       /etc/kernel-pkg.conf.  /etc/kernel-img.conf.


       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 <>,
       for the Debian GNU/Linux system.