Linux Distributions Compared

Back in March, we compared the available Linux distributions. This review draws heavily from that work and offers updated infromations on what is available on PC platforms.

A Linux distribution is a package that contains the Linux kernel, application and utility programs and an installation method. While all distributions are based on the same or similar kernels and many of the same utilities, each distribution has something different to offer the consumer. Thus, while there really isn't a best distribution, there are distributions that are better for different users. In this article, we attempt to offer you enough information so you can select the distribution best for you.

Is this a cop-out? Are we shirking our duty? It has become clear to us that it would be hard for Linux Journal to rank the distributions; our staff members have different personal favorite distributions and defend their choices rationally—occasionally even argumentatively. At Linux Journal, we use Linux extensively—nearly exclusively—and we still don't agree which distribution is the best. We have different priorities, skills, and expectations, and we believe this is true of our readers as well.

Before we get too deep into this review, note that as this is being written, the Linux 2.0 kernel is about to be released (the scheduled release date is June 9, 1996). This new kernel offers some major enhancements. (See the interview with Linus in this issue for details.) The distributions will surely be updated to take advantage of this new kernel. Look for an updated review in the special Buyer's Guide issue of Linux Journal, which will be out in February 1997.

Some of the descriptive text that originally appeared in the March 1996 review article has been removed. If you want to look at all the information presented in that issue, it is available on our web site, /issue/0023.

Version Numbers

Many new Linux users confuse the version of the distribution they are using with the version number of the kernel. As mentioned above, the Linux kernel is just one of the many pieces of software needed to create an entire distribution. Each distribution uses version numbers of its own to keep track of the state of the entire distribution, which has more to do with the collection of programs than with the particular kernel involved. Indeed, many distributions have included two or more different kernel versions in one version of the distribution.

However, it's worth understanding the version numbers used for the Linux kernel itself, since the kernel is a key part of any Linux distribution. Kernel version numbers come in three parts: the major version number, the minor version number, and the patch-level. The Linux kernel is being constantly developed by a large team of developers, and while they add new features, they occasionally introduce new bugs. To keep this from causing a problem for Linux users, the developers periodically dedicate several months to fixing bugs and creating a very robust, stable kernel. When this is done, a stable version is released with an even-numbered minor version number. The developers then begin adding features (and temporarily breaking things sometimes) to development versions with odd-numbered minor version numbers.

Unless you want to live on the “bleeding edge” of Linux development, you will probably want to stick with the latest stable kernel version. As of this writing, the latest stable kernel version is 2.0, but most distributions are based on the previous production kernel, which is 1.2.13.

Value Added

Several vendors are adding value to existing distributions in various ways. For example, Caldera is adding commercial components to Red Hat Commercial Linux to create their Caldera Network Desktop. Trans-Ameritech bases their value-added work on Slackware, trying to make it easier to install.

Binary File Formats

One of the most common sources of confusion in the Linux world today involves binary file formats (See What is a binary file format?). Most vendors have now switched from the older “a.out” binary file format to the new “ELF” binary file format.

ELF is the binary file format used by Unix System V Release 4, but that doesn't mean a Linux binary in the ELF file format is compatible with SVR4, nor does it mean that SVR4 binaries can run on Linux. The capability for Linux to run some SVR3 and SVR4 binaries is provided by the BCS2 compatibility package, which most distributions include.

One of ELF's features is extensibility; with ELF, it is possible for developers to add features that weren't thought of when the format was first designed. For instance, one Linux developer has noted that he could add icons to ELF executables without breaking any software. Icons weren't considered when ELF was developed, but the format is extensible enough that they can be easily added.

But perhaps you don't care if you can add an icon to your ELF binary, or even if anyone else can. What does ELF do for you? Fundamentally, it makes life much easier for Linux developers. It also has a few esoteric features which make it practical to support some software under Linux that was previously impractical to support. So it gives you more and better software available for Linux.

What do we mean by based?

ELF-based means the entire distribution or, at least, almost the entire distribution, consists of ELF binaries. Binaries in the a.out format are not provided with the system, or if they are provided, they either aren't part of the “core” of the system or they are not available in ELF format.

By contrast, “supports ELF” means that, while the distribution is partially or completely built of binaries in the a.out format, the ELF programming libraries are included so that ELF binaries will also run.