Now that you have
downloaded the source for your selected kernel version and installed it into a local directory, it is time to build the
code. The first step is to configure the kernel with
the appropriate options; the kernel can then be compiled. Both tasks
are done through the standard
make
utility.
The kernel configuration is kept in a file called
.config in the top directory of the kernel source
tree. If you have just expanded the kernel source code, there will be
no .config file, so it needs
to be created. It can be created from scratch, created by basing it
on the "default configuration," taken from a running kernel version,
or taken
from a distribution kernel release. We will cover the first two methods
here, and the last two methods in Chapter 8,
Customizing a Kernel
.
The most basic method of configuring a kernel is to use the
make
config
method:
$
cd linux-2.6.17.10
$
make config
make config
scripts/kconfig/conf arch/i386/Kconfig
*
* Linux Kernel Configuration
*
*
* Code maturity level options
*
Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) [Y/n/?]
Y
*
* General setup
*
Local version - append to kernel release (LOCALVERSION) []
Automatically append version information to the version string (LOCALVERSION_AUTO) [Y/n/?]
Y
...
The kernel configuration program will step through every configuration
option and ask you if you wish to enable this option or
not. Typically, your choices for each option
are shown in the format [Y/m/n/?] The capitalized
letter is the default, and can be selected by just pressing the Enter
key. The four choices are:
-
y
-
Build directly into the kernel.
-
n
-
Leave entirely out of the kernel.
-
m
-
Build as a module, to be loaded if needed.
-
?
-
Print a brief descriptive message and repeat the prompt.
The kernel contains almost two thousand different configuration options, so
being asked for every individual one will take a very long time.
Luckily, there is an easier way to configure a kernel: base the
configuration on a pre-built configuration.
Default configuration options
Every kernel version comes with a "default" kernel configuration. This
configuration is loosely based on the defaults that the kernel maintainer
of that architecture feels are the best options to be used. In some cases,
it is merely the configuration that is used by the kernel maintainer
himself for his personal machines. This is true for the i386
architecture, where the default kernel configuration matches closely what
Linus Torvalds uses for his main development machine.
To create this default configuration, do the following:
$
cd linux-2.6.17.10
$
make defconfig
A huge number of configuration options will scroll quickly by the screen,
and a .config file will be written out and placed in
the kernel directory. The kernel is now successfully configured, but it
should be customised to your machine in order to make sure it will operate
correctly.