These pages present some useful information about Linux and our systems:
Our lab has a network of computers configured to run the GNU/Linux operating system. These pages are intended to provide information about what Linux is, how our particular network is set up, and how to do some basic and advanced things in Linux.
Linux is a Free operating system (OS) kernel. An OS is a piece of software that controls the hardware at a low level, and allows other programs to run. UNIX©, Mac OS X©, and DOS© are all examples of OSes. Recent versions of Microsoft Windows© also include an OS, but are many other things besides. In the first sentence, the word free means "free as in beer," but it also means "Free (with a capital F) as in freedom." That is, the full source code for the Linux kernel is freely available for anyone to download, read, and modify. The only restriction is that if you modify the kernel and then give your modified version to someone else, you also have to give them the source code for your changes. This is often considered to be an unreasonable restriction, but it is no more unreasonable than not allowing access to the code in the first place. In addition, having access to the source code allows you (or others) to fix problems that may arise when using the software. This is analagous to being able to open the hood of your car - you may not tinker with the parts yourself, but you'd certainly like your local mechanic to have access!
When you start up the computer, the first thing that happens (simplifying things a bit) is that the OS gets loaded. However, an OS by itself is not very useful in most cases. In order to interact with the computer, you need to run programs. Many of the programs that run under the Linux OS were developed as part of the GNU project, and most of the rest were created using compilers and libraries written by GNU. Hence the combination of the OS and programs is often referred to as GNU/Linux. Surprisingly, the vast majority of these applications are Free, having been donated to the Linux community through the efforts of software developers worldwide, working either independently or on behalf of a company. In addition, many software packages (MATLAB, Opera, and RealPlayer, for example) are closed-source (meaning you don't have access to the source code), and often cost money, just like most software for Windows. This is a Good ThingTM, since it allows us to run commercial software that would otherwise never get released for Linux.
With the wide range of Linux software that is freely available, it can be a challenging task to collect all the software you need and install it on a computer, much less keep up to date. To make those tasks easier, many organizations have developed Linux distributions: a combination of the Linux kernel, various software programs, and "glue" to hold it all together. Since the kernel and programs are nearly the same from one distribution to the next, the differences are primarily in the glue layer. There are more than a hundred Linux distributions available. One of the most popular is RedHatTM, which is what we used in the lab for several years. More recently, a group called Gentoo has released their own distribution, which is more powerful in many ways. Our new computers, some of our experiment machines, and our web/mail server all run Gentoo now.
The Gentoo Linux distribution is unique in many ways. Some of the advantages of Gentoo are
Gentoo's power comes largely from its package management system, Portage. Portage is a ports-based system, meaning that it manages the process of downloading, compiling, and installing the source code for the packages you want. Our network is set up so that the compile step uses a program called distcc, which splits the compile job among all of our new machines, speeding the process up considerably. You can use distcc when compiling your own programs, too - just put CC=distcc near the top of your Makefile, and make sure to set the DISTCC_HOSTS environment variable in your shell (the easiest way to do this is to type source /etc/profile). There are two primary programs that you should use to interact with Portage: