Linux 2.4 will replace 2.2 as the latest stable release of the Linux kernel RSN (Real Soon Now). It could happen any day, but we all know that the Linux development model doesn't subscribe to arbitrary deadlines, nor does it push code out the door until it's ready. The 2.4 kernel promises a multitude of changes and advances, even more sweeping than the differences between 2.0 and 2.2. Change is a Good Thing, but on the other hand it burns administrator cycles, and can cause downtime for the unprepared.
Of course, any system change to a production environment requires research, planning, and good execution to be successful. Sometimes, the best plan is not to change something—unbroken things don't require fixing, right?—and stick with the stable status quo. So I don't expect system administrators to upgrade their Linux environments en masse the day that Linux 2.4 is declared stable. Some things, however, are just too good to ignore—or ignore for any length of time. The Linux 2.4 kernel includes some features that were, quite frankly, lacking in previous versions, and that narrow the gap between Linux and "commercial" software. (The list of "But it doesn't have foo or bar" excuses that managers may give for not running Linux is becoming shorter.) This article covers some of the changes you can expect from version 2.4 of the Linux kernel, and describes why you might want to go ahead and start looking at it for your production environment, even before it hits the streets as "officially" released. (Note: Version 2.4.0 of the Linux kernel was officially released January 4, 2001, about a week after this article was written, hence the anachronisms.)
First, a little background. Stable kernel versions have even, minor numbers; for example, 2.0, 2.2, and 2.4. The 2.4 kernel has been around since 2.4.0-test1 was released on May 24, 2000, although it hasn't yet been officially released as "stable" at the time of this writing, hence the suffix test at the end of the version number. At the time of this writing, the latest release candidate is linux-2.4.0-test12 (made available on December 11, 2000). If you want to push yourself all the way to very edge, you can install the kernel developers' patches; for example, patch-2.4.0test13pre3-ac1.bz2 will take you to Alan Cox's third set of 2.4.0-test13 prerelease patches against the 2.4.0-test12 kernel. Prior to the 2.4.0-test versions, you could either patch your 2.2 kernel or take your chances with the development kernel version 2.3, dubbed "unstable" (often with good reason), if you needed features not found in the 2.2 kernel. By the way, the latest code is always available at http://www.kernel.org/pub/linux/kernel/. If you want to get prerelease patches, try http://www.kernel.org/pub/linux/kernel/people/alan/—in this case, the 2.4.0test/ subdirectory under the preceding URL.
Okay—it's given that we could take ourselves right to the bleeding edge of Linux kernel releases, but what makes it worth our while?
The 2.4 kernel contains lots of new device support. Some of this support is aimed at the desktop and therefore is less interesting for production systems. For example, the driver support for USB, IrDA (infrared), frame-buffer graphics devices, video for Linux support (TV and radio cards), /dev/agpgart support (allows high-speed access to AGP devices through the motherboard chipset), XFree86 DRI support for some high-end graphics cards (DRI is the Direct Rendering Infrastructure), and the greatly improved sound hardware are more likely to be of use to gamers and multimedia folks than to find their way onto your next file and print server.
Along with these features, however, comes support for more SCSI adapters, almost any ISDN card you can dream up, a growing number of hardware RAID controllers, FC-AL adapters (and disks), and the ever-increasing collection of network devices, such as new gigabit Ethernet, token ring, ATM, and FDDI drivers. In addition to specific devices, a couple of new classes of devices are now supported, such as Firewire (IEEE 1394), Disk-on-a-Chip, and other solid-state storage devices such as those made by MTD (Memory Technology Devices). Support for flash memory devices as hard drives paves the way for an entire area of Linux deployment in harsh and minimized environments where a disk drive is not practical.
Looking ahead, and to ensure that driver development cycles will be even quicker in the future, I2O support is now available. In case you're not familiar with I2O, the following excerpt from the kernel help file explains it:
The Intelligent Input/Output (I2O) architecture allows hardware drivers to be split into two parts: an operating system-specific module called the OSM and a hardware-specific module called the HDM. The OSM can talk to a whole range of HDMs, and ideally the HDMs are not OS dependent. This allows for the same HDM driver to be used under different operating systems if the relevant OSM is in place. In order for this to work, you need to have an I2O interface adapter card in your computer. This card contains a special I/O processor (IOP), thus allowing high speeds since the CPU does not have to deal with I/O.