Table of Contents

  1. Introduction
  2. Distributions
  3. Users and Permissions
  4. Graphical Environment
  5. Command Line Environment
  6. Hardware Support
  7. Conclusion
  8. Questions?

Introduction

Linux means many things to many people. To some, it's a revolutionary operating system. To some, it's simply a Unix-like kernel that was in the right place at the right time. To some, it's the greatest Open Source/Free Software project ever undertaken.

Literally, Linux is a kernel, the heart of an operating system. It was created in 1991 by a Finnish university student, Linus Torvalds, and it slowly grew from a 386-only toy kernel to a full-featured, modern kernel that runs on dozens of computer platforms. The "Linux Operating System" is really a collection of programs living on top of (and typically distributed with) a Linux kernel. For this reason, some advocate calling the operating system GNU/Linux — the GNU operating system, running on a Linux kernel.

In this presentation, I'll call the operating system Linux, and the kernel itself will be called the Linux kernel or simply the kernel. This doesn't mean that I agree or disagree with the GNU project's reasons for recommending GNU/Linux as the operating system's name. It's simply a mouthful to say!

Linux is a Unix-like operating system, which means it is similar to and somewhat compatible with various flavors of the Unix operating system. Unlike some other OSes, such as FreeBSD and Mac OS X, Linux contains no Unix source code; it is a clone and not a direct descendant of Unix.

As mentioned above, the Linux kernel is Open Source — and also Free Software — which means that its source code is freely available and open for anyone to modify. (Being Free Software also gives users some other rights that we won't go into here.) The Linux kernel is distributed under the GNU General Public License, a popular open source license, or GPL. The GPL includes several requirements, and one is that modifications to the code must be distributed freely. No one may take the Linux kernel's source code, modify it heavily, and then distribute that without also making the code they've added available to everyone. This license grants rights under copyright laws; as of this writing, the community's understanding is that people claiming that the GPL (or other similar licenses) violates copyright laws are are incorrect. (Disclaimer: IANAL, and there is no body of case law to support or refute this.)

So, if the source code is free for all to use and modify, who "owns" the Linux kernel? The kernel is effectively owned by the entire community, and every person who has contributed code to the kernel holds a copyright to portions of it. No one owns the entire kernel, not even Linus Torvalds. Linus does hold a trademark on the name Linux, however.

Last, but not least, the logo of Linux is worth noting. Linux' official mascot is Tux, a penguin created by (and copyrighted by) Larry Ewing.


Distributions

Unlike Windows, there is no official release of Linux as an operating system. No single organization is responsible for creating or maintaining it. Instead, most users obtain Linux by installing a distribution.

Distributions are created by organizations and companies, and they typically consist of a Linux kernel, various programs for users (such as editors, music players, compilers, and word processors), an installer, and utilities. The largest differences that people usually notice between different distributions are in the installers — some are simple and ask few questions, some ask many detailed questions, and some are even simply a text document with a list of commands to perform!

So, which distribution should you choose? That's a hard choice to make, because there are so many options. If you have a spare computer or a free partition on your hard disk, the best option might be to try several until you find the one that fits you best. If you'd prefer to just install one and not spend the time testing multiple distributions, members of the Linux Users Group can help you pick a distribution that fits your needs.


Users and Permissions

Linux is a multi-user operating system. It was designed to support many users with different levels of access to the system. A user typically has a home directory that only they can access, protecting their files from other users of the system. Compare this to Windows 95 and its brethren, which had no such capabilities, allowing anyone using the computer to see and modify all files present on it.

The "most important" user in Linux is known as root. This is the administrator account, with full access to everything on the system. With root access, you can view all files on the system, change all settings, and — perhaps most seriously — break the system. Most Linux distributions recommend that users not run as root for daily use. You should use another user account and only log in as root when you need to.

In Linux, files can be given permissions to restrict who may access them on the system. File permissions can be assigned based on the user ("I can read this file"), group ("members of the 'games' group can run this program"), and all users ("all users cannot write to this file" — note that the user and group settings may override this).


Graphical Environment

The graphical environment you'll see running on most Linux systems is called X-Windows, or just X. X-Windows was developed for versions of Unix in the 1980's and has grown and evolved through different versions up through today. The current release as of this writing is X11R7.0, released by the X.Org Foundation.

X-Windows allows programs to appear in graphical form on the screen, but X itself doesn't define how applications look. That responsibility falls to a toolkit, a program that works with X-Windows to draw the application on the screen. Toolkits allow buttons, text boxes, menus, and other major elements of an application to look the same. Several popular toolkits exist, with the most common ones tied to a desktop environment.

But, what is a desktop environment? Desktop environments are collections of programs that attempt to create a complete, uniform environment for users to work in. They usually include things like music players, mail programs, web browsers, standard icon sets, screen savers, and themes. The two most popular desktop environments available today are KDE and GNOME.

One of the most powerful features of the Linux graphical environment is that X doesn't limit you to running only programs from one desktop environment or another. Any X-Windows program can be displayed on the screen, so you can mix and match between them to find the best combination of programs for your day-to-day use.

A lesser-known feature of X-Windows is that it is designed to operate using a network paradigm. The screen acts as a server and each program acts as a client connecting to that server. Most people run the server and client on the same computer, but you can run programs on another computer and display them on your screen using a network connection. This is known as X forwarding.


Command Line Environment

In the past, the only way to use a Linux (or other Unix-like) system was the command line. Although many Linux systems today run in graphical mode for a majority of the time, the command line is sitting underneath and making everything work. There are also many Linux systems today that run without a graphical interface, and the command line interface, or CLI is the way most people interact with these systems.

The Linux command line is, for all intents and purposes, just like the traditional Unix command line. The commands available are more or less identical to their older Unix counterparts, aside from a few minor details, and the look and feel is the same. People experienced with the Linux command line can easily use another Unix system, and the opposite is also true.

The heart of the command line is a shell. The shell is the program that displays the command prompt and interprets input. For most people, the shell is so transparent that they never realize they're using one at all. "The command line" is really just a shell's representation of the system. The default shell on most Linux systems is BASH, the Bourne-Again SHell. You can also use other shells, like the traditional Ksh (the KornShell), the older Csh, or the innovative Zsh. They are all similar, but each has unique features and quirks that sets it apart from the others.

You can use a command line to do nearly everything that you would use a desktop environment for. There are e-mail clients, editors, games, and even web browsers designed for command line use. Images cannot be displayed using a standard command line, so tasks that require viewing or manipulating images are the only things that are effectively impossible for a CLI to do. Many technologies, such as e-mail, started out as command line technologies, so programs doing those things can often be very advanced. Command line editors are also very powerful.

From a graphical environment, you can access a shell using a terminal emulator, or terminal for short. Most terminals display a command line inside of a window, and many offer features such as copy-and-paste using the clipboard, tabbed interfaces, and drag-and-drop text and file management. There are many terminals available, and each major desktop environment bundles its own, so your choices here are wide and varied.


Hardware Support

One of the key strengths — and yet, also problems — of Linux lies in hardware support. The list of devices supported by Linux is extremely long and impressive, especially considering that many of the drivers for those devices were written without any help or information from the companies that designed and manufactured them. Still, not all devices are going to work properly with Linux, and that is one of the largest barriers to switching for people looking to leave their current platform (typically Microsoft Windows).

Linux has strong hardware support in a lot of areas. Its drivers for storage devices and network cards (excepting wireless drivers — see more below) are high-quality and very dependable. Printer drivers are also stable, especially for older printers. Unlike Windows and some other operating systems, most drivers are included with Linux itself. Installing a driver is a rare occurrence on Linux, because most hardware Just Works™.

The biggest stumbling blocks faced with driver support in Linux are in areas where manufacturers have moved "intelligence" off of the microchips in the hardware and onto the computer's processor. These designs are often used in modems and some wireless network cards.

Modem support in Linux has traditionally been problematic because many modem manufacturers create "software modems" that use the processor to interpret the signals from the phone wire instead of carrying onboard chips to perform those tasks. These manufacturers often refuse to release driver specifications. Some modems have been reverse-engineered, but many will not work under Linux. Thankfully, the proliferation of broadband has lessened the impact of this problem over time.

Wireless network drivers in Linux are typically very good, but some wireless cards have "software radios" or other features that require the computer's processor to handle tasks that would normally be delegated to chips on the wireless card. Some wireless vendors refuse to cooperate with the Linux community to develop viable drivers for their devices, and this has spawned efforts such as a program which emulates Windows' driver interface to allow Windows network drivers to interface with Linux. (Unfortunately, this only works on x86 systems, meaning users running on alternative platforms like PowerPC and SPARC remain unable to use these devices.) The Linux Users Group can provide assistance if you are trying to get a wireless card working under Linux.

Conclusion

This presentation's look at Linux (the kernel and the operating system) has been very broad and hasn't focused much on the minute details of the technologies and capabilities available on the platform. Throughout the semester, the Linux Users Group will present in more detailed form on subjects relating to the Linux experience. You can also explore the Articles section to read the materials prepared for earlier LUG presentations.

Linux is a very flexible and powerful platform, and we encourage anyone who hasn't used it before to try it out and see if it meets their needs. It can be used in a variety of environments, from embedded devices to desktop systems to servers. You'll find it running in computer labs, on your TiVo, inside of Sharp's Zaurus line of PDAs, and even on satellites orbiting the Earth. For many people, Linux on the desktop is a viable and powerful alternative to other operating systems like Windows. We'd love to help you explore Linux and make it work for you.

If you're interested in installing Linux but don't feel comfortable doing it yourself, please stop by one of LUG@GT's InstallFests and we'll help you set it up step by step.

Welcome to Linux!


Questions?