Basic Linux Training
Lesson 1: An Overview of Linux
Table of Contents
After Bell Labs withdrew from the project, in April, 1969, Ken Thompson, Brian Kernighan and Dennis Ritchie sketched out an operating system that would meet Bell Labs' needs. When Thompson needed a development environment (1970) to run on an unused PDP-7 in the lab, he implemented their ideas in assembler language. Brian Kernighan gave the system the name Unics (as a pun on Multics) but soon became UNIX.
Later, Dennis Ritchie and Brian Kernighan invented the C programming language, a major boon to reusable and portable code that can be used on any platform. In 1973, UNIX, was rewritten in C as Version 4. About that time, Thompson and Ritchie published an article in one of the technical journals about the UNIX system. Several universities contacted Bell Labs about UNIX, signed a non-disclosure agreement, and got the tapes and manuals "for educational purposes."
Because of that generosity, many universities used it in their curriculum, and computer science students did much of the experimenting and development work. Two major hot-beds of Unix development were at the University of California, Berkeley, which later became BSD (Berkeley Software Distribution), and M.I.T., which eventually gave us the Free Software Foundation and the GNU project, and the X Window System.
Because UNIX was written by engineers and programmers for engineers and programmers, it may not appear particularly intuitive or user friendly to first time users. It was originally designed and used for processing documents. connecting several workstations to a mainframe computer, and connecting several mainframe computers together.
Unix today has two major versions: System V (or SVR4 from Unix System Laboratories, a Bell Labs spin-off which took over the development of UNIX when it became a commercial product), and BSD (Berkeley Software Distribution, which came out of the University of California, Berkeley). The USL version is now up to its forth release, or SVR4, while BSD's latest version is 4.4. However, there are many different versions of Unix besides these two. Most versions of Unix have been developed by commercial software companies and derive from one of the two major versions.
UNIX (upper case) is a trademark of The Open Group. Unix refers to Unix versions in general, regardless of the source; usually it is simply referred to as SVR4 or BSD 4.4.
Linus Torvalds, then a student at the University of Helsinki, began searching for ways to get more out of Minix in the spring of 1991. Initially, this was a program that would switch between printing 'AAAA' and 'BBBB'. Later, the project mushroomed into exploring the task switching capabilities of the Intel 80386 chip, and by July interest in POSIX compliance. (POSIX is an attempt to standardize the operating system.) In October, 1991 Torvalds posted the source code for the new kernel (version .02) on Usenet. Three years later, in 1994, version 1.0 was officially released.
One of the early 'wars' on comp.os.minix between Tanenbaum and Torvalds is preserved. I'll leave it to you to decide who actually 'won' - or whether it was a draw.
Linux supports all of the popular Unix software, including the X Window System. (X is a rather large program from the Athena Project at MIT allowing computers to create a GUI (graphical user interface), and is used on many different platforms.) Linux is mostly System V compatible, mostly BSD compatible, and mostly POSIX-1 compliant.
Officially, anybody can create a Unix operating system, as long as it passes tests from X/Open. Lasermoon, Ltd. has a certified POSIX compliant version of Linux that also has been licensed by Caldera for its Open/Linux. Other POSIX compliant versions of Linux are likely to follow in the near future.
Many of the utilities included with Linux distributions are from the Free Software Foundation and are part of the GNU Project. The GNU Project is an effort to write a portable, advanced operating system that will look a lot like Unix. Portable means that it will run on a variety of platforms, rather than being tied to only one CPU chip and architecture. Linux, however, is not easily ported because it was designed and written specifically for the Intel 80386 chip, and exploits everything this particular CPU has to offer. While it is most popular on the PC, the Linux kernel has been ported to Power Mac hardware, Sparc workstations, DEC machines, and other platforms.
At its core, the Linux kernel is a three disk set that offers a command line and will respond to the core UNIX commands. The real usefulness for the kernel comes from the additional software in the form of utilities and programs from the Free Software Foundation and GNU, and from the BSD developed networking and telecommunications programs.
Linux kernel development has split into two different branches. The first, signified with version numbers starting with 1.0 and using even numbers is supposed to be a more stable, dependable version of Linux. The second, signified with versions numbered 1.1 and using odd numbers is a more daring, quicker developing and therefore more buggy version of Linux for the adventuresome (or those with lots of time on their hands to do the maintenance to the system that will be required).
The Linux kernel is a large system and unfortunately contains bugs. They're fixed, of course, almost as soon as they're found. Although some people still experience bugs regularly, bugs that effect everyone are few and far between. Of course, those are just the kernel bugs. Bugs can be present in almost every facet of a system, and inexperienced users often have trouble separating bugs from features ; - )
One area that Linux is notorious for is hardware compatibility. Because the manufacturers will not write the device drivers for Linux, it is up to Linux hackers to figure it out mostly by trial and error, and hack the drivers with little or no help from the manufacturers. As Linux becomes more popular, the manufacturers are beginning to realize the potential market, and will be co-operative. Project Beowulf is making some significant progress in providing device drivers for inexpensive, off the shelf hardware.
BTW, according to Linus Torvalds, 'Linux' should be pronounced with a short 'i' sound, like 'prInt', 'mInImal', etc. Linux should rhyme with Minix, another Unix clone. It should not be pronounced like (American pronunciation of) the `Peanuts' cartoon character, Linus, but rather 'LIH-nucks'. And the 'u' is sharp as in rule, not soft as in 'ducks'.
Linux has been copyrighted under the terms of the GNU General Public License (GPL). This is a license written by the Free Software Foundation (FSF) that is designed to prevent people from restricting the distribution of software. In brief it says that although you can charge as much as you'd like for giving a copy away, you can't prevent the person you sold it to from giving it away for free. It also means that the source code must also be available. This is useful for programmers. The license also says that anyone who modifies the program must also make his version and source code freely redistributable.
While the GNU General Public License covers the Linux kernel, the GNU Library General Public License covers of the subroutine source code in the libraries used by many applications.
The BSD Copyright and X Copyright are slightly different.
Please note that those two documents are copyright notices, and not user licenses. They do not regulate how you may use the software, merely under what circumstances you can copy it and any derivative works.
Every Linux distributions comes with all the development software, Internet software (including Netscape but not the other proprietary software you may be familiar with in DOS/Windows), and system related software you'll need. While Linux does come with games, some office related software, they do leave a lot to be desired, as do 3-D graphics. As with any operating system, you can spend large amounts of money for commercial office suites. Applixware, StarOffice and other commercial software with the features of MS Office tend to run cleaner and faster than their MS Windows counterparts.
Linux, like all Unix, already has hundreds of specific tools that do one thing exceedingly well, but nothing in the way of a 'killer' application, although TkDesk comes very close along with several others still in alpha testing and development.
There is commercial software available for Linux; WordPerfect and Novell NetWare, are probably the best known examples. In addition, some commercial applications from the Unix family, such as Motif are also available. Commercial software for Linux/Unix has basically the same conditions as commercial software for DOS/Windows or any other operating system - you get a license to use the binary executable, documentation, and support, but you do not get the source code.
A lot of the older, text-based Unix software for Linux does have a steep learning curve. The other more modern Linux software is often for X Window System and is very easy to use and learn.
Just like any other modern Unix, Linux supports Java applications, compiles Java applications and applets, and has Java-enabled web browsers (such as Netscape).
The cross-compilation environment allows binaries to be generated for many other Unix platforms. GNU C, GNU C++, GNU Fortran 77, ADA, Pascal, Modula 2 and 3, TCL/Tk, Scheme and SmallTalk/X are available for free, and with extensive libraries of working code. The popular Motif widgets are also available from several suppliers at a cost; the GNU counterpart is called LessTif. Most distributions include a program called Window Programming Environment (WPE), which provides a programming environment with custom syntax highlighting, compiling, and everything else an Integrated Development Environment should have. The operating system also provides libraries that you must normally program yourself (including sound and graphics).
With X Window System, most aspects of the interface are so easily configurable, the user can get his or her desktop to look and feel just about like anything, simply editing a few lines in a plain text file.
Natively, Linux supports Minix, System V, a.out, and Elf executable formats. In beta now, Linux supports Java executables (J-code).
Not only is Linux friendly to other operating systems on the same drive (not messing up their partitions, etc.), it uses their file systems, and includes utilities to help those who are using more than one operating system. Linux's LILO will load Linux, DOS/Win95, or OS/2, for example. Linux file mapping and mounting allows you to use other file systems, such as DOS's FAT-16 (with Windows 95 long filenames), OS/2's file system, Minix's and others, even if you don't have other operating systems. Linux also has emulators to let you run programs that aren't made for Linux. Most Linux distributions come with dosemu (a DOS emulator), and a Windows emulator (WINE) is in development.
Linux applications support many file formats. When a programmer is going to create an application he or she will have to decide what file formats to support. In the Linux free software community, there is a wealth of shared and static libraries that the programmer can use to support many file formats. Since many Linux programs are truly free, and come with their source code, other users add file formats to existing applications, so Linux undoubtedly supports more file formats than any other operating system.
In a preemptive multitasker, such as Linux, a program is given a set number of clock cycles, then it is preempted, and another program has the system for a set number of clock cycles. Linux is preemptive through and through, supporting fully preemptive threads for all programs and scripts that request it.
While Linux can be a challenge to install and setup, most distributions take care of the details for you. The installation programs will ask you for what programs to install, and where, and for lots of details about your specific hardware, then does all the work for you. After getting a Linux CD-ROM, and gathering the data you must have about your hardware, you'll probably be up and running within an hour. But gathering the data can take some effort; some of it is in your User's Manuals, but you may have to open your computer case to check the boards and chips, which is always a potentially dangerous thing to do - for you and your computer.
TCP/IP (Internet Protocol) is native to Unix. It is also native to Linux. Networking Linux can be done in one weekend (assuming you do have network cards), with some reading, testing, and setting up. Connecting it to the Internet takes about 10 minutes. Networking is always a difficult job, but Linux is certainly no worse than other operating systems.
Generally, Unix systems have a reputation of being insecure. Linux compares very well to other Unix's, due to it's open status. When source code is readily obtainable, more experts with a wider variety of hardware setups are likely to download it and report all the bugs, fixes can be coded and distributed around the world instantly over the internet.
Although Linux is completely free an open, hackers and crackers and viruses have not been the problem that continues to plague DOS/Windows. So far, at least. You're actually mileage may vary in the future, of course; but it isn't likely to be drastically worse.
http://sunsite.unc.edu/LDP/ Here you'll find all the HOWTOs mini-HOWTOs, and FAQ you'll ever need for Intel based Linux.
The first thing you should do when encountering a problem is consult the various sources of information listed in Appendix A of the textbook. These documents were laboriously written for people who need help with the Linux system.
In most cases, it is preferable to do as much independent research and investigation into the problem as possible before seeking outside help. After all, you asked for it, by running Linux in the first place! Remember that Linux is all about hacking and fixing problems yourself. It is not a commercial operating system, nor does it try to look like one. Hacking won't kill you. In fact, it will teach you a great deal about the system to investigate and solve problems yourself, maybe even enough to one day call yourself a Linux guru. Learn to appreciate the value of hacking the system, and how to fix problems yourself.
When encountering a problem, do not rush immediately to the nearest terminal and post a message to one of the Linux Usenet newsgroups or mailing lists. First, attempt to resolve the problem yourself and be absolutely certain what the problem is. Many times, solutions to common problems are readily found in documentation, or have already been answered in previous posts. Check the documentation first, then check the archives at http://www.dejanews.com/ before you post.
When posting, remember that the people reading your post are not there to help you. The network is not your personal consulting service. Therefore, it is important to remain as polite, terse, and informative as possible.
You should include as much relevant information about your system and your problem as possible: what software you are using, what you have attempted to do so far and what the results were. When including technical information, it is usually a good idea to include general information on the version(s) of your software (Linux kernel version, for example), as well as a brief summary of your hardware configuration; just make sure that it is relevant to the problem.
The Internet is an excellent way to get help with your Linux problems, but it is important to know how to use it effectively. Just remember that other people are they to ask questions too - so give the details in the first message, be clear and concise. If you're not sure, read some of the other threads.
Textbook, Running Linux:
The first chapter covers a lot of ground and there are many new terms. I would suggest that you read through it once to get a broad overview. Don't spend too much time trying to learn everything because it will all be covered in detail in the coming chapters and lessons.
Terms and Concepts:
To help you get started compiling a glossary for Linux there is a short list of terms and concepts (also available in plain text to print out quickly). In subsequent lessons new terms and concepts will be listed here for you to add to your glossary.Over the course, we'll cover several hundred items, so don't put off filling in the definitions more that a lesson or two.
Some history and background:
Some Linux Documentation Project documents to begin with:
Some additional information:
Finding a Linux Users Group near you:
Some Newsgroups to begin monitoring:
With any suggestions or questions please feel free to contact us