Next Previous Contents

1. Linux

Linux is an operating system. It is one of the variations on the Unix theme.

(Is Linux a Unix system? That depends on your definition of Unix. For the user there is no doubt: Linux is a Unix. Maybe the lawyer has doubts: who owns the trademark Unix today? There is a point where Linux differs from other Unices: the source base of the kernel was developed from scratch, not as a continuation of original Bell Labs work.)

1.1 History

From:       torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject:    What would you like to see most in minix?
Date:       25 Aug 91 20:57:08 GMT


Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones.  This has been brewing
since april, and is starting to get ready.  I'd like any feedback on
things people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
among other things).

I've currently ported bash(1.08) and gcc(1.40), and things seem to work.
This implies that I'll get something practical within a few months, and
I'd like to know what features most people would want.  Any suggestions
are welcome, but I won't promise I'll implement them :-)

              Linus (torvalds@kruuna.helsinki.fi)

PS.  Yes - it's free of any minix code, and it has a multi-threaded fs.
It is NOT protable (uses 386 task switching etc), and it probably never
will support anything other than AT-harddisks, as that's all I have :-(.

Linus Torvalds, a student in Helsinki, started a small operating system in 1991.

1.2 Size

The guiding line when implementing linux was: get it working fast. I wanted the kernel simple, yet powerful enough to run most unix software.

The Linux kernel source grew superlinearly at first, then growth became roughly linear at about 60000 lines/month. Now things seem to be speeding up again.

Version Date Lines MB
0.01 Sep 1991 10239 0.2
0.10 Dec 1991 17750 0.4
0.99 Dec 1992 81091 2.2
1.0.0 Mar 1994 176250 4.7
1.2.0 Mar 1995 310950 8.4
2.0.0 Jun 1996 777956 22
2.2.0 Jan 1999 1800847 52
2.4.0 Jan 2001 3377902 100
2.5.37 Sep 2002 5100081 152
2.6.0 Dec 2003 5929913 175
2.6.10 Dec 2004 6495542 191
2.6.12 Jun 2005 6777860 199
2.6.18 Sep 2006 7752846 224
2.6.23 Oct 2007 8566606 247
2.6.27 Oct 2008 9630023 274
2.6.31 Sep 2009 11966482 342
2.6.35 Aug 2010 13465772 386
      

The goal: running most Unix software, was reached already in 0.99.

About half of the current source is I/O subsystem and device drivers. About one-fifth is architecture-specific code.

1.3 Hardware platforms

Before Unix, most operating systems were written in assembler (Multics was written in PL/I but required special hardware), and the quick rise of Unix was greatly helped by the fact that most of it is written in C, so that porting to new hardware platforms was easy. The Microsoft world is mostly tied to the i386 platform. (I think there has been a Windows NT for the DEC Alpha, but it has been abandoned.) Linux, like Unix, is easily ported. The standard tree has code for more than twenty platforms:


alpha DEC Alpha AXP (now Compaq). See alphalinux.
arm Machines based on one of the many types of ARM microprocessor (ARM, StrongARM, Xscale). A well known example is the Acorn. There is a list with more than two hundred machine types.
arm26 ARM processors with 26 bit address space.
avr32 Atmel AVR32 is a 32-bit RISC microprocessor architecture. See avr32linux.
blackfin Microprocessor from Analog Devices. See blackfin.uclinux.org.
cris The Axis Communications ETRAX 100LX embedded network CPU.
frv Fujitsu FR-V CPU.
h8300 H8/300. See Renesas.
i386 Intel 386 compatible (Intel, AMD, Cyrix, etc.) computers.
ia64 Intel Itanium. See linuxia64.
m68k Motorola 680x0 based computers such as Amiga, Atari, many Apple Macintosh models, the Next, Sun3 etc. See linux-m68k.
m68knommu Motorola 68k based computers without memory management unit. Mostly for embedded use.
mips, mips64 Silicon Graphics MIPS processors, from embedded systems to large machines. For example, Silicon Graphics Indy and O2, Cobalt Qube, DECstation 2100 and 5000, Sony Playstation. See oss.sgi/mips.
parisc HP's PA-RISC workstations.
ppc Motorola/IBM Power PC. See penguinppc.
ppc64 IBM iSeries (earlier AS/400) and pSeries.
s390, s390x IBM System/390 mainframes. See linux390.
sh Hitachi SuperH.
sparc Sun SPARC.
sparc64 Sun UltraSPARC. See ultralinux.
um User Mode Linux (Linux in a Linux box).
v850 NEC V850E.
x86_64 AMD Hammer/Opteron.

Several other ports are maintained separately.

Examples The Sharp Zaurus PDA runs Linux 2.4 on a StrongARM processor.

The Motorola A760 Linux/Java-based smartphone runs Linux 2.4 (Montavista CEE 3.0) on a Motorola (ARM-based) i.MX microprocessor.

The Linksys WRT54G wireless router runs Linux 2.4.5 on a MIPS processor. One can upload new firmware to get a custom Linux machine. A very nice toy.

1.4 Authors

To start with: Linus Torvalds. The CREDITS file for 1.0.0 mentions 80 people. The CREDITS file for 2.6.0 mentions 447 people. Many others have contributed.

1.5 Users and marketshare

Nobody knows how many users there are. Current estimates are somewhere between 15 and 30 million. As a percentage: between 1% and 2% of the desktop users.

Maybe 30% of the web servers. (See Netcraft for the status of Apache. Roughly half of the Apache machines use Linux.)

Maybe 15% of the part of the embedded system market where a real operating system is required. (The contenders are mostly Symbian, PalmOS, Linux and Windows Mobile. All industry prefers to avoid a dependence on Microsoft. So far, Symbian is more popular than Linux. Motorola and China are pushing Linux. See, for example, eweek)

The IBM BlueGene/L Linux cluster holds the 1st place in the top-500 list of supercomputers (Nov 2006). Now 80% of the top-500 machines run Linux.

Exercise Invent some way of estimating the number of Linux users in the Netherlands. Is Linux about ten times as large as FreeBSD? Is Linux half as large as MacOS?

Microsoft

"Linux wasn't started as any kind of rebellion against the 'evil Microsoft
empire,'" Torvalds told The New York Times last year. "I'm not out to
destroy Microsoft. That will just be a completely unintentional side
effect."

Well-known users

Amazon

Amazon is the world's largest internet bookshop. Amazon.com switched much of its massive internal network to Linux in 2000. By the third quarter of 2001, the company reported saving $17 million, slashing nearly a quarter of its tech expenses.

Google

Google is the world's largest search engine. It runs on Linux.

Linux is used everywhere...on the 6,000+ servers themselves, as well as desktop machines for all of our technical employees. We chose Linux because it offers us the price for performance ratio. It's so nice to be able to customize any part of the operating system that we like, at any time.
(Sergey Brin, 2000; the 6000 had become 15000 two years later, in 2003 someone reports 54000, in 2004 Google reports "tens of thousands of servers", and also "over 30 clusters, up to 2000 PCs in a cluster". In 2006 the New York Times estimates 450000 servers.)

Akamai

Akamai has the world's largest content delivery network. They use Linux servers. This fact got a lot of publicity when during a virus attack Microsoft no longer could handle the traffic for www.microsoft.com and let its DNS handle by Akamai.

Software

(Spring 2008) IDC estimates the Linux share of the software market at 4% and expects a growth to 11% in 2008-2011.

1.6 Name

   I.15)   What is the proper pronounciation for "Linux"?

ANSWER: (Linus himself)
'li' is pronounced with a short [ee] sound: compare prInt, mInImal etc.
'nux' is also short, non-diphtong, like in pUt.  It's partly due to
minix: linux was just my working name for the thing, and as I wrote it
to replace minix on my system, the result is what it is...  linus' minix
became linux.

I originally intended it to be called freax (although buggix was one
contender after I got fed up with some of the more persistent bugs :)
and I think the kernel makefiles up to version 0.11 had something to
that effect ("Makefile for the freax kernel" in a comment).  But arl
called the linux directory at nic.funet.fi pub/OS/Linux, and the name
stuck.  Maybe just as well: freax doesn't sound too good either (freax
is obviosly free + freak + the obligatory -x).

The name Linux is used to denote the kernel of this operating system, but also to denote the entire system, complete with user mode software. GNU people ("GNU's Not Unix") prefer to call the latter GNU/Linux, in order to stress that the kernel is Linux, but a lot of the user mode software is from GNU/FSF. In particular, the compiler used under Linux is gcc, and the most common C library is glibc.

[Linus called his system "freax". When Ari Lemmke, the administrator at ftp.funet.fi, made an ftp directory for this future system, he called the directory "Linux", and that became the name of the system. In January 1996 RMS (Richard M. Stallman) tried to enforce the name "Lignux". It was a fiasco. In March he tried " Linux-based GNU system". In the end people that agreed that there should be some GNU in the name settled on " GNU/Linux". In reality, of course, everybody uses the name Linux.]

1.7 Distributions

It is possible, but a bit time consuming, to construct a private system, finding all components on the net. (See, for example, LinuxFromScratch.) These days it is most common to install a Linux distribution, probably from CDROM. Several hundred distributions exist. Well-known ones are RedHat ( Fedora), Ubuntu, Debian, Mandrake, Slackware, Gentoo, SuSE/Novell, where the last one has obscure Microsoft connections. A live distribution on a CDROM (no hard disk needed) is Knoppix. There are also very small distributions, like tomsrtbt, a distribution on a single floppy, very useful for investigating and repairing broken systems (Linux or not). See also distrowatch.com.

What distribution runs here?

On an old system there is no easy way to find out what release of which distribution it is. Later, people started providing such information in files like /etc/foo-release (where 'foo' is redhat, fedora, SuSE, etc.). Again later, we got a utility called lsb_release, and

% lsb_release -a
LSB Version:    1.3
Distributor ID: FedoraCore
Description:    Fedora Core release 1 (Yarrow)
Release:        1
Codename:       Yarrow

1.8 Copyright, Open Source, GPL

Most software comes in binary form only. If something is broken, you can report the problem, and hope it will be fixed sooner or later. Open Source software comes together with the source. If something is wrong, you can fix it yourself, or, in case you are not a programmer or have no time, ask someone, perhaps pay someone, to fix it for you. That makes Open Source software much more useful than other software.

The Linux kernel, as almost all of the software in a random Linux distribution, is open source software, distributed freely under GPL. (Since 1 Feb 1992. Before that there was the anti-commercial "You may not distribute this for a fee", see the 0.01 kernel release notes.)

The GPL ( GNU Public License) is the "virus" license that covers a lot of open software: You are allowed to use this software, modify it, distribute it, but only under the condition that you make the source of what you distribute freely available again (under GPL). Putting stuff in the public domain allows vendors to take it, modify it, and sell a closed source version. The GPL prevents this - if you get it freely and improve it, then you can only distribute the improved version if you contribute your improvements back to society.

For kernel modules, see below.

Linux® is a registered trademark of Linus Torvalds.

1.9 Literature and documentation

Operating Systems

Andrew S. Tanenbaum, Modern Operating Systems, Prentice Hall, 1992.

The Unix OS

John Lions, Lions' Commentary on UNIX 6th Edition with Source Code, Peer-to-Peer Communications, 1996, published by Annabooks, ISBN 1-57398-013-7.

Maurice J. Bach, Design of the Unix Operating System, Prentice Hall, 1986.

Uresh Vahalia, Unix Internals: The New Frontiers, Prentice Hall, 1995.

Marshall Kirk McKusick, Keith Bostic, Michael J. Karels & John S. Quarterman, The Design and Implementation of the 4.4 BSD Operating System, Addison-Wesley, 1996.

Unix programming

W. Richard Stevens, Advanced Programming in the UNIX Environment, Addison-Wesley, 1994.

The Linux kernel

David Rusling, The Linux Kernel. Online version [On Linux 2.0.]

Daniel P. Bovet & Marco Cesati, Understanding the Linux kernel, O'Reilly, 2001. [On Linux 2.2.]

Daniel P. Bovet & Marco Cesati, Understanding the Linux kernel, 2nd edition, O'Reilly, 2003. [On Linux 2.4.]

Daniel P. Bovet & Marco Cesati, Understanding the Linux kernel, 3rd edition, O'Reilly, 2005. [On Linux 2.6.]

Alessandro Rubini, Linux device drivers, O'Reilly, 1998.

Alessandro Rubini & Jonathan Corbet, Linux device drivers 2nd ed., O'Reilly, 2001. Online version

Jonathan Corbet, Alessandro Rubini & Greg Kroah-Hartman, Linux device drivers 3rd ed., O'Reilly, 2005. Online version

M. Beck, H. Böhme, M. Dziadzka, U. Kunitz, R. Magnus, C. Schröter & D. Verworner, Linux kernel programming 3rd ed., Addison Wesley, 2002.

R. Card, E. Dumas & F. Mevel, The Linux Kernel Book, John Wiley and Sons, 1998.

David Mosberger & Stéphane Eranian, IA-64 Linux kernel, HP / Prentice Hall, 2002.

Robert Love, Linux Kernel Development, Developer's library, 2003. ISBN 0-672-32512-8 ad

On the web one can find an enormous amount of information. Use your favorite search engine.

And then there is the source..

Use the source, Luke!


Next Previous Contents