Indometric


Jun 23
Monday
Unix & Linux

Starting Kernel Configuration

  • Sharebar

To configure compile-time kernel options, you must start 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 http://www.kernel.org or a major Linux archive site like ftp://sunsite.unc.edu 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.)

Here are two current branches of kernel enhancement, 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 relief kernels. Kernels with odd second numbers (like 2.5.2) are enhancement kernels. Stable kernels are best for production environments, because they are, as the name implies, quite reliable. Enhancement kernels, on the other hand, are life actively tinkered with—the kernel developers use this line to add new drivers, change interfaces, and so on. Enhancement kernels are therefore best avoided except you want to contribute to kernel enhancement 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 naturally 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 start a symbolic link called /usr/src/linux and point it to the right 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 must change to that directory in a normal command shell. You can then issue a command to configure the kernel options. Promise include the following:

  • make config— This is the basic configuration tool. It questions you about every kernel option in turn, which can be tedious. If you make a mistake, you must naturally 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, apart from 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 standard means of kernel configuration when the X Window System (or X for small) 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. (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 enhancement in the experimental 2.5.x kernels. Check 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 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 part, “Drivers: Modules or Built-In.”


Post Tags: , , , , , , , ,


Post a Comment

 


All content and source © 2010 Indometric. All rights reserved. See our Privacy Policy and DMCA Information