Jump to content

Linux

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Mysid (talk | contribs) at 07:05, 20 July 2005 (rv tests). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

This article is about Linux-based operating systems, GNU/Linux, and related topics. See Linux kernel for the kernel itself. See Linux (washing powder) for the Swiss brand of detergent.
Tux, a cartoon penguin frequently featured sitting, is the official Linux mascot.

Linux is a computer operating system and its kernel. It is one of the most famous examples of free software and of open-source development: unlike other major operating systems (such as Windows or Mac OS), all of its underlying source code is available to the public and anyone can freely use, modify, and redistribute it.

The term Linux strictly refers to the Linux kernel, but is commonly used to describe entire Unix-like operating systems (also known as GNU/Linux) that are based on the Linux kernel combined with libraries and tools from the GNU project. Linux distributions often bundle large quantities of software with the core system, and over 300 distributions are available [1].

Initially, Linux was primarily developed and used by individual enthusiasts. Since then, Linux has gained the support of major corporations such as IBM, Hewlett-Packard and Novell for use in servers and is beginning to make inroads into the desktop market. Proponents and analysts attribute this success to its vendor independence, low cost, security, and reliability.

Linux was originally developed for Intel 386 microprocessors and now supports a variety of computer architectures. It is deployed in applications ranging from personal computers to supercomputers and embedded systems such as mobile phones and personal video recorders.

History

Linus Torvalds, creator of the Linux kernel

The Linux kernel was initially written as a hobby by Finnish university student Linus Torvalds while attending the University of Helsinki. Torvalds originally used Minix on his computer, a simplified kernel written by Andrew Tanenbaum for teaching operating system design. However, Tanenbaum did not support extensions to his operating system, leading Torvalds to write a replacement for Minix. Linux started out as a terminal emulator written in Intel 80386 assembler and C which was compiled into binary form and booted from a floppy disk so that it would run outside of any operating system. The terminal emulator was running two threads: one for sending and one for receiving characters from the serial port. When Linus needed to write and read files to disk, this task-switching terminal emulator was extended with an entire filesystem handler, and after that gradually evolved into an entire operating system targeted at POSIX-compliance. Linus implemented enough POSIX system calls to make Linux run the Bash shell and after this bootstrapping procedure the development rapidly sped up. Although a running Minix system was originally necessary in order to configure, compile, install and run Linux, the Linux system quickly surpassed Minix in functionality and was soon able to boot on its own and compile its own source code.

The first version of the Linux kernel was released to the Internet in September 1991, with the second version following shortly thereafter in October [2]. Since then, thousands of developers around the world have participated in the project. Eric S. Raymond's essay The Cathedral and the Bazaar discusses the development model of the Linux kernel and similar software.

The history of the Linux kernel is closely tied to that of GNU, a prominent free-software project led by Richard Stallman. The GNU project was announced in 1983 for the purpose of developing a complete Unix-like operating system, including software development tools and user application programs, composed entirely of free software. By the release of the first version of the Linux kernel, the GNU project had produced all the necessary components of this system except the kernel. Torvalds and other early Linux-kernel developers adapted their kernel to work with the GNU components and user space programs to create a fully functional operating system. The Linux kernel and operating system are licensed under the GNU General Public License (GPL) which requires that all source code modifications and derived works also be licensed under the GPL, which is generally referred to as a "share and share-alike" license. In 1997 Linus Torvalds stated, "Making Linux GPL'd was definitely the best thing I ever did." [3]

Tux the penguin is the logo and mascot of Linux (though there are other less common representations; see OS-tan). The name "Linux" was coined, not by Torvalds, but by Ari Lemmke, administrator at ftp.funet.fi, who named the FTP directory from which it was first available [4]. The Linux trademark (SN: 1916230) is owned by Linus Torvalds, registered for "Computer operating system software to facilitate computer use and operation." The licensing of the trademark is now handled by the Linux Mark Institute.

See also: Timeline of Linux development

Pronunciation

In 1992, Torvalds explained [5] (IPA pronunciations added to quote in braces):

"'li' is pronounced with a short [ee] '{IPA /ɪ/} sound: compare prInt, mInImal etc. 'nux' is also short, non-diphthong, like in pUt {IPA /ʊ/}. 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."

An audio file of Torvalds saying "Hello, this is Linus Torvalds, and I pronounce Linux as /linəks/" also exists [6]. Note that in English, "Linux" and "Minix" are usually pronounced with a short /I/ sound that is different from Torvalds's Finland-Swedish pronunciation of these words.

See also List of words of disputed pronunciation for a discussion of the various ways "Linux" is pronounced.

Linux and GNU/Linux

Main article: GNU/Linux naming controversy

Because the GNU libraries and programs, an essential part of nearly all Linux distributions, stem from a long-standing free operating system project that predates the Linux kernel, Richard Stallman and the Free Software Foundation ask that the combined system (regardless of distribution) be referred to as GNU/Linux. Although some distributions do use this name — most notably Debian GNU/Linux — most simply refer to the system as Linux. The distinction between Torvalds' kernel and entire Linux-based systems that contain the kernel is a perennial source of confusion, and the naming remains controversial.

Litigation

Main article: SCO-Linux controversies

In March 2003, the SCO Group (SCO) filed a lawsuit against IBM claiming that IBM had contributed portions of SCO's copyrighted code to the Linux kernel in violation of IBM's license to use UNIX. Additionally, SCO sent letters to a number of companies warning that their use of Linux without a license from SCO may be actionable, and claimed in the press that they would be suing individual Linux users. This controversy has involved lawsuits by SCO against Novell, DaimlerChrysler (partially dismissed in July, 2004), and AutoZone, and by Red Hat and others against SCO. To date, no proof of SCO's claims of copied code in Linux has been provided and SCO's claims have varied widely. The most comprehensive coverage of this suit is given by Groklaw.

Distributions

Main article: Linux distribution

Linux is dominantly used as part of a Linux distribution (distro). These are compiled by individuals, loose-knit teams, and various professional organizations. They include any number of additional system software and application programs, as well as certain processes to install these systems on a computer. Distributions are created for many different purposes, including localization, architecture support, real-time applications, and embedded systems, and many of which deliberately include only free software.

A typical general-purpose distribution includes the Linux kernel, the GNU libraries and tools, command-line shells, and thousands of application software packages, from office suites and the graphical X Window System to compilers, text editors, and scientific tools. A variety of Linux distribution screenshots can be viewed here.

See also: List of Linux distributions

Development efforts

The bootable image of the Linux kernel itself is written entirely in the version of the C programming language supported by the GNU GCC compiler (which supports a "superset" of standard C), together with relatively short sections of code written in the assembly language of the target architecture (and at last count Linux supported about 20 different processor families). Because of the extensions to 'C' supported by the GCC compiler it was (in conjunction with its associated toolset) for long the only compiler capable of correctly building a Linux kernel. More recently Intel claims to have modified its 'C' compiler so that it also is capable of creating a Linux kernel.

Many other languages are used in some way, primarily in connection with the kernel 'build' process (the methods whereby the bootable image is created from the sources). These include Perl, Python, and various shell scripting languages. Some closed source drivers may also be written in C++, Fortran, or other languages.

More Than a Gigabuck: Estimating GNU/Linux's Size, a study of Red Hat Linux 7.1, found that this particular distribution contained 30 million source lines of code (SLOC). The Linux kernel provided contained 2.4 million lines of code or 8% of the total. Using the Constructive Cost Model (COCOMO), the study estimated that this distribution required about eight thousand person-years of development time. Had all this software been developed by conventional proprietary means, it would have cost 1.08 billion dollars (year 2000 dollars) to develop in the United States. Slightly over half of the code in that distribution was licensed under the GPL.

In a later study, Counting potatoes: the size of Debian 2.2, the same analysis was performed for Debian GNU/Linux version 2.2. This distribution contained over fifty-five million source lines of code, and the study estimated that it would have cost 1.9 billion dollars (year 2000 dollars) to develop by conventional proprietary means.

Applications

A GNOME Desktop

In the past, a user needed significant knowledge of computers in order to install and configure Linux. For this reason and, being attracted by access to the internals of the system, Linux users have traditionally tended to be more technologically oriented than users of Microsoft Windows and Mac OS, often revelling in the tag of "hacker" or "geek".

This stereotype has been dispelled in recent years by the increased user-friendliness and broad adoption of many Linux distributions. Linux has made considerable gains in server and special-purpose markets, such as image rendering and Web services, and is now making inroads into the high volume desktop market.

A KDE Desktop

Linux is the cornerstone of the so-called LAMP server-software combination (Linux, Apache, MySQL, Perl/PHP/Python) that has achieved widespread popularity among Web developers, making it one of the most common platforms on the Web.

Linux is also often used in embedded systems. Its low cost makes it particularly useful in set-top boxes and for such devices as the Simputer, a computer aimed especially at low-income populations in developing nations. In mobile phones, it is an alternative to the Symbian OS software in the cell-phone market. In handheld devices, it is an alternative to the Windows CE and Palm OS operating systems. The popular TiVo PVR also uses a customized version of Linux. A large number of network firewalls and routers, including several from Linksys, use Linux internally, taking advantage of its advanced firewalling and routing capabilities. Linux is increasingly common as an operating system for supercomputers, most recently on 64-bit AMD Opterons in the Cray XD1.

Linux is rapidly gaining popularity as a desktop operating system. In desktop environments like KDE and GNOME, Linux may be used with a user interface that is similar to that of Mac OS or Microsoft Windows in addition to other desktop environments and to its traditional Unix-like command line interface. Graphical Linux software exists for almost any area and in some areas there is a greater breadth and quantity of software available than for proprietary operating systems.

Usability and market share

Once viewed as an operating system only computer geeks could use, Linux has become a much more user-friendly system with many graphical interfaces and applications.

Its market share for desktops is rapidly growing. According to market research company IDC, 25% of servers and 2.8% of desktop computers were already running Linux in 2002. However, argued advantages of Linux, such as lower cost, fewer security vulnerabilities, and lack of vendor lock-in have spurred a growing number of high-profile cases of mass adoption of Linux by corporations and governments. The Linux market is among the fastest growing and is projected to exceed $35.7 billion by 2008 [7].

Linux and other free software projects have been frequently criticized for not going far enough in terms of ensuring usability, and the question of Linux's usability compared with Windows or the Macintosh remained hotly debated. For those only familiar with Windows or the Macintosh, using Linux may be perceived difficult at first because many tasks do not work identically, and substantial differences remain in more sophisticated administrative and configuration tasks. It was also easier to find local technical support for Windows or MacOS than for Linux in some places.

However, in comparison to operating systems with a homogenous user interface such as Windows or Mac OS X, it is difficult to measure the usability as the ease-of-use and target group varies from distribution to distribution. For example, Gentoo Linux, a source-based distribution, remains notoriously difficult to install for beginners but remains the distro of choice for many advanced Linux users. Many advanced users find Gentoo more "usable" in comparison due to the relative freedom that the nature of the distro allows, in comparison to a more Windows-like distro such as Mandriva. Beginners, on the other hand, find that the freedom that Gentoo Linux offers renders simple tasks far too complicated, limiting the distro's usability. A more beginner-friendly distro, such as Mandriva or Linspire, offers a more guided approach, making it more "usable" in the eyes of beginners, but is perceived by many advanced users as being bloatware, being filled with too much software rendering it slow and unstable.

Users might have to switch application software, and equivalents of some specific programs may not be available or there may be fewer options, as there are for computer games. However, general applications like spreadsheets, wordprocessors, and browsers are available for Linux in profusion, and, because of free distribution, a user may choose what suits him.

Most distributions of Linux have two or more means of installation of software and more office and end-user applications now come with an automated installation program. Because of reluctance to change and the fact that many computers come with Windows pre-installed, there has been initially a slow adoption of new desktop operating systems. Linux is past that stage now, with numerous manufacturers installing Linux and many organizations having five or more years experience with Linux - since installation evolved to graphical user interfaces - or Unix which has been around for decades. Linux is rapidly gaining popularity as a desktop operating system as it is increasingly used in schools and workplaces and more people become familiar with it.

Support for certain new and obscure hardware remains an issue. Though reputable vendors provide device drivers, some available device drivers must be developed by volunteers after the release of the product. Often this development requires reverse engineering of some sort, as certain manufacturers still remain secretive and refuse to provide hardware or firmware specifications for their products. Deliberately non-portable hardware drivers like Winmodems and Winprinters have been a general problem.

There have been conflicting studies of Linux's usability and cost in the past. Microsoft-sponsored studies by IDC have argued that Linux had a higher total cost of ownership (TCO) than Windows. However, Relevantive, the renowned Berlin-based organization specializing in consulting companies on the usability of software and Web services, concluded that the usability of Linux for a set of desktop-related tasks is "equal to Windows XP." Since then there have been numerous independent studies that show that a modern Linux desktop using Gnome or KDE is on par with or superior to Microsoft Windows.

Linux distributions have been criticized for unpredictable development schedules, thus making enterprise users less comfortable with Linux than they might be with other systems (Marcinkowski, 2003). However, some observers claim that the intervals between Linux distribution releases are no worse, and often better, than the project management "schedule slipping" that occurs with other operating systems and with software systems in general. The large number of choices of Linux distributions can also confuse users and software vendors.

The paper Why Open Source Software / Free Software (OSS/FS)? Look at the Numbers! identifies many quantitative studies of open source software, including market share and reliability, with many studies specifically examining Linux.

Also see Windows vs Linux

Installation

In the past, difficulty of installation was a barrier to wide adoption of Linux-based systems, but the process has been made easier in recent years. Many distributions are at least as easy to install as a comparable version of Windows. Many distributions contain much more software than Windows, so per package they are also much easier to install. One does not need to file license numbers and enter these to have the installer work. Also, personal computers that come with Linux distributions already installed are readily available from numerous vendors, including large mainstream vendors like Hewlett-Packard and Wal-Mart.

The most common method of installing Linux, supported by all major distributions, is by booting from a CD that contains the installation program and installable software. Such a CD can be burned from a downloaded ISO image, purchased alone for a low price, or can be obtained as part of a box set that may also include manuals and additional commercial software.

Some distributions, such as Debian, can be installed from a small set of floppy disks. After a basic system is installed, more software can be added by downloading it from the Internet or using CDs.

Other distributions, most famously Knoppix, can be run directly from a live CD running entirely in ramspace, rather than installing it to the hard drive. With this, one boots from the CD and can use Linux without making any modification to the contents of the hard drive. Similarly, some minimal distributions, such as tomsrtbt, can be run directly from a set of floppy disks without needing to change the hard drive contents.

Still another mode of installation of Linux is to install on a powerful computer to use as a server and to use ordinary less powerful machines (perhaps without hard drives, and having less memory and slower CPUs) as clients over the network. Clients can boot over the network from the server and display results and pass information to the server where all the applications run. A Linux Terminal Server is a single machine to which many clients can connect this way, so one obtains the benefit of installing Linux on many machines for the cost of installing on one. The clients can be ordinary PCs with the addition of the network bootloader on a drive or network interface controller. Variations on this mode include using local drives and computing power to run applications. The cost savings achieved by using thin clients can be invested in greater computing power or storage on the server.

Many distributions also support booting over a network, so an installation on a properly configured machine can be done remotely.

Anaconda, one of the more popular installers, is used by RedHat, Fedora and other distributions to simplify the installation process. It is famous for its ability to automatically partition a hard drive using the Disk Druid utility.

Installation on an existing platform

Many distribution companies now are sparing no effort to provide users with advanced, easy and specific installations. Some beginners (especially those used to Microsoft Windows and Mac OS) may still feel that making the shift can be hard but many solutions have been created to solve this problem.

Some let the user install Linux on top of their current system. Consider WinLinux[8], for example. After downloading the installer (more than 100MB), the user can install Linux just like any other Windows application. The software provides all the needed features; it is a real Linux distribution. The difference is that it is not necessary for the user to leave Windows, since the Linux OS is installed to the Windows hard-disk partition. A Linux boot loader will boot the Linux system when the PC is restarted and the user chooses to boot Linux. Similar approaches include Cygwin and coLinux.

Technology of Virtual machines (such as Virtual PC or VMware) also enables Linux (or any other OS) to be run inside Windows. The virtual machine software will simulate an isolated environment onto which the Linux system is installed. After everything is done, the virtual machine can be booted just as if it were an independent computer.

Demonstration

The difficulty in demonstrating Linux is still a major obstacle, slowing its adoption as a personal computing platform. Linux User Groups or LUGS, still provide the primary face-to-face forum for demonstration of Linux. Commercial exhibitions provide Linux demonstrations to potential new users, especially corporate buyers. Many commercial distributions are hard to install, but with work, allow someone to re-use an old machine to see what the Linux desktop is like. The approach by Knoppix, which runs Linux off of a CD without disturbing the PC's hard drive, is probably the most successful demonstration tool to date. MEPIS also runs off a CD like Knoppix but it can also be installed onto a PC like any other Linux distribution. The fastest approach is probably that of Workspot, which uses VNC to provide a free Linux desktop demo online (available here).

Configuration

Configuration of most system wide settings are stored in a single directory called /etc, while user-specific settings are stored in hidden files in the user's home directory. A few programs use a configuration database instead of files.

There are a number of ways to change these settings. The easiest way to do this is by using tools provided by distributions such as SUSE's YaST or Mandriva's Control Center. Others, like Linuxconf, Gnome System Tools, and Webmin, are not distribution-specific. There are also many command line utilities for configuring programs. Since nearly all settings are stored in ordinary text files they can be configured by any text editor.

Running Windows applications

There are several ways to run applications written for Windows on Linux, with varying levels of success. The popular Wine software, along with the commercial programs Crossover Office and Transgaming's Cedega create an application compatibility layer by reimplementing the Windows API inside of Linux. Many Windows programs run on Linux at approximately the same speed using these programs, and in some cases run faster. Since these programs are written without use of any Microsoft code, they do not require a Windows license.

A similar alternative to running Windows applications inside Linux is to use the proprietary Win4Lin software, which converts Microsoft's version of the Windows API to run inside Linux rather than reimplementing it from scratch. Since a legal copy of the Microsoft implementation of the Windows API is needed, use of Win4Lin requires a copy of Windows.

A third alternative for running Windows applications within Linux is to use a virtual machine program and run the desired application along with the entire virtual Windows operating system. VMware is a proprietary hardware virtualisation program that can run Windows in this way with near-perfect functionality, however this approach can carry a considerable speed and performance penalty. Full CPU emulators (such as QEMU or the slower counterpart Bochs) can be used, though to run a Windows program these emulators will also require a copy of Windows. Aside from the performance difficulties, virtual machine approaches to running Windows applications cannot integrate Windows programs into the Linux desktop, as they must instead run inside the virtual Windows desktop.

Support

Technical support is provided by commercial suppliers and by other Linux users, usually in online forums, newsgroups and mailing lists. Linux User Groups (LUGs) all over the world assist many users, mostly locally, and often also hold "installfests" where users can install Linux with a nearby helping hand.

The business model of commercial suppliers is generally dependent on charging for support, especially for business users. Third-party commercial support is also readily available.

Resources

References

See also

Magazines

  • Kernel.org The Official Website of Linux Kernel. The source code of the Linux kernel can be downloaded from here.