Introduction to Linux

From CLUG Wiki

Jump to: navigation, search

Contents

What is Linux?

Linux is a free UNIX-like operating system developed by University of Helsinki computer science student Linus Torvalds (who still maintains the kernel sources) and many other programmers across the Internet. It was originally intended to be a "better Minix than Minix" (Minix is a UNIX-like OS developed by Andy Tanenbaum for teaching operating system fundementals to students), but it has since grown to be much more than that. There are an estimated 29,000,000 Linux users world wide (on all seven continents).

The kernel (which provides the core functionality of the operating system) is distributed in terms of the GNU General Public License (GPL) which means that, basically, one can copy, change and distribute it, but one cannot impose restrictions on further distribution and one must make the source code available. A lot of other Linux applications (including most of the GNU Project applications) fall under the GPL.


What are Linux's key Features?

Linux offers all of the features found in other Unices, including:

  • Pre-emptive multitasking and full multi-user support
  • Virtual memory
  • A filesystem which supports long filenames (up to 255 characters) and links (symbolic and hard)
  • Full TCP/IP networking (including PPP, SLIP, SMTP, UUCP, NFS, NIS, etc), with clients and servers for all popular protocols (ftp, http, etc)
  • Memory protection - one process cannot affect another
  • Processes can use up to 3G of memory (and way more on a 64bit system)
  • Shared libraries, which allow often used portions of code to be loaded into memory only when needed (similar in operation to Windows DLLs)
  • The X Window System (and many beautiful or spartan desktop environments to run on it)

In addition, the full source code for Linux is available. This is not just for certain applications, but for the entire operating system. If you are curious as to how something is done, you can take a look at the source! Linux also has the ability to run binaries compiled for certain other Unices (depending on the CPU you have, you may be able to run binaries compiled for SCO (blechh!) UNIX, FreeBSD, BSD/OS and a variety of other Unices).

In additon to the extensive amount of free software available for Linux, there is also a steadily increasing amount of commercial software. The well-known Oracle database server is available for Linux. The mathematical packages Maple, Mathematica and MATLAB are all available for Linux. This is just the tip of the iceberg - you should consult the Commercial HOWTO for more details on commercial software available for Linux. However, these days it is very unusual to need commercial software for Linux, as almost every type of software is available in a free version - for example, OpenOffice.org is a free office suite, compatible with Microsoft Office files.

Hardware support is excellent and most popular (and much not-so-popular) hardware is supported. From Adaptec SCSI host adaptors to Xircom network cards and everything inbetween, Linux almost certainly has a driver for it. You can consult the Hardware HOWTO for a list of hardware known to work with Linux.

Linux was originally developed for the Intel x86 family (80386 and above) but has since been ported to a variety of CPUs, including:

Initiatives are under way to port it to the Intel 8088 (for embedded systems). Support for SMP (Symmetrical Multiprocessing) (including NUMA) on the x86 and SPARC platforms has been present in releases for some time now.


Why is Linux so Special?

Ok. Before we go any further a warning: This section is only the opinion of a single person. Items listed as facts are probably true, but could be out of date by the time you are reading it. Please do not get nasty or personal or both. Point out inaccuracies instead.

The strengths of Linux are:

It is covered by the GNU Public License

Which means that you can get the source for it. Which means you can modify any part of the operating system. You do not have to plead with any vendor to please incorporate driver X into the operating system or fix bugs Y and Z. You do not have to sign non-disclosure agreements with the operating system vendor. You simply download the source and make all the changes you want (if that is not your cup of tea then you could probably find some starving student (TM) who can be paid to code that bit for you - and do a better job than a consultant outfit). You are not stranded if the operating system vendor discontinuous the operating system or if the vendor closes shop. There simply is no single operating system vendor for Linux (but there are several value added resellers). There are no per user or per CPU licensing scheme for Linux. Linux does not come with dongles.

It is developed by Enthusiasts

So the operating system acquires improvements and new features because the developers think they are necessary. Not because some marketing types think it will sell, and not because the operating system vendor has an agreement with hardware manufactures (or is the hardware manufacturer) to make code bloat sell more powerful hardware. The enthusiasts are accessible - they are not smothered by public relations staff, secretaries or managers who do not understand the operating system. Linux developers will probably listen to your suggestion to add feature X if you haven't sent them the patch for that feature yourself.

It is Portable

Linux, in the true tradition of Unix systems, is written for the largest part in C. At the time of writing most of the hardware dependencies are being isolated with the result that Linux now runs natively on big and small endian and 32 as well as 64 bit hardware (SUN Sparcs, DEC Alphas and INTEL 80386+ and clones). Linux also runs atop several microkernel operating systems, and work is underway to make it a usable embedded system. You really do not have to wait for Java. Use X instead.

It is Highly Efficient and Reliable

Since the Linux source code is open to public scrutiny inefficiencies do get detected and corrected. Design tradeoffs are discussed on the USENET and on Mailing-Lists. They are not disguised as features. There is no management which thinks that "our software does not have bugs (TM)" and ignores reports to the contrary. People with low-end hardware contribute to the effort to ensure that Linux runs on their platform. There have been several cases where problems in the operating system were first detected under Linux (and fixed almost immediately) only to be discovered on expensive commercial systems with reputedly strict testing procedures where corrective action was only taken after a significant delay (an example would be the ping of death bug).

It tacks POSIX

Which means that software written for most decent flavours of UNIX should compile out of the box under Linux and vice versa. Linux does not do deadly embraces. If you want to move from Linux to other platforms you can (and take most of the code with you), unlike some commercial (mostly, but not entirely, non-Unix) systems which introduce subtle incompatibilities to keep you tied to their system (and tell you that it is good for you).

It is developed on the Internet along Open Development Lines

Which means that you can contribute. Do you have an idea for a neat program? Have you written one? Can you write lucid documentation? Then help if you want or care - the development may be distributed, but it is also amazingly well co-ordinated by some talented volunteers. Linux is by far the largest development effort undertaken on the internet. It is great fun to confuse economists, anthropologists and managers who think such a free project is impossible.

It does not have a Marketing Department

This article is the closest thing to such an effort. Linux does not receive big launches on TV. Linux is not pushed with full page ads in glossy trade rags. Linux is used by highly qualified people who can read the documentation, are prepared to learn the intricacies of the system, who would be "power-users" if they did not detest the term and who were burnt by more flashy and better marketed systems. To paraphrase a sig: There is no "Linux for dummies" since there are not dummies who use Linux. Linux has not yet become too fashionable - CNN, the parachute lawyers and politicians have not yet caught on. So for now it is still a great feeling to be out there on the furthest electronic frontier far away from the "get-rich-quick", the "enter-your-credit-card-number-to-read-this-page" and the we'd-better-put-some-legislation-in-here-before-people-get-used-to-the-freedom".


Why Should I Use it?

Full TCP/IP support

The UNIX operating system is the foundation of the Internet and Linux continues in this tradition with full support for TCP/IP networking and all the applications to go along with that (Web and ftp servers, Web browsers, etc). Linux takes this a step further, having been developed on the internet.

Low cost

The Linux kernel and core utilities are all released under the GPL and are thus completely free. In addition, large amounts of high quality software packages are available, of which the majority are also free. With such a comprehensive set of software, you can install Linux on an unlimited number of machines for the cost of a single CD (or ftp session ;-).

Wide range of software

Development tools, system servers, databases, simulators, emulators, games and end user applications - Linux has them all. A representative sample is usually included with most distributions, but search the net to find more amazing programs or updates, extensions, ports or improvements to known ones.

Solid performance

If you come from the other end of the PC world where system crashes can happen on an hourly basis, you will be pleased to hear that some Linux systems boast continued uptimes of over 600 days (one of the authors personally knows of a machine that was up for 180 days before a power failure caused it to reboot after the UPS failed). Linux PCs also run surprisingly fast - you can disable the entire windowing interface to reduce the operating system overhead to a minimum, while features such an integrated cache, copy-on-write paging and demand loading all make the most of your hardware, be it a humble 80386 with 4M RAM, or the newest super-duper express accelerated pro stealth hardware.

Support

With the growing commercial use of Linux, more formal support has become available, but there has always been the informal but highly effective support of the developers themselves. For more information on commercial support for Linux, consult the Consultants HOWTO. The fact that the maintainer of the kernel and the creators of the main distrubitons read the comp.os.linux.* newsgroups means that help is often only a mail message or news posting away.


Where do I get it?

There is no one "Linux" - various distributors package the kernel along with a variety of utilities and applications into what are known as "distributions", all of which are similar in terms of general content, but which offer differences in terms of system maintenance utilities, ease of upgrade etc. LEG currently mirrors several of the more popular distributions, making it very easy for people at UCT to install Linux. LEG also provides a Freedom Toaster at UCT for public use to burn Linux CDs and DVDs. DistroWatch.com gives brief overviews of all the major distributions.

For more information on exactly what hardware Linux supports (basically anything with a 386SX processor and above on x86-based machines) you should check out the Info Sheet. New users should also check out The Linux Documentation Project's extensive collection of documentation.

How do I pronounce "Linux"?

We finish this brief tour of Linux with a bit of frivolity while at the same time teaching you something! Many people are unclear of exactly how to pronounce "Linux" so this has become something of a FAQ (Frequently Asked Question). For the definitive answer we refer to Linus himself. If your system has the ability to play Sun/NeXT audio (.au) files, here is Linus telling us in English how to pronounce the name of the operating system he gave birth to.