Linux Version 2.0
As I write, the final touches are being put on Linux version 2.0. By the time you read this, it probably will have been released, and vendors will be working on distributions which include it. Do you want to upgrade?
If you have hardware that was not supported by 1.2.12, or not supported well, you probably have good reason to upgrade to 2.0. But even if your hardware is supported perfectly well by Linux 1.2, you may still want to upgrade. Linux 2.0 is fast. Swapping is fast. Under X, windows appear more quickly. X runs more smoothly. Performance under heavy load is improved. After a few minutes of version 1.3.100 (almost 2.0...), I was not interested in running version 1.2.13 any more.
Whether you choose to upgrade by obtaining all the new pieces from the Internet, or by waiting for your distribution vendor to provide you with a new version, you probably do want to upgrade.
There is a small price to pay for upgrading: several system utilities need to be upgraded in order for 2.0 to work. The system will still run with the old versions, but some functions won't work; in particular, the format of the /proc filesystem has changed, and the ps utility has to be replaced. Also, in order to use PPP, a new pppd daemon needs to be installed. But unlike the upgrade from 1.0.9 to 1.2.13, when we had to publish an article on how to upgrade here in Linux Journal, Linux 2.0 comes with a files called Documentation/Changes that tells you exactly what you need to change and where to get the new versions.
That's just a taste of the new focus on documentation; the Documentation directory tree includes documentation on everything from hunting down and reporting bugs to Linux's support for SMP (symmetric multi-processing: multiple CPUs in one machine, all sharing the same main memory). There is also an improved configuration system: it includes both text-based and X-based menuing systems, with a built-in help system to explain each configuration choice. Instead of make config, choose make menuconfig or make xconfig.
I mentioned improved performance. This is due both to significant restructuring of memory management and significant improvements in task scheduling. These work together in several ways to improve both throughput (the total amount of work that can be done in a certain amount of time) and interactive response to s user's input (typing, mouse movements, etc.).
Automatic, on-demand loading and unloading of kernel modules is available, and almost every driver can be compiled as a loadable module, saving precious, unswappable kernel memory. See Auto-loading Kernel Modules elsewhere in this issue.
SCSI support has also been improved; wide SCSI support now includes all 15 possible devices on supported wide SCSI controllers and SCSI error handling has been improved. Improved SCSI drivers are available for the BusLogic MultiMaster series, the Adaptec 2940 series, and the NCR53c8xx series, among others.
Those of you with IDE have not been ignored—support for several new high-end IDE interfaces is available, and bug fixes for the buggy interfaces (RZ1000 and CMD640) have been incorporated. Support for IDE tape drives is now included.
Linux 2.0 includes SMP support for Intel MP-compliant systems. In addition, some SPARC SMP systems are supported by the experimental Linux/SPARC source included, as well as improved file locking, including a full implementation of mandatory file locking. The /proc filesystem has been expanded and far more system information is available in /proc. A “watchdog” has been developed especially for unattended systems. This includes software and optional hardware support for rebooting a hung system.
Native AppleTalk networking has been added to Linux's impressive list of supported networking protocols, and the existing protocols (especially TCP) were improved. Filesystem support for NCP (Novell) and SMB (MS Lan Manager, etc.) network filesystems has been added. In addition, the NFS filesystem has been greatly improved in conjunction with the memory management improvements; it is now as fast or faster than most other implementations. It is also now possible to keep your root file system on an NFS server, which was made practical by those changes.
There is also expanded support for network devices: many ISDN cards, some frame relay cards, and general synchronous networking support to make it easier to add further synchronous network support. Support for several 100Mbps Ethernet cards, including the popular DEC tulip series and the 3COM 3C590 series, has been added. The improved PPP code now supports “BSD compression”.
There are also (clearly marked!) features which are experimental in nature.
More multiple platforms support than ever is included in 2.0. While Linux/Alpha is now as stable as Linux/i86, experimental support for SPARCs, PowerPCs, Amigas, Ataris, M68K/VME and a few MIPS-based platforms is also included.
Experimental support for running Java applications as “native binaries” is available by making them look almost like shell scripts to Linux, running the proper interpreter automatically when you attempt to run the Java application.