CONTINUED

Distributions

GNU/Linux distributions (or distros, for short) come in over one hundred different varieties and feature various tools like graphical installation utilities, software package management, customized desktop environments, proprietary hardware drivers, and kernel management programs. It's likely that there is at least one distro that will work for any given computing situation.

Many modern distros are based on other, older distributions. For instance Linspire, Mepis, Knoppix, Xandros, and Ubuntu are some well-publicized examples of GNU/Linux distributions that are based on a modular, easily updated distribution called Debian. Others are based on Red Hat, Gentoo, and Slackware.

There is a third category of GNU/Linux distribution which compiles itself and its programs from source code; these are generally referred to as source-based distributions. These are usually geared toward more advanced users. Examples of source-based distributions include Gentoo, Lunar, and Onebase. It's probably not a good idea to start your GNU/Linux adventures with something this advanced.

If you're having trouble deciding which distribution to start with, we recommend Fedora Core, as it is easy to install and use, and generally has excellent hardware compatibility. If you'd like to read up on some of the different GNU/Linux distributions, check out http://distrocenter.linux.com/ .

The levels of GNU/Linux

GNU/Linux is understood best in layers or levels. Starting from the most basic, these are the levels of GNU/Linux:

THE KERNEL: the fundamental instruction set for nearly every low-level aspect of the machine. The Linux kernel can contain the initial code for resource allocation and security, as well as the instructions necessary for the hardware to run (in other words, it's a low-level hardware interface). Furthermore, based on how the kernel was compiled, it can also decide who can log into the system and what permissions they have. The kernel is the most basic level of the OS but is more or less useless without libraries, shells and other important programs from the GNU Project.

THE SHELL: software that interfaces with the kernel code and all software installed on the machine. This interface can be at a very low level or a very high level depending on the privileges the user is given. This privilege hierarchy is called user permissions and is reflected by the amount of control the user currently logged into the system actually has. This can be counter-intuitive, so be careful! The more control - or more permissions - a user is allowed, the lower the level of interfacing (the shell) between the kernel and the machine. A low-level shell open to a user indicates a high degree of privilege assigned to that user, and therefore more overall control is allowed.

A shell allows you to type commands in a human language into a command line interface and then the shell passes the instructions to the kernel in machine language. The shell is not part of the kernel; it is a command language interpreter that uses the kernel to execute programs, create, delete, and edit files, and change settings on the machine. Examples of shells are BASH, TCSH, CSH, ZSH, and SH. Most GNU/Linux distros use BASH (which stands for Borne Again SHell) by default. A greater exploration of file permissions can be found in Appendix A.

X WINDOW SYSTEM: (sometimes called an X server) a graphical framework that rides on top of the shell. It allows X clients (programs that require the X server) and desktop environments or window managers to run. In other words, the X Window System allows GNU/Linux users to benefit from a graphical user interface.

DESKTOP ENVIRONMENTS AND WINDOW MANAGERS: graphical user interfaces that allow you to run graphical software, manage files, and perform shell commands through the interface. In other words it provides icons, menus, etc. that will in turn perform shell commands or communicate with the kernel. It also provides a high resolution workspace from which you can play graphic-intensive 3D games, use modern Web browsers, and any other software that requires a high resolution and color depth. KDE, GNOME, and Xfce are examples of desktop environments. There are distinctions between desktop environments and window managers: a window manager is a little ``thinner'' than a desktop environment. It does not have a desktop, icons, or specialized software modules to control system functions like a desktop environment does. Instead, a window manager uses a simple menu system to run shell commands. You can use a window manager in conjunction with a desktop environment to provide a desktop for icons, and a file manager to organize your files graphically. Some examples of window managers are Fluxbox, Enlightenment, and IceWM. If you have a slower computer, you might find better performance with a window manager than a full-blown desktop environment.

The GNU Project

GNU stands for GNU's Not Unix, which means that while a GNU-based operating system is designed to look and operate like Unix, it is not truly an identical copy of it. The GNU Project was started by Richard Stallman in 1984 and through the efforts of many fine software developers it grew into what it is today.

While a university student in Finland, Linus Torvalds finished the first Linux kernel in 1991. When that kernel was then combined with the GNU Project, it formed a complete operating system known as GNU/Linux. While other kernels have been used in conjunction with the GNU Project, such as the Mach, BSD, and HURD kernels, the Linux kernel is by far the most popular and available. This popularity is why GNU/Linux is often shortened to just ``Linux.''