Linux is a completely free reimplementation of the POSIX specification, with SYSV and BSD extensions (which means it looks like Unix, but does not come from the same source code base), which is available in both source code and binary form. Its copyright is owned by Linus Torvalds <email@example.com> and other contributors, and is freely redistributable under the terms of the GNU General Public License (GPL). A copy of the GPL is included with the Linux source; you can also get a copy from ftp://prep.ai.mit.edu/pub/gnu/COPYING
Linux, per se, is only the kernel of the operating system, the part that controls hardware, manages files, separates processes, and so forth. There are several combinations of Linux with sets of utilities and applications to form a complete operating system. Each of these combinations is called a distribution of Linux. The word Linux, though it in its strictest form refers specifically to the kernel, is also widely and correctly to refer to an entire operating system built around the Linux kernel. For a list and brief discription of various distributions, see http://sunsite.unc.edu/LDP/HOWTO/Distribution-HOWTO.html None of these distributions is ``the official Linux''.
Linux is not public domain, nor is it `shareware'. It is `free' software, commonly called freeware or Open Source Software[tm] (see http://www.opensource.org), and you may give away or sell copies, but you must include the source code or make it available in the same way as any binaries you give or sell. If you distribute any modifications, you are legally bound to distribute the source for those modifications. See the GNU General Public License for details.
Linux is still free as of version 2.0, and will continue to be free. Because of the nature of the GPL to which Linux is subject, it would be illegal for it to be made not free. Note carefully: the `free' part involves access to the source code rather than money; it is perfectly legal to charge money for distributing Linux, so long as you also distribute the source code. This is a generalization; if you want the fine points, read the GPL.
Linux runs on 386/486/Pentium machines with ISA, EISA, PCI and VLB busses. MCA (IBM's proprietary bus) is not well-supported in 2.0.x and earlier versions, but support has been added to the current development tree, 2.1.x. If you are interested, see http://glycerine.itsmm.uni.edu/mca
There is a port to multiple Motorola 680x0 platforms (currently running on some Amigas, Ataris, and VME machines), which now works quite well. It requires a 68020 with an MMU, a 68030, 68040, or a 68060, and also requires an FPU. Networking and X now work. See news:comp.os.linux.m68k
Linux runs well on DEC's Alpha CPU, currently supporting the "Jensen", "NoName", "Cabriolet", "Universal Desktop Box" (better known as the Multia), and many other platforms. For more information, see http://www.azstarnet.com/~axplinux/FAQ.html
Linux runs well on Sun SPARCs; most sun4c, sun4m, and sun4u machines now run Linux, with support for sun4 in development. Red Hat Linux is (as of this writing) the only Linux distribution available for SPARCs; see http://www.redhat.com/support/docs/rhl-sparc/
Linux is being actively ported to the PowerPC architecture, including PowerMac (Nubus and PCI), Motorola, IBM, and Be machines. See http://www.cs.nmt.edu/~linuxppc/ and http://www.linuxppc.org/
Ports to other machines, including MIPS (see http://linus.linux.sgi.com and http://lena.fnet.fr/) and ARM, are under way and showing various amounts of progress. Don't hold your breath, but if you are interested and able to contribute, you may well find other developers who wish to work with you.
Linux is no longer considered to be in beta testing, as version 1.0 was released on March 14, 1994. There are still bugs in the system, and new bugs will creep up and be fixed as time goes on. Because Linux follows the ``open development model'', all new versions will be released to the public, whether or not they are considered ``production quality''. However, in order to help people tell whether they are getting a stable version or not, the following scheme has been implemented: Versions n.x.y, where x is an even number, are stable versions, and only bug fixes will be applied as y is incremented. So from version 1.2.2 to 1.2.3, there were only bug fixes, and no new features. Versions n.x.y, where x is an odd number, are beta-quality releases for developers only, and may be unstable and may crash, and are having new features added to them all the time. >From time to time, as the currect development kernel stabilizes, it will be frozen as the new ``stable'' kernel, and development will continue on a new development version of the kernel. Note that most releases of the Linux kernel, beta or not, are relatively robust; ``stable'' in this context means ``slow to change'' in addition to ``robust''.
The current stable version is 2.0.35 (this will continue to change as new device drivers get added and bugs fixed), and development has also started on the experimental 2.1.x kernels. The Linux kernel source code contains a file, Documentation/Changes, which explains changes that you should be aware of when upgrading from one kernel version to another. However, the great majority of Linux users simply update their Linux distribution occasionally to get a new kernel version.
Most versions of Linux, beta or not, are quite robust, and you can keep using those if they do what you need and you don't want to be on the bleeding edge. One site had a computer running version 0.97p1 (dating from the summer of 1992) for over 136 days without an error or crash. (It would have been longer if the backhoe operator hadn't mistaken a main power transformer for a dumpster...) Others have posted uptimes in excess of a year. One site still had a computer running Linux 0.99p15s over 600 days at last report.
One thing to be aware of is that Linux is developed using an open and distributed model, instead of a closed and centralized model like much other software. This means that the current development version is always public (with up to a week or two of delay) so that anybody can use it. The result is that whenever a version with new functionality is released, it almost always contains bugs, but it also results in a very rapid development so that the bugs are found and corrected quickly, often in hours, as many people work to fix them.
In contrast, the closed and centralized model means that there is only one person or team working on the project, and they only release software that they think is working well. Often this leads to long intervals between releases, long waiting for bug fixes, and slower development. The latest release of such software to the public is sometimes of higher quality, but the development speed is generally much slower.
For a discussion of these two models, read ``The Cathedral and the Bazaar'' at http://sagan.earthspace.net/~esr/writings/cathedral-bazaar/ by Eric Raymond.
As of September 1, 1998, the current stable version of Linux is 2.0.35, and the latest development version is 2.1.119.
The following is probably the smallest possible configuration that Linux will work on: 386SX/16, 1 MB RAM, 1.44 MB or 1.2 MB floppy, any supported video card (+ keyboards, monitors, and so on of course). This should allow you to boot and test whether it works at all on the machine, but you won't be able to do anything useful. See http://rsphy1.anu.edu.au/~gpg109/mem.html for minimal Linux configurations
In order to do something, you will want some hard disk space as well, 5 to 10 MB should suffice for a very minimal setup (with only the most important commands and perhaps one or two small applications installed, like, say, a terminal program). This is still very, very limited, and very uncomfortable, as it doesn't leave enough room to do just about anything, unless your applications are quite limited. It's generally not recommended for anything but testing if things work, and of course to be able to brag about small resource requirements.
If you are going to run computationally intensive programs, such as gcc, X, and TeX, you will probably want a faster processor than a 386SX/16, but even that should suffice if you are patient.
In practice, you will want at least 4 MB of RAM if you don't use X, and 8 MB if you do. Also, if you want to have several users at a time, or run several large programs (compilations for example) at a time, you may want more than 4 MB of memory. It may still work with a smaller amount of memory, but it will use virtual memory (using the hard drive as slow memory) and that will be so slow as to be unusable. If you use many programs at the same time, 16 MB will reduce swapping considerably. If you don't want to swap appreciably under normal load, 32 MB will probably suffice for a single user. If you run lots of memory-intensive applications at once, 64 MB may be necessary to avoid lots of swapping. Of course, if you run memory-hungry applications, you may want more.
The amount of hard disk you need depends on what software you want to install. The normal basic set of Unix utilities, shells, and administrative programs should be comfortable in less than 10 MB, with a bit of room to spare for user files. For a more complete system, get Red Hat, Debian, or another distribution, and assume that you will need 60 to 600 MB, depending on what you choose to install and what distribution you get. Add whatever space you want to reserve for user files to these totals. With today's prices on hard drives, if you are buying a new system, it makes no sense to buy a drive that is too small. Get at least 2 GB, preferably 4 GB or more, and you will not regret it. Linux will happily handle very large hard drive such as the recently popular 11 GB IDE hard drives or 18 GB SCSI hard drives.
Add more memory, more hard disk, a faster processor and other stuff depending on your needs, wishes and budget to go beyond the merely usable. In general, one big difference from DOS is that with Linux, adding memory makes a large difference, whereas with DOS, extra memory doesn't make that much difference. This of course has something to do with DOS's 640KB limit, which is completely nonexistent under Linux.
Anything that runs 386 protected mode programs. All models of 386s 486s, Pentiums, Pentium Pros, Pentium IIs, and clones of these chips should work. (286s and below may someday be supported on a smaller kernel called ELKS (Embeddable Linux Kernel Subset), but don't expect the same capabilities). A version for the 680x0 CPU (for x = 2 with external MMU, 3, 4, and 6) which runs on Amigas and Ataris can be found at tsx-11.mit.edu in the 680x0 directory. Many DEC Alphas, SPARCs, and PowerPC machines are supported. Ports are also being done to the ARM, StrongARM, and MIPS architectures. More details are available elsewhere.
PCI, ISA, EISA, and VLB busses. MCA (mostly true blue PS/2s) support is incomplete but improving (see above). Linux puts higher demands on hardware than DOS, Windows, and in fact most operating systems. This means that some marginal hardware that doesn't fail when running less demanding operating system may fail when running Linux. Linux is an excellent memory tester...
Up to 1 GB on Intel; more on 64-bit platforms. Some people (including Linus) have noted that adding ram without adding more cache at the same time has slowed down their machine extremely, so if you add memory and find your machine slower, try adding more cache. Some machines can only cache certain amounts of memory regardless of how much RAM is installed (64 MB is the most one popular chipset can cache). Over 64 MB of memory will require a boot-time parameter with kernels 2.0.35 and earlier, as the BIOS was originally designed to be unable to report more than 64MB. Recent 2.1.x kernels and later are able to detect more memory in a system.
Generic AT drives (EIDE, IDE, 16 bit HD controllers with MFM or RLL, or ESDI) are supported, as are SCSI hard disks and CD-ROMs, with a supported SCSI adaptor. Generic XT controllers (8 bit controllers with MFM or RLL) are also supported. Supported SCSI adaptors: Advansys, Adaptec 1542, 1522, 1740, 27xx, and 29xx (with some exceptions) series, Buslogic MultiMaster and Flashpoint, NCR53c8xx-based controllers, DPT controllers, Qlogic ISP and FAS controllers, Seagate ST-01 and ST-02, Future Domain TMC-88x series (or any board based on the TMC950 chip) and TMC1660/1680, Ultrastor 14F, 24F and 34F, Western Digital wd7000, and others. SCSI, QIC-02, and some QIC-80 tapes are also supported. Besides IDE and SCSU cdroms, several proprietary CD-ROM devices are also supported, including Matsushita/Panasonic, Mitsumi, Sony, Soundblaster, Toshiba, ATAPI (EIDE), SCSI, and others. For exact models, check the hardware compatibility HOWTO. N.B. These lists are incomplete, and always will be. Distribution vendors maintain more up-to-date lists.
VGA, EGA, CGA, or Hercules (and compatibles) work in text mode. For graphics and X, there is support for (at least) normal VGA, some super-VGA cards (most of the cards based on Tseng, Paradise, and some Trident chipsets), S3, 8514/A, ATI, Matrox, and Hercules. (Linux uses the XFree86 X server, so that determines what cards are supported. A full list of supported chipsets alone takes over a page. See http://www.XFree86.org/)
Ethernet support includes 3COM 503/509/579/589/595/905 (501/505/507 are supported but not recomended), AT&T GIS (neé NCR) WaveLAN, most WD8390-based cards, most WD80x3-based cards, NE1000/2000 and most clones, AC3200, Apricot 82596, AT1700, ATP, DE425/434/435/500, D-Link DE-600/620, DEPCA, DE100/101, DE200/201/202 Turbo, DE210, DE422, Cabletron E2100 (not recommended), Intel EtherExpress (not recommended), EtherExpress Pro, EtherExpress 100, DEC EtherWORKS 3, HP LAN, HP PCLAN/plus, most AMD LANCE-based cards, NI5210, ni6510, SMC Ultra, DEC 21040 (tulip), Zenith Z-Note ethernet, All Zircom cards and all Cabletron cards other than the E2100 are unsupported, due to the manufacturers unwillingness to release programming information freely.
FDDI support currently includes the DEFxx cards from DEC.
Point-to-Point networking support include PPP, SLIP, CSLIP, and PLIP. PPP support is available for both standard asyncronous devices like modems, and syncronous connections like ISDN.
Limited Token Ring support is available.
Most 16450 and 16550 UART-based boards, including AST Fourport, the Usenet Serial Card II, and others. Intelligent boards supported include Cyclades Cyclom series (supported by the manufacturer), Comtrol Rocketport series (supported by the manufacturer), Stallion (most boards; supported by the manufacturer), and Digi (some boards; supported by the manufacturer). Some ISDN, frame relay, and leased line hardware is supported.
SoundBlaster, ProAudio Spectrum 16, Gravis Ultrasound, most other sound cards, most (all?) flavours of bus mice (Microsoft, Logitech, PS/2), etc.
Most of the common Unix tools and programs have been ported to Linux, including almost all GNU software and many X clients from various sources. Actually, ported is often too strong a word, since many programs compile out of the box without modifications, or only small modifications, because Linux tracks POSIX quite closely. There are never enough applications for any operating system, but Linux is gaining both end-user applications and server applications. Contact the vendor of your favorite commercial Unix application and ask if they have ported it to Linux.
Here is an incomplete list of software that is known to work under Linux:
awk and so
on (you name it, Linux probably has it).
C, C++, Objective C, Java, Modula-3, Modula-2, Oberon, Ada95, Pascal, Fortran, ML, scheme, Tcl/tk, Perl, Python, Common Lisp, and many others.
GNOME and KDE (desktops), X11R6 (XFree86 3.x), X11R5 (XFree86 2.x), MGR.
GNU Emacs, XEmacs, MicroEmacs,
elvis (GNU vi),
jed, and others.
bash (POSIX sh-compatible),
(mostly sh-compatible shell used as
/bin/sh by BSD), and
PPP, UUCP, SLIP, CSLIP, full TCP/IP
term (runs multiple shells, redirects network
activity, and allows remote X, all over one modem line), Seyon
(popular X-windows communications program), and several fax and
voice-mail (using ZyXEL and other modems) packages are
available. Of course, remote serial and network logins are supported.
ez, LyX, Lout,
Linuxdoc-SGML, and others.
Nethack, several Muds and X games, and lots of others. One of those games is looking through all the games available at tsx-11 and sunsite.
All of these programs (and this isn't even a hundredth of what is available) are freely available. Commercial software is becoming widely available; ask the vendor of your favorite commercial software if they support Linux.
Linux is freely available, and no one is required to register their copies with any central authority, so it is difficult to know how many people use Linux. Several businesses now survive solely on selling and supporting Linux, and the Linux newsgroups are some of the most heavily read on the internet, so the number is likely in the millions, but firm numbers are hard to come by. The best market research currently indicates between 7.5 and 11 million users.
One brave soul, Harald T. Alvestrand <Harald.T.Alvestrand@uninett.no>, has decided to try to count Linux users the hard way: one by one. If you are willing to be counted as a Linux user, please use the web forms available at http://counter.li.org/ Alternatively, you can send a message to firstname.lastname@example.org with one of the following subjects: `I use Linux at home', `I use Linux at work', or `I use Linux at home and at work'. He will also accept `third-party' registrations; ask him for details.
He posts his counts to news:comp.os.linux.misc each month; they are also available from http://counter.li.org/.
For freely-redistributable Linux documentation, see the Linux Documentation Project sites at ftp://sunsite.unc.edu/pub/Linux/docs/LDP/ and http://sunsite.unc.edu/LDP/
Stay tuned to the news:comp.os.linux.announce newsgroup for further developments.
At least the following anonymous ftp sites carry Linux.
Textual name Numeric address Linux directory ============================= =============== =============== tsx-11.mit.edu 18.104.22.168 /pub/linux sunsite.unc.edu 22.214.171.124 /pub/Linux ftp.funet.fi 126.96.36.199 /pub/Linux net.tamu.edu 188.8.131.52 /pub/linux ftp.mcc.ac.uk 184.108.40.206 /pub/linux src.doc.ic.ac.uk 220.127.116.11 /packages/linux fgb1.fgb.mw.tu-muenchen.de 18.104.22.168 /pub/linux ftp.informatik.tu-muenchen.de 22.214.171.124 /pub/comp/os/linux ftp.dfv.rwth-aachen.de 126.96.36.199 /pub/linux ftp.informatik.rwth-aachen.de 188.8.131.52 /pub/Linux ftp.Germany.EU.net 184.108.40.206 /pub/os/Linux ftp.lip6.fr 220.127.116.11 /pub/linux ftp.uu.net 18.104.22.168 /systems/unix/linux wuarchive.wustl.edu 22.214.171.124 mirrors/linux ftp.win.tue.nl 126.96.36.199 /pub/linux ftp.stack.urc.tue.nl 188.8.131.52 /pub/linux srawgw.sra.co.jp 184.108.40.206 /pub/os/linux cair.kaist.ac.kr /pub/Linux ftp.denet.dk 220.127.116.11 /pub/OS/linux NCTUCCCA.edu.tw 18.104.22.168 /Operating-Systems/Linux nic.switch.ch 22.214.171.124 /mirror/linux sunsite.cnlab-switch.ch 126.96.36.199 /mirror/linux cnuce_arch.cnr.it 188.8.131.52 /pub/Linux ftp.monash.edu.au 184.108.40.206 /pub/linux ftp.dstc.edu.au 220.127.116.11 /pub/linux ftp.sydutech.usyd.edu.au 18.104.22.168 /pub/linux
tsx-11.mit.edu and fgb1.fgb.mw.tu-muenchen.de are the official sites for Linux's GCC. Some sites mirror other sites. Please use the site closest (network-wise) to you whenever possible.
At least sunsite.unc.edu and ftp.informatik.tu-muenchen.de offer ftpmail services. Mail email@example.com or firstname.lastname@example.org for help.
If you are lost, try looking at http://sunsite.unc.edu/LDP/HOWTO/Distribution-HOWTO.html, where several distributions are enumerated. Red Hat Linux and Debian appear to be the most popular distributions at the moment, at least in the U.S.
Most people now install Linux from CDROM's. The distributions have grown to hundreds of MBs of Linux software, and downloading that over even a 28.8 modem or an ISDN connection takes a long time.
There are essentially two ways to purchase a Linux distribution on CDROM: as part of an archive of FTP sites, or directly from the manufacturer. If you purchase an archive, you will often get several different distributions to choose from, but support is generally not included. When you purchase a distribution directly from the vendor, you usually only get one distribution, but you usually get some form of support, usually installation support.
There are many BBSs that have Linux files. A list of them is occasionally posted to comp.os.linux.announce. Ask friends and user groups, or order one of the commmercial distributions. A list of these is contained in the Linux distribution HOWTO, available as http://sunsite.unc.edu/LDP/HOWTO/Distribution-HOWTO.html, and posted regularily to the news:comp.os.linux.announce newsgroup.
Although Linux is supplied with the complete source code, it is copyrighted software, not public domain. However, it is available for free under the GNU General Public License, sometimes referred to as the ``copyleft''. See the GPL for more information. The programs that run under Linux each have their own copyright, although many of them use the GPL as well. X uses the MIT X copyright, and some utilities are under the BSD copyright. In any case, all of the software on the FTP site is freely distributable (or else it shouldn't be there).
A monthly magazine, called Linux Journal, was launched over four years ago. It includes articles intended for almost all skill levels, and is intended to be helpful to all Linux users. One-year subscriptions are $22 in the U.S., $27 in Canada and Mexico, and $32 elsewhere, payable in US currency. Subscription inquiries can be sent via email to email@example.com, or faxed to +1-206-782-7191, or phoned to +1-206-782-7733, or mailed to Linux Journal, PO Box 85867, Seattle, WA 98145-1867 USA. SSC has a PGP public key available for encrypting your mail to protect your credit card number; finger firstname.lastname@example.org to get the key.
There are several Usenet newsgroups for Linux discussion, and also several mailing lists. See the Linux FAQ for more information about the mailing lists (you should be able to find the FAQ either in the newsgroup or on the FTP sites).
The newsgroup news:comp.os.linux.announce is a moderated newsgroup for announcements about Linux (new programs, bug fixes, etc).
The newsgroup news:comp.os.linux.answers is a moderated newsgroup to which the Linux FAQ, HOWTO documents, and other documentation postings are made.
The newsgroup news:comp.os.linux.admin is an unmoderated newsgroup for discussion of administration of Linux systems.
The newsgroup news:comp.os.linux.development.system is an unmoderated newsgroup specifically for discussion of Linux kernel development. The only application development questions that should be discussed here are those that are intimately associated with the kernel. All other development questions are probably generic Unix development questions and should be directed to a comp.unix group instead, unless they are very Linux-specific applications questions, in which case they should be directed at comp.os.linux.development.apps.
The newsgroup news:comp.os.linux.development.apps is an unmoderated newsgroup specifically for discussion of Linux-related applications development. It is not for discussion of where to get applications for Linux, nor a discussion forum for those who would like to see applications for Linux.
The newsgroup news:comp.os.linux.hardware is for Linux-specific hardware questions.
The newsgroup news:comp.os.linux.networking is for Linux-specific networking development and setup questions.
The newsgroup news:comp.os.linux.x is for Linux-specific X Windows questions.
The newsgroup news:comp.os.linux.misc is the replacement for comp.os.linux, and is meant for any discussion that doesn't belong elsewhere.
In general, do not crosspost between the Linux newsgroups. The only crossposting that is appropriate is an occasional posting between one unmoderated group and news:comp.os.linux.announce. The whole point of splitting the old comp.os.linux group into many groups is to reduce traffic in each group. Those that do not follow this rule will be flamed without mercy...
Linux is on the web at the URL http://sunsite.unc.edu/LDP/
After Linux 1.0 was released, work was done on several enhancements. Linux 1.2 included disk access speedups, TTY improvements, virtual memory enhancements, multiple platform support, quotas, and more. Linux 2.0, the current stable version, has even more enhancements, including many performance improvements, several new networking protocols, one of the fastest TCP/IP implementations in the world, and far, far more. Even higher performance, more networking protocols, and more device drivers will be available in Linux 2.2.
Even with over 3/4 million lines of code in the kernel, there is plenty of code left to write, and even more documentation. Please join the email@example.com mailing list if you would like to contribute to the documentation. Send mail to firstname.lastname@example.org with a single line containing the word ``help'' in the body (NOT the subject) of the message.
This document is maintained by Michael K. Johnson <email@example.com>. Please mail me with any comments, no matter how small. I can't do a good job of maintaining this document without your help. A more-or-less current copy of this document can always be found at http://sunsite.unc.edu/LDP/
Trademarks are owned by their owners. There is no warranty about the information in this document. Use and distribute at your own risk. The content of this document is in the public domain, but please be polite and attribute any quotes.