02 – An Overview of Linux
December 5, 2009 – 10:16 pmPlease note… This information no longer exists at the referenced locations. This is only a copy of what was available in 2003.
Basic Linux Training™ – New Users
An Overview of Linux
Henry White
Table of Contents
- History of Unix
- Development of Linux
- System Features
- About Linux’s Copyright
- Differences Between Linux and Other Operating Systems
- Hardware Requirements
- Getting Help
- Assignments
History of Unix
During the late 1960s, long before personal computers, Bell Telephone Laboratories was working with General Electric and Project MAC of MIT to write an operating system, called Multics, for mainframe computers. In April 1969, Bell Labs withdrew from the project, which left them without the multi-tasking, multi-user OS they had wanted. Ken Thompson, Brian Kernighan and Dennis Ritchie sketched out an operating system that would meet Bell Labs’ needs.
Some months later, when Thompson needed a development environment (1970) to run on “an unused PDP-7 mini-computer in the lab,” he implemented those ideas in assembler language. Brian Kernighan gave the system the name Unics (as a pun on Multics) but the spelling 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 (“for educational purposes”), and got the tapes and manuals. Because of that generosity, many universities used UNIX (and C) in their curriculum, and computer science students did much of the experimenting and development work. Two of the major hot-beds of Unix development were 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). Much of the development was done by students and programmers outside Bell Labs/AT&T.
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. In point of fact, it was designed as a network operating system – implying trained, professional sysadmins to handle all the gory details, so the user was never supposed to look under the hood
Unix 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 these two major versions.
UNIX (all uppercase) 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 to avoid ambiguity.
There is an interesting sidebar – Bell Labs was not in the software manufacturing business, and no one there really wanted to get sidetracked into that. AT&T saw Unix as a commercially viable product, and spun it off – first as a separate division within the company, then sold all interest in it. Meanwhile, some of those students and admins who had contributed code were left out in the cold – not a single line acknowledging their contribution, and not one cent of remuneration. It was common practice, at the time, for sysadmins and programmers to share code without bothering with copyright notices, licenses, or software patents. For the most part, copyrighting didn’t make sense with a few snippets or a function. So whether it was ethical for AT&T to simply ‘appropriate’ everyone’s work and sell it without compensating the people who made some contribution to it, the incident did create a lot of bad-blood because it took what was essentially free and transformed it into restricted, proprietary code.
This was one of the major reasons Richard Stallman founded the Free Software Foundation and the GNU Project to write and copyright license-free software that cannot be taken over by anyone. Throughout the course, this will be a recurring theme – mainly because it is both the crux of the matter and the key to its success. Reading licenses is not a universally favorite pastime – it’s not glamorous like hacking kernel code – but it is the key to understanding the essence of Linux and Open Source, and understanding why Linux and Open Source have been so successful.
Development of Linux
Andrew Tanenbaum, a professor of computer science in the Netherlands and a specialist in operating systems design, wrote an educational version of an Unix work-alike in the ’80s called Minix for his students to learn Unix on their home computers.
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 all versions of Unix.) In October, 1991 Torvalds posted the source code for the new kernel (version .02) on Usenet. Three years later, on Sunday, 13 March 1994, version 1.0 was officially released.
One of the early ‘wars’ on news: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. had a certified POSIX compliant version of Linux that also has been licensed by Caldera for its Open/Linux. (Caldera has since bought Lasermoon.) 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, Linux consists of three floppy disks – root, boot, and a pre-compiled kernel image – 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, as well as Linux hackers.
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 and production ready, 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 those with the patience, time, and skill to deal with a chronically broken system
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‘.
Perhaps easier to grasp: think of the names ‘Lynn Nooks’ (rhymes with ‘books’) for the pronunciation of ‘Linux’; and ‘Lee Noose’ (rhymes with ‘moose’) as how Linus pronounces his name – with a charming Swedish accent, of course
System Features
The main features of the Linux operating system:
- preemptive multitasking (meaning that more than one task or application program can be running at the same time, preemptive meaning the operating system rather than the application has control of tasks and the allotment of clock cycles to applications);
- multiuser (meaning that more than one user can be logged on at the same time without affecting each other);
- has rudimentary security is built-in (login and password, file ownership and permissions);
- was designed for connectivity (that is, to connect many computers and workstations together);
- uses full 32-bit access to data in protected mode;
- up to 16 swap partitions at 128 MBeach, and up to 2 GB RAM (S.u.S.E. recently pushed this to 4 GB);
- peacefully co-exists with DOS/Windows on separate partitions or hard disks the same machine;
- supports 256-character, case sensitive file names;
- unification of file, directory, device, and interprocess input/output (all treated as files);
- an hierarchical file system (like the directory layers in – DOS/Windows directories inside directories).
Virtually every utility program available on standard mainframe implementations of Unix has been ported to Linux, with a number of improvements. Programmers and engineers now have the opportunity to have a low cost Unix workstation on their home PC.
As impressive as this list is, it’s probably a little obsolete. With a fast moving target like the kernel, it’s hard to keep up with what’s fully implemented now, what’s still in development, and what’s on the horizon
For example, the Linux Standards Base and Filesystem Hierarchy Standard will get all the distributions on the same page and eliminate all the confusing going from one distribution to another.
About Linux’s Copyright
Linux is a Unix clone, a work-alike of the Unix operating system, written entirely from scratch, without a single line of AT&T code. Neither USL, nor the University of California, Berkeley, was involved in writing Linux. People around the globe have contributed to Linux, GNU, and other projects that make this operating system what it is today.
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 at the same time with the binaries. This is useful for programmers. The license also says that anyone who modifies the program for public use must also make his version and source code freely redistributable. In other words, you cannot take GPL code, make a few changes in the code and magically transform into a proprietary product. This provision in the GPL is driving the Evil Empire insane
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.
Differences Between Linux and Other Operating Systems
Changing, recompiling, and other modifications that can only be done under Unix systems makes Linux an operating system that can be configured to do and be just about anything. Most Linux distributions give you only a minimum basic initial configuration, and it is up to each user to modify it any way they desire. This can be done through plain text files without any need for programming skills or tools.
Every Linux distributions comes with all the software development tools, Internet software, and system related software you’ll need. While Linux does come with games, some office related software, these do leave a lot to be desired, as does 3-D graphics. Applixware, StarOffice and other commercial software with the features of Microsoft Office tend to run cleaner and faster than Microsoft Windows counterparts, but the features may not be up to your standards – yet.
Linux, like all Unix, already has hundreds of specific tools that do one thing exceedingly well, but nothing in the way of the definitive ‘killer’ application, although there are a number of contenders – GIMP, TKDesk, KDE, Gnome all come immediately to mind.
There is commercial software available for Linux; StarOffice is probably the best known example. 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.
Hardware Requirements
Hardware is often accessed indirectly by other operating systems through software. On the other hand, Linux deals with of all the hardware it can directly. Sometimes, if you have defective hardware that other operating systems can work around it through software, Linux does not have that extra layer and will crash. On the other hand, a properly set up Linux system that is running on good hardware is very difficult to crash. This is because if the operating system doesn’t bring itself down, nothing else will. Programs can never crash the system under Linux, because of the way it’s built – things like memory protection, instruction monitoring, and other devices built-in to the kernel. The downside of this is, of course, that the kernel is much larger, and unless your hardware is supported at the kernel level you will have problems – which explains the number of root disk images you have to choose from when you install Linux.
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 inherently secure. 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 and open, hackers and crackers and viruses have not been the problem that continues to plague DOS/Windows. So far, at least. Your actually mileage may vary in the future, of course; but it isn’t likely to be drastically worse.
Getting Help
The primary source of getting information related to Linux is the Linux Documentation Project at http://www.tldp.org 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 Running Linux textbook (i.e., the books, manuals, HOWTOs and mini-HOWTOs that are in the Linux Documentation Project – for example at http://www.tldp.org or any of the LDP mirrors). 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://groups.google.com/advanced_group_search 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 there 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 to get a better idea of which questions get answered.
Assignments
Licensing is critically important, as we have seen recently with the “extensions” to Kerberos which has a BSD license, not GPL. Copies of some of the most frequently used licenses are on-line at http://www.opensource.org/licenses/index.php .
Similarly, with all the talk about Open Source and it’s “instant” fame and popularity, several of the leaders wrote articles published in a definitive book about the movement. Open Sources: Voices from the Open Source Revolution is freely available for on-line viewing from O’Reilly at http://www.oreilly.com/catalog/opensources/book/toc.html .
Terms and Concepts:
In subsequent lessons new terms and concepts will be listed here. We’ll cover several hundred items during the course. You can compile a glossary list (loose-leaf notebook or 3×5 index cards) if you wish, but don’t put off finding the definitions more than a day or two or you’ll soon be in over your head
(There are a number of resources to help you with this listed on the Objectives page.
On-line:
Objective 1 Hardware & Software Compatibility, and Objective 6 – Glossary.
Some history and background:
- http://www-wks.acs.ohio-state.edu/unix_course/intro-2.html – UNIX
- ftp://ftp.stratus.com/pub/vos/multics/tvv/general.html – Multics
- http://cm.bell-labs.com/cm/cs/who/dmr/hist.html – Dennis Ritchie on UNIX
- http://www.bell-labs.com/history/unix/ – Bell Labs account of the history of UNIX
- http://internet-history.org/archives/early.history.of.unix.html – Early History of UNIX
- On the Early History and Impact of Unix Tools to Build the Tools for a New Millennium – http://www.columbia.edu/~rh120/ch106.x09 (draft chapter from Michael and Ronda Hauben’s net-book titled “Netizens: On the History and Impact of Usenet and the Internet”)
- http://cm.bell-labs.com/cm/cs/upe/ – UNIX Philosophy
- http://www.cs.bell-labs.com/cm/cs/pearls/ – UNIX Philosophy – Tools
- http://www.cs.vu.nl/~ast/minix.html – Minix
- http://www.unix-wizards.com/linux.html – Linux
- http://www.linuxresources.com/what.html – What is Linux?
- http://www.linuxresources.com/ – lots of good information here; browse and enjoy
- http://www.gnu.org/gnu/the-gnu-project.html – The first software-sharing community
- http://www.gnu.org/gnu/gnu-history.html – History of the GNU Project
- http://www.gnu.org/philosophy/free-sw.html – GNU Philosophy – Free Software
- http://www.gnu.org/philosophy/free-software-for-freedom.html – GNU Philosophy – Free Software for ‘Freedom’
- http://www.gnu.org/gnu/manifesto.html – GNU Manifesto
- http://www.gnu.org/copyleft/copyleft.html – GNU Copyleft
- http://www.gnu.org/gnu/linux-and-gnu.html – Linux and the GNU Project
- http://www.opensource.org/ – Open Source
- http://www.freebsd.org/ – FreeBSD
- http://www.xfree86.org/FAQ/index.html – XFree86 FAQ
- http://cesdis.gsfc.nasa.gov/linux/beowulf/beowulf.html – Project Beowulf
Some Linux Documentation Project documents to begin with:
- http://www.tldp.org/HOWTO/meta-FAQ.html – Linux META-FAQ
- http://www.tldp.org/HOWTO/INFO-SHEET.html – Linux INFO-SHEET
- http://www.tldp.org/HOWTO/HOWTO-INDEX – Linux HOWTO Index
- LDP Manifesto
- LDP Copying License
Some additional information:
- http://www.fokus.gmd.de/linux/FAQ/Linux-FAQ.html – Linux FAQ
Finding a Linux Users Group near you:
There are any number of LUG lists on the Internet – many of them are not being maintained or checked. These four seem to be the most accurate, up to date, and extensive. I recommend you use these first. (And if you find any bad links, please notify the appropriate maintainer for that list.)
- http://www.linux.org/users/index.html
- http://noframes.linuxjournal.com/glue/
- http://lugww.counter.li.org/ – LUG List Overview
Some Newsgroups to begin monitoring:
There are dozens of other Linux newsgroups; these are the ones that seem to be the most useful to new users.
Copyright © 1997-2003 Henry White. All Rights Reserved.
Reproduction or redistribution without prior written consent is strictly prohibited. Address comments and inquiries to info@basiclinux.net
Sorry, comments for this entry are closed at this time.