What follows is a section-by-section analysis of the Linux kernel, based on the make xconfig Linux Kernel Configuration menu. This is a fairly long section, so if you re reading this full chapter, you may want to take a break.
A total of 35 kernel menus are shown; I ve organized them into six sections:
Basic configuration menus help you configure the fundamental parts of the kernel, such as the CPU and ISA or PCI support. Be especially careful with these menus; errors can keep Linux from recognizing peripherals or even your CPU.
Storage device menus help you work with connections related to all types of storage: hard drives, CDs, parallel port drives , and more. Be careful; you want to make sure Linux can recognize your hard disks.
Networking menus allow you to configure basic network software and network hardware in detail.
External hardware covers menus associated with hardware that is physically outside the computer box.
Other hardware support is associated with hardware that does not easily fit into any of the other categories.
Other software support includes critical components such as filesystems and libraries.
If you want to follow along on your Linux computer, navigate to the /usr/src/linux- x directory and run the make xconfig command. As you go through each section, click on the applicable button in the Linux Kernel Configuration menu.
Examine the hardware kernel settings with a critical eye. If you know that you ll never use the associated hardware, consider deactivating the setting. If you might add the noted hardware in the future, consider creating a module. These actions minimize the size of your kernel and can greatly improve the startup speed and performance of your system.
If in doubt about an active or modular kernel setting, don t deactivate it. There are a number of innocuous -looking kernel parameters that are critical to the basic operation of Linux.
I ve arbitrarily organized several menus in this section. They include the basic parameters associated with starting Linux, recognizing hardware, setting up a CPU, and using experimental components in the kernel.
Previous versions of the kernel included a Binary Emulation Of Other Systems menu, which allowed users to configure support to emulate other Unix-style systems, including UnixWare 7.x, SCO Open Server, and Solaris 2.x. This option is no longer available in the kernel included with Red Hat Linux 9.
If you re using Red Hat Linux in a production environment, make sure that the setting shown in Figure 12.9 is set to n . Otherwise, you might accidentally include experimental kernel drivers and settings.
If you re a developer, be careful. It s a good idea to work on only one experimental driver at a time; if you have problems, you ll know the source. You can find more information on each variable by clicking the associated Help button. The help dialog box for this menu is shown in Figure 12.10.
Normally, when Red Hat Linux detects new hardware on your computer, it automatically installs the driver module, if available. This is possible in part to the Loadable Module Support options shown in Figure 12.11.
You should almost always answer yes to all of these options; they allow you to separate hardware driver modules from the kernel, use drivers from different sources, and load modules as needed.
Otherwise, you would have to include all possible drivers into the main kernel. This would make the kernel large and unwieldy. Some kernels without modules, also known as monolithic kernels, are so big that older PCs aren t able to load them when you try to boot Linux.
You can customize the Linux kernel for your CPU. This loosely corresponds to the different kinds of kernel- x . cputype .rpm packages that you can install directly on your computer. As you can see in Figure 12.12, you can configure the kernel for a wide variety of CPUs.
If you don t see your CPU in the list, find the closest available match. If you have an Intel 32-bit CPU, you can also try 386 for a basic kernel good for all current Intel 32-bit CPUs.
Once you ve selected the processor, you should configure a number of other variables , including special modules that can support multiple CPUs and special features of Toshiba or Dell laptops.
The General Setup kernel menu shown in Figure 12.13 provides several basic hardware, binary, and networking options for the kernel. Look through the list of variables. They fall into a number of categories and some are fundamental to the kind of hardware on your computer. These categories include:
Networking support Some programs require kernel networking support even if your computer never connects to another network or the Internet.
Basic hardware support Normally, Linux kernels are configured with support for PCI, ISA, and PCMCIA cards.
Hot-pluggable support Linux can be configured to support hardware that can be installed or removed while your computer is running.
Power management support Linux supports the older Advanced Power Management (APM) system; support for the Advanced Configuration Power Interface (ACPI) standard is still experimental, that is, not ready for production computers.
In the General Setup menu, click on the PCMCIA/CardBus Support button. You ll see the submenu shown in Figure 12.14. If you re using Linux on a laptop computer, be sure that the appropriate bridges are active.
Several Linux kernel menus organize the settings related to where you can store files and other information. If you have an external storage device, see the menus described in the External Hardware section.
In the Linux kernel, Memory Technology Devices (MTD) includes everything that can store information in a solid state. Examples include the BIOS, camera flash cards, and ROM chips. Remember, some of these might be installed through a PCMCIA adapter. The basic menu is shown in Figure 12.15.
Block devices allow you to mount a storage unit, such as a floppy or a hard drive, on a directory. Open the Block Devices menu, and you ll see something similar to Figure 12.16. Scroll down the menu. You ll see support for floppy drives, regular IDE hard disks, shared network drives, and RAM disks.
These settings are closely related to ones found on the ATA/IDE/MFM/RLL Support menu.
As described in Chapter 03 , Red Hat Linux supports RAID and LVM. Both systems require multiple partitions. Since Linux assigns a device to each partition, RAID and LVM are considered multi-device systems. If you ever intend to use RAID or LVM, you should activate these settings, as shown in Figure 12.17.
ATA, IDE, MFM, and RLL are a bunch of acronyms all related to standard PC hard disk and CD-ROM interfaces. As shown in Figure 12.18, there s an IDE, ATA And ATAPI Block Devices button that you can click to call up a submenu with variables for different drives and chipsets.
The other major interface for storage devices is SCSI, the Small Computer Systems Interface. The SCSI Support kernel menu allows you to activate drivers or modules for basic SCSI hard drives, tape drives, and CD systems. At the bottom of the SCSI Support menu shown in Figure 12.19, there are two submenus:
The SCSI Low-Level Drivers menu includes support for a number of specific SCSI hard drives and RAID devices.
The PCMCIA SCSI Adapter Support menu accommodates PCMCIA cards that connect your computer to SCSI devices.
Figure 12.19: SCSI Support options
Older CD-ROM drives were connected to sound cards. The Old CD-ROM Drivers (Not SCSI, Not IDE) menu includes access to the Linux drivers that were once used for these drives. A number of drivers are available, as shown in Figure 12.20.
As you can see, older CD-ROM drivers are organized by make and model. If you have an older CD-ROM drive that s not on this list, check your documentation. Try the driver associated with a similar make or model. Just remember, these drivers are no longer supported and may not work well with the latest Linux production kernels.
Linux is built for networking. Naturally, it offers several networking-related kernel configuration menus. You can configure basic network software as well as specific devices in the various Networking menus. Not all of these menus are strictly related to networking.
More information on basic network protocols is available in Chapter 20 . Other important reference chapters for Linux kernel network settings are Chapters 21 and 22 .
The Networking Options menu is primarily used to configure network software. While you can activate other protocol stacks such as IPX/SPX, many of the options are related to the primary network protocol for Linux and the Internet, TCP/IP. This is a large menu; part of it is shown in Figure 12.21.
Many of these settings are not obvious; for example, the IP: DHCP Support option shown in Figure 12.21 is used only for remote Linux terminals. Remember, the help menus provide more information on each setting. Several submenus are available:
The IP: Netfilter Configuration submenu allows your kernel to support firewalls using iptables , ipchains , or even ipfwadm . The ipchains commands are associated with Linux kernel 2.2; the ipfwadm commands are obsolete and are associated with Linux kernel 2.0. You can learn more about the current iptables firewalls in Chapter 22 .
The IPv6: Netfilter Configuration submenu allows you to configure firewalls if you re using this more advanced system of IP addressing, described in Chapter 20 . Remember, IPv4 is still in common use today.
The Appletalk Devices menu allows you to communicate with Apple computers over a TCP/IP network.
The QoS And/Or Fair Queuing menu supports networks that allow you to prioritize messages, using Quality of Service parameters.
The Network Testing menu lets you send preconfigured data packets to check the capacity of your system.
The Network Device Support kernel menu allows you to activate any number of drivers for different kinds of network adapters. This is also a substantial menu, as shown in Figure 12.22.
It includes a list of basic network drivers. There are several submenus with hardware-specific drivers. As you can see, network cards were developed for a number of different network systems, such as Ethernet. These submenus include:
ARCnet Devices allows you to use network cards built for a specific type of LAN. ARCnet is a variation on Token Ring; because it s a slow network (2.5Mbps), it is generally not used today.
Ethernet (10 Or 100 Mbit) lets you configure regular and Fast Ethernet adapters. If you don t see your adapter in this list, check your documentation for clones . For example, many older network cards can use the Novell NE2000 driver.
Ethernet (1000 Mbit) permits you to configure Gigabit Ethernet network adapters on your Linux computer.
Wireless LAN (Non-Hamradio) allows you to configure basic wireless networking on your PC, mostly for devices that conform to the IEEE 802.11b standard. Bluetooth support is available under a separate menu. As of this writing, support for IEEE 802.11a devices is not available.
The Token Ring Devices submenu lets you configure specific network adapters designed for this older network system. While Token Ring networks are not in common use, some believe that they are more reliable than Ethernet; thus, you might still find some of these networks in places like factories.
Wan Interfaces permits you to configure network devices that connect two distant LANs in a Wide Area Network (WAN).
PCMCIA Network Device Support allows you to accommodate network cards to this standard, primarily for laptop computers.
The ATM Drivers submenu let you adapt network cards built for Asynchronous Transfer Mode (ATM) networks. ATM is a popular alternative to Fast and Gigabit Ethernet.
If you re configuring your kernel for a network card that conforms to the PCMCIA or PC Card standard, check the PCMCIA Network Device Support menu.
Modern telephone companies translate regular phone calls to data that s often sent over networks such as the Internet. This process is known as telephony . Linux supports a couple of telephony cards, primarily used to help larger businesses translate phone calls to data. The Telephony Support menu is shown in Figure 12.23.
You can configure the Linux kernel to support connections to amateur radios, as shown in the Amateur Radio Support menu in Figure 12.24.
Computers can be networked through amateur radios, using the AX.25 protocol. There is even an AX.25 Network Device Drivers submenu that allows you to configure this type of network connection.
Early digital computer connections over telephone networks were made using Integrated Services Digital Network (ISDN) adapters. These connections are still popular in Europe, and are often the only high-speed wired (128Kbps) option in rural areas of the United States of America. The basic ISDN Subsystem menu shown in Figure 12.25 allows you to configure ISDN with several types of networks and commands.
The Linux kernel ISDN Subsystem menu includes a number of submenus:
The ISDN Feature Submodules submenu allows you to configure a virtual ISDN card and some commands that may be needed for European connections.
The Passive ISDN Cards submenu lets you configure adapters that are generally used by consumers; they re associated with 128Kbps speeds.
The Active ISDN Cards submenu allows you to configure higher-speed ISDN adapters.
Fusion MPT Device Support is a specialty menu for high-speed SCSI devices from LSI Logic. There is also an associated LAN driver, as shown in Figure 12.26.
You can configure the Linux kernel to work with infrared devices that conform to the Infrared Data Association (IrDA) standard. As you can see from the menu in Figure 12.27, there are several infrared protocols for transmitting data. The Infrared-Port Device Drivers submenu allows you to include the appropriate hardware in the Linux kernel or modules.
The Bluetooth specification is based on a radio technology for networks. The range is short ” typically around 33 feet (10 meters ). It s commonly used on portable devices such as handheld computers and cellular telephones. Several portable devices are built on Linux. Bluetooth technology can also be used to connect regular computers in networks. The kernel Bluetooth Support menu is shown in Figure 12.28.
The Bluetooth Device Drivers submenu allows you to use the basic Host Controller Interface (HCI). Different drivers are available for USB, serial ports, and the PCMCIA cards associated with various vendors .
There are three Linux kernel menus for external hardware. Two are related to relatively new standards: USB and IEEE 1394. The other menu addresses older external hardware: parallel port support.
The parallel port is commonly known as the printer port. As you can see in Figure 12.29, you can configure parallel port support in several ways. For example, IEEE 1284 transfer modes support standard bidirectional communication with a printer.
Remember, parallel ports aren t just for printers. For example, there are a number of hard disks and other storage devices that you can connect to the parallel port. It is also a way to sync computers and transfer data. More information is available under the Block Devices menu.
It seems possible that all future external devices will conform to some USB or IEEE 1394 standard. New hardware in both areas is being released at a fast and furious pace. Linux developers are working steadily to keep up.
Linux support for USB is far from complete; kernel support for USB 2.0 standard devices is still experimental as of this writing. More information on Linux and USB is available in Chapter 02 and from www.linux-usb.org . As you can see from the main USB Support menu shown in Figure 12.30, kernel code is available for the major types of USB hardware.
The USB Serial Converter Support submenu allows you to configure serial port adapters. This lets you connect a serial device, such as an older mouse, to an USB port.
As discussed in Chapter 02 , IEEE 1394 hardware is more popularly known by its trade names , FireWire and iLink. Linux support for these devices is still experimental. Associated devices use its high-speed (400Mbps+) capabilities, as shown in Figure 12.31.
This menu is not active if you ve deactivated the development drivers setting in the Code Maturity Level Options menu.
Experimental code is not production-ready. In other words, testing is not complete, and the associated kernel components may not work and could even affect other parts of your system. Use it at your own risk.
Some hardware menus are difficult to put in any of the other categories. Several are related to the ways terminals and consoles work locally and remotely; there s also plug and play, and multimedia.
A character device transfers data to and from a user process, and is often associated with a serial port. The most common character device is a terminal. You can configure drivers for local virtual terminals as well as remote terminals. Some remote terminals can use serial and other physical ports. You can review these options in Figure 12.32.
Character devices also include some surprising kernel settings, such as tape drives, graphics cards, mice, and joysticks. Several submenus are included:
I2C Support is a serial bus protocol required to support a wide variety of hardware, including Video For Linux kernel settings.
Hardware Sensors Support includes a number of devices designed to monitor hardware; it s based on the work of the Linux System Hardware Monitoring project at www2.lm-sensors .nu/~lm78 .
The Mice submenu allows you to configure support for basic pointing devices such as a mouse or touchpad.
Joysticks relate to devices associated with the game port on a PC.
Watchdog Cards are common with embedded devices; they re designed to force reboots if there is no input for some specified period of time.
Ftape relates to older tape drives connected to the 34-pin floppy disk controller. It includes drivers for several makes and models.
The PCMCIA Character Devices submenu lets you emulate serial ports.
Console drivers are straightforward: they allow for consoles, or text-mode terminals, in a graphical screen. The Console Drivers menu is shown in Figure 12.33.
There is one submenu, Frame-Buffer Support. It allows applications to get to the graphical hardware through a buffer. It s experimental for Intel-based systems and generally is not required.
Input core support is required for Human Interface Device (HID) interaction with Linux. An HID is a physical interface that sends signals to your computer, including keyboards, mice, and joysticks. The Input Core Support menu is shown in Figure 12.34.
Linux plug-and-play support in the kernel is straightforward. As shown in Figure 12.35, you can activate basic plug-and-play support, as well as the special commands required for ISA plug-and-play devices.
I2O is the acronym for the Intelligent Input/Output architecture, which allows drivers to be split into modules for the hardware and operating system. I2O is commonly used with embedded devices; most users won t use or need to enable I2O devices in the Linux kernel. The I2O Device Support menu is shown in Figure 12.36.
Linux supports an impressive array of sound cards. While Linux does not support every sound card, you may be able to make some sound cards work by configuring an appropriate alternative, such as a SoundBlaster card. If you don t see a driver for your sound card in this menu, shown in Figure 12.37, check the documentation or consult the manufacturer of your sound card for advice.
Closely related to sound is multimedia. The Multimedia Devices menu may not be quite what you d expect. It includes a submenu for Video For Linux, which requires I2C serial support in the Character Devices menu. It also includes a submenu for Radio Adapters, which includes a list of regular radios that you can install on your computer. The Multimedia Devices menu is shown in Figure 12.38.
There are hardware and software cryptography menus for the Linux kernel. The Crypto Hardware Support menu, shown in Figure 12.39, lets you include support for the Broadcom 5820 chipset, which supports secure web servers. Don t confuse this with the Cryptography Support menu shown in Figure 12.40.
The remaining kernel menus are software menus that can t be classified into any of the other categories. They include basic interfaces for encryption, filesystems, load profiling, kernel debugging, and libraries.
The cryptography support options allow you to use strong encryption on Linux. It goes well beyond the Crypto Hardware Support described earlier, since that was limited to one chipset. The Cryptography Support (CryptoAPI) menu is shown in Figure 12.40.
The Linux kernel File Systems menu allows you to configure the types of formats Linux can read, as well as quotas on each partition. Linux supports a number of filesystem formats, including many that you re familiar with from Chapter 07 . The File Systems menu is shown in Figure 12.41.
Be careful. Linux support for several filesystems is experimental. This includes the module that lets you write a file to a Microsoft NTFS style filesystem, which is labeled as DANGEROUS.
The terms file systems and filesystems are used interchangeably.
I would not activate the NTFS Write Support module. The associated help file suggests that you back up your NTFS volume first, since it will probably get damaged.
The latest Linux kernels are incorporating support for profiling the performance of your system. It s based on the OProfile system described at http://oprofile. sourceforge .net/about.php3; it is currently "Alpha" level experimental software. This menu is not active if you ve deactivated the development drivers setting in the Code Maturity Level Options menu. The Profiling Support menu is shown in Figure 12.42.
The Kernel Hacking menu, shown in Figure 12.43, supports drivers that can help you debug driver or other kernel problems. This menu is generally used by developers.
The Library Routines menu shown in Figure 12.44 includes zlib compression and decompression support for data streams.