Life in any operating system begins and ends with the kernel. When properly configured, any operating system can work like a wonderful ballet where hardware is ready just when you need it. When problems crop up, the kernel can slow or stop your computer.
With the Linux kernel, you can configure hardware, filesystems, networking support, and more. Hardware drivers can be configured within the kernel or as separate modules.
If you ever need to reconfigure your kernel, you ll become familiar with the Linux Kernel Configuration menu shown in Figure 1.1. As you can see, there are a number of different hardware components , such as SCSI and USB devices, that you can configure through the kernel. Each of the buttons shown in the menu opens individual submenus.
You can also see some kernel options not directly associated with hardware, such as Networking Options and Code Maturity Level Options. For example, in the Networking Options menu, you can set up Linux to work with different network protocols. You ll find detailed information on this process in Chapter 12 .
The /proc directory is a virtual filesystem stored in your RAM. It documents the way the Linux kernel interacts with your computer. A number of these files document how the Linux kernel reads your hardware. When you read the right file, you can find hardware settings for different components. You can find more information on /proc in Chapter 11 .
You can set up every hardware driver within the main part of the Linux kernel. This would be a monolithic kernel. But for most configurations, there are many hundreds of hardware drivers. If you put them together into one kernel file, the sheer size of the hardware drivers can overload your system.
It is usually more efficient to configure a modular kernel. Various kernel modules, normally associated with various hardware components, are loaded after Linux starts on your computer. Figure 1.2 shows an example from my desktop computer.
As you can see, there are hardware modules, such as usbcore , to support USB hardware. There are also software modules, such as smbfs , to support the Samba filesystem. For more information on managing kernel modules, see Chapter 11 . If you want to make sure that your kernel is modular, see Chapter 12 .