Starting Kernel
Configuration
To configure compile-time kernel options, you
must begin with the kernel source code. All major distributions ship with this,
but it may or may not be installed by default. Many distributions make changes
to the standard kernel (say, to add new drivers that aren't yet standard). You
may prefer to start with a standard kernel and add only those patches you need
(it's possible you won't need any). Check target="_blank">http://www.kernel.org or a major Linux archive site like href=" target="_blank"> for the latest
kernel source code. (You can also obtain kernel source code from your Linux
distribution, but many distributions ship with kernels that have been patched
to include non-standard drivers. Using a more standard kernel can be beneficial
if you run into problems and need help solving them.) NOTE

There are two current branches of kernel
development, which are distinguished by the second number in the three-part
version number. Those with even second numbers (like 2.4.17) are known as stable or release
kernels. Kernels with odd second numbers (like 2.5.2) are development kernels. Stable kernels are best for
production environments, because they are, as the name implies, quite
reliable. Development kernels, on the other hand, are being actively tinkered
withthe kernel developers use this line to add new drivers, change
interfaces, and so on. Development kernels are therefore best avoided unless
you want to contribute to kernel development or if you really require some
new driver. (In the latter case, you can often find a back-port of the driver to an older stable kernel.)
Kernel source code normally resides in /usr/src/linux , or in a subdirectory of /usr/src that includes the kernel version
number, like /usr/src/linux-2.4.17 .
In the latter case, it's common practice to create a symbolic link called /usr/src/linux and point it to the true
Linux source directory. This allows other programs that assume the source is in
/usr/src/linux to function
correctly, even if you want to keep multiple versions of the kernel source
code; you can simply change the symbolic link as required.
Once you've uncompressed the kernel source code into /usr/src/linux , you should change to that
directory in a normal command shell. You can then issue a command to configure
the kernel options. Possibilities include the following:
make config
This is the basic configuration tool. It asks you about every kernel option in
turn, which can be tedious. If you make a mistake, you must normally go back
and redo everything. For this reason, it's seldom used today.
makemenuconfig
This configuration procedure uses text-based menus for configuration options,
which enables you to look through the options and adjust only those that
require changes. This is a common method of configuration in text-mode
environments.
make xconfig
This method is similar to make menuconfig ,
except that make xconfig
uses GUI configuration menus. You can click on a topic to see its options, then
click your mouse to select how or if you want to compile any option. This is a
popular means of kernel configuration when the X Window System (or X for short)
is running.
All of these methods present the same options, which are
organized into broad categories. (Some categories also include subcategories.)
When you select one category with make
menuconfig or make
xconfig , a new menu appears showing the options within that
category. (href="http:// /JVXSL.asp?x=1&mode=section&sortKey=insertDate&sortOrder=desc&view=&xmlid=0-201-77423-2/ch01lev1sec1&open=true&title=New%20This%20Week&catid=&s=1&b=1&f=1&t=1&c=1&u=1#ch01fig01#ch01fig01"> Figure 1.1 shows this for make xconfig .) Of particular interest
for networking are the Networking Options and Network Device Support
categories, which are the subject of the next two sections.
Figure 1.1. Linux kernel compilation
options are organized into categories and subcategories, each with its own
menu.

This chapter describes the Linux 2.4.
x kernel options, and particularly those in the
2.4.17 kernel. Kernel network options have changed in the past, and are
likely to do so again in the future. 2.2.
x
kernels use similar options, but several details differ. A new kernel
configuration tool, known as CML2, is under development in the experimental
2.5.
x kernels. Check href="http://tuxedo.org/~esr/cml2/" target="_blank">http://tuxedo.org/~esr/cml2/ for more information on it.
Most kernel options use a two- or three-way
toggle (the Y , M , and N options shown in href="http:// /JVXSL.asp?x=1&mode=section&sortKey=insertDate&sortOrder=desc&view=&xmlid=0-201-77423-2/ch01lev1sec1&open=true&title=New%20This%20Week&catid=&s=1&b=1&f=1&t=1&c=1&u=1#ch01fig01#ch01fig01"> Figure 1.1 ). Y and N refer to the
option's presence or absence in the kernel file itself, respectively, and M stands for modular compilation compiling the option as a
separate file that can be loaded and unloaded. These options are described in
more detail in the upcoming section, " href="http:// /?xmlid=0-201-77423-2/ch01lev1sec4#ch01lev2sec14"> Drivers: Modules or Built-In ."