live-build/includes/common/doc/FAQ/html/ch-kernel.en.html

312 lines
8.0 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>The Debian GNU/Linux FAQ - Debian and the kernel</title>
</head>
<body>
<p><a name="ch-kernel"></a></p>
<hr>
<p>
[ <a href="ch-uptodate.en.html">previous</a> ]
[ <a href="index.en.html#contents">Contents</a> ]
[ <a href="ch-basic_defs.en.html">1</a> ]
[ <a href="ch-getting.en.html">2</a> ]
[ <a href="ch-compat.en.html">3</a> ]
[ <a href="ch-software.en.html">4</a> ]
[ <a href="ch-ftparchives.en.html">5</a> ]
[ <a href="ch-pkg_basics.en.html">6</a> ]
[ <a href="ch-pkgtools.en.html">7</a> ]
[ <a href="ch-uptodate.en.html">8</a> ]
[ 9 ]
[ <a href="ch-customizing.en.html">10</a> ]
[ <a href="ch-support.en.html">11</a> ]
[ <a href="ch-contributing.en.html">12</a> ]
[ <a href="ch-redistrib.en.html">13</a> ]
[ <a href="ch-nexttime.en.html">14</a> ]
[ <a href="ch-faqinfo.en.html">15</a> ]
[ <a href="ch-customizing.en.html">next</a> ]
</p>
<hr>
<h1>
The Debian GNU/Linux FAQ
<br>Chapter 9 - Debian and the kernel
</h1>
<hr>
<h2><a name="s-non-debian-kernel"></a>9.1 Can I install and compile a kernel without some Debian-specific tweaking?</h2>
<p>
Yes.
</p>
<p>
There's only one common catch: the Debian C libraries are built with the most
recent <em>stable</em> releases of the <strong>kernel</strong> headers. If you
happen to need to compile a program with kernel headers newer than the ones
from the stable branch, then you should either upgrade the package containing
the headers (<code>libc6-dev</code>), or use the new headers from an unpacked
tree of the newer kernel. That is, if the kernel sources are in
<code>/usr/src/linux</code>, then you should add
<samp>-I/usr/src/linux/include/</samp> to your command line when compiling.
</p>
<hr>
<h2><a name="s-customkernel"></a>9.2 What tools does Debian provide to build custom kernels?</h2>
<p>
Users who wish to (or must) build a custom kernel are encouraged to download
the package <code>kernel-package</code>. 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
</p>
<pre>
make-kpkg kernel_image
</pre>
<p>
in the top-level kernel source directory. Help is available by executing the
command
</p>
<pre>
make-kpkg --help
</pre>
<p>
and through the manual page <code>make-kpkg(1)</code>.
</p>
<p>
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 &quot;version&quot; stands
for the kernel version).
</p>
<p>
Detailed instructions for using the <code>kernel-package</code> package are
given in the file <code>/usr/share/doc/kernel-package/README.gz</code>.
Briefly, one should:
</p>
<ul>
<li>
<p>
Unpack the kernel sources, and <samp>cd</samp> to the newly created directory.
</p>
</li>
</ul>
<ul>
<li>
<p>
Modify the kernel configuration using one of these commands:
</p>
<ul>
<li>
<p>
<samp>make config</samp> (for a tty one-line-at-a-time-interface).
</p>
</li>
</ul>
<ul>
<li>
<p>
<samp>make menuconfig</samp> (for an ncurses-based menu driven interface).
Note that to use this option, the <code>libncurses5-dev</code> package must be
installed.
</p>
</li>
</ul>
<ul>
<li>
<p>
<samp>make xconfig</samp> (for an X11 interface). Using this option requires
that relevant X and Tcl/Tk packages be installed.
</p>
</li>
</ul>
<p>
Any of the above steps generates a new <samp>.config</samp> in the top-level
kernel source directory.
</p>
</li>
</ul>
<ul>
<li>
<p>
Execute the command: <samp>make-kpkg -rev Custom.N kernel_image</samp>, where N
is a revision number assigned by the user. The new Debian archive thus formed
would have revision Custom.1, e.g.,
<samp>kernel-image-2.2.14_Custom.1_i386.deb</samp> for the Linux kernel 2.2.14
on i386.
</p>
</li>
</ul>
<ul>
<li>
<p>
Install the package created.
</p>
<ul>
<li>
<p>
<samp>Run dpkg --install /usr/src/kernel-image-VVV_Custom.N.deb</samp> to
install the kernel itself. The installation script will:
</p>
<ul>
<li>
<p>
run the boot loader (grub, LILO or some other) if needed,
</p>
</li>
</ul>
<ul>
<li>
<p>
install the custom kernel in /boot/vmlinuz_VVV-Custom.N, and set up appropriate
symbolic links to the most recent kernel version.
</p>
</li>
</ul>
<ul>
<li>
<p>
prompt the user to make a boot floppy. This boot floppy will contain the raw
kernel only. See <a href="#s-custombootdisk">How can I make a custom boot
floppy?, Section 9.3</a>.
</p>
</li>
</ul>
</li>
</ul>
<ul>
<li>
<p>
To employ secondary boot loaders such as <samp>loadlin</samp>, copy this image
to other locations (e.g. to an <samp>MS-DOS</samp> partition).
</p>
</li>
</ul>
</li>
</ul>
<hr>
<h2><a name="s-custombootdisk"></a>9.3 How can I make a custom boot floppy?</h2>
<p>
This task is greatly aided by the Debian package <code>boot-floppies</code>,
normally found in the <samp>admin</samp> section of the Debian FTP archive.
Shell scripts in this package produce boot floppies in the
<samp>SYSLINUX</samp> format. These are <samp>MS-DOS</samp> 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.
</p>
<p>
You will find more information about this in the
<samp>/usr/share/doc/boot-floppies/README</samp> file after installing the
<code>boot-floppies</code> package.
</p>
<hr>
<h2><a name="s-modules"></a>9.4 What special provisions does Debian provide to deal with modules?</h2>
<p>
Debian's <code>modconf</code> package provides a shell script
(<samp>/usr/sbin/modconf</samp>) 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
<samp>/etc/modules.conf</samp> (which lists aliases, and other arguments that
must be used in conjunction with various modules) through files in
<samp>/etc/modutils/</samp>, and <samp>/etc/modules</samp> (which lists the
modules that must be loaded at boot time).
</p>
<p>
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 <samp>/usr/lib/modules_help/</samp>) which provide detailed
information on appropriate arguments for each of the modules.
</p>
<hr>
<h2><a name="s-removeoldkernel"></a>9.5 Can I safely de-install an old kernel package, and if so, how?</h2>
<p>
Yes. The <samp>kernel-image-NNN.prerm</samp> 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:
</p>
<pre>
dpkg --purge --force-remove-essential kernel-image-NNN
</pre>
<p>
(replace &quot;NNN&quot; with your kernel version and revision number, of
course)
</p>
<hr>
<p>
[ <a href="ch-uptodate.en.html">previous</a> ]
[ <a href="index.en.html#contents">Contents</a> ]
[ <a href="ch-basic_defs.en.html">1</a> ]
[ <a href="ch-getting.en.html">2</a> ]
[ <a href="ch-compat.en.html">3</a> ]
[ <a href="ch-software.en.html">4</a> ]
[ <a href="ch-ftparchives.en.html">5</a> ]
[ <a href="ch-pkg_basics.en.html">6</a> ]
[ <a href="ch-pkgtools.en.html">7</a> ]
[ <a href="ch-uptodate.en.html">8</a> ]
[ 9 ]
[ <a href="ch-customizing.en.html">10</a> ]
[ <a href="ch-support.en.html">11</a> ]
[ <a href="ch-contributing.en.html">12</a> ]
[ <a href="ch-redistrib.en.html">13</a> ]
[ <a href="ch-nexttime.en.html">14</a> ]
[ <a href="ch-faqinfo.en.html">15</a> ]
[ <a href="ch-customizing.en.html">next</a> ]
</p>
<hr>
<p>
The Debian GNU/Linux FAQ
</p>
<address>
version 3.1.3, 25 April 2006<br>
<br>
Authors are listed at <a href="ch-faqinfo.en.html#s-authors">Debian FAQ Authors</a><br>
<br>
</address>
<hr>
</body>
</html>