The Debian GNU/Linux FAQ
Chapter 9 - Debian and the kernel
9.1 Can I install and compile a kernel without some Debian-specific tweaking?
Yes. But you have to understand the Debian policy with respect to headers.
The Debian C libraries are built with the most recent stable releases
of the kernel headers.
For example, the Debian-1.2 release used version 5.4.13 of the headers. This
practice contrasts with the Linux kernel source packages distributed at all
Linux FTP archive sites, which uses even more recent versions of the headers.
The kernel headers distributed with the kernel source are located in
/usr/include/linux/include/.
If you need to compile a program with kernel headers that are newer than those
provided by libc6-dev, then you must add
-I/usr/src/linux/include/ to your command line when compiling.
This came up at one point, for example, with the packaging of the automounter
daemon (amd). When new kernels changed some internals dealing
with NFS, amd needed to know about them. This required the
inclusion of the latest kernel headers.
9.2 What tools does Debian provide to build custom kernels?
Users who wish to (or must) build a custom kernel are encouraged to download
the package kernel-package. This package contains the script to
build the kernel package, and provides the capability to create a Debian
kernel-image package just by running the command
make-kpkg kernel_image
in the top-level kernel source directory. Help is available by executing the
command
make-kpkg --help
and through the manual page make-kpkg(8).
Users must separately download the source code for the most recent kernel (or
the kernel of their choice) from their favorite Linux archive site, unless a
kernel-source-version package is available (where "version" stands
for the kernel version).
Detailed instructions for using the kernel-package package are
given in the file /usr/doc/kernel-package/README. Briefly, one
should:
Unpack the kernel sources, and cd to the newly created directory.
Modify the kernel configuration using one of these commands:
make config (for a tty one-line-at-a-time-interface).
make menuconfig (for an ncurses-based menu driven interface).
Note that to use this option, the libncurses5-dev package must be
installed.
make xconfig (for an X11 interface). Using this option requires
that relevant X and Tcl/Tk packages be installed.
Any of the above steps generates a new .config in the top-level
kernel source directory.
Execute the command: make-kpkg -rev Custom.N kernel_image, where N
is a revision number assigned by the user. The new Debian archive thus formed
would have revision Custom.1, e.g.,
kernel-image-2.2.14_Custom.1_i386.deb for the Linux kernel 2.2.14.
Install the package created.
Run dpkg --install /usr/src/kernel-image-VVV_Custom.N.deb to
install the kernel itself. The installation script will:
run the boot loader, LILO (if it is installed),
install the custom kernel in /boot/vmlinuz_VVV-Custom.N, and set up appropriate
symbolic links to the most recent kernel version.
To employ secondary boot loaders such as grub or
loadlin, copy this image to other locations (e.g., to /boot/grub
or to an MS-DOS partition).
9.3 How can I make a custom boot floppy?
This task is greatly aided by the Debian package boot-floppies,
normally found in the admin section of the Debian FTP archive.
Shell scripts in this package produce boot floppies in the
SYSLINUX format. These are MS-DOS formatted floppies
whose master boot records have been altered so that they boot Linux directly
(or whatever other operating system has been defined in the syslinux.cfg file
on the floppy). Other scripts in this package produce emergency root disks and
can even reproduce the base disks.
You will find more information about this in the
/usr/doc/boot-floppies/README file after installing the
boot-floppies package.
9.4 What special provisions does Debian provide to deal with modules?
Debian's modconf package provides a shell script
(/usr/sbin/modconf) which can be used to customize the
configuration of modules. This script presents a menu-based interface,
prompting the user for particulars on the loadable device drivers in his
system. The responses are used to customize the file
/etc/modules.conf (which lists aliases, and other arguments that
must be used in conjunction with various modules) through files in
/etc/modutils/, and /etc/modules (which lists the
modules that must be loaded at boot time).
Like the (new) Configure.help files that are now available to support the
construction of custom kernels, the modconf package comes with a series of help
files (in /usr/lib/modules_help/) which provide detailed
information on appropriate arguments for each of the modules.
9.5 Can I safely de-install an old kernel package, and if so, how?
Yes. The kernel-image-NNN.prerm script checks to see whether the
kernel you are currently running is the same as the kernel you are trying to
de-install. Therefore you can remove unwanted kernel image packages using this
command: