[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ next ]

# 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.
    - prompt the user to make a boot floppy. This boot floppy will contain the raw kernel only. See How can I make a custom boot floppy?, Section 9.3.
  - 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:

         dpkg --purge --force-remove-essential kernel-image-NNN

(replace "NNN" with your kernel version and revision number, of course)

[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ next ]

The Debian GNU/Linux FAQ