Linux

From Example Problems
Jump to navigation Jump to search
See Linux kernel for the kernel itself. See Linux (washing powder) for the Swiss brand of detergent. See 9885 Linux for the asteroid.
File:Tux.png
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 prominent examples of free software and of open-source development: unlike proprietary operating systems such as Windows and Mac OS, all of its underlying source code is available to the public and anyone can freely use, modify, and redistribute it.

In the narrowest sense, the term Linux refers to the Linux kernel, but it 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 and other sources. Most broadly, a Linux distribution bundles large quantities of application software with the core system, and provides more user-friendly installation and upgrades.

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 gaining popularity in 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 all popular computer architectures (and several obscure ones). It is deployed in applications ranging from embedded systems (such as mobile phones and personal video recorders) to personal computers to supercomputers.

History

File:Richard Matthew Stallman.jpeg
Richard Stallman, founder of the GNU project for a free operating-system.

In 1983, Richard Stallman founded the GNU project, which today provides an essential part of most Linux systems (see also GNU/Linux, below). The goal of GNU was to develop a complete Unix-like operating system composed entirely of free software. By the beginning of the 1990s, GNU had produced or collected nearly all of the necessary components of this system—libraries, compilers, text editors, a Unix-like shell, and other software—except for the lowest level, the kernel. The GNU project began developing their own kernel, the Hurd, in 1990 (after an abandoned attempt called Trix). According to Thomas Bushnell, the initial Hurd architect, their early plan was to adapt the BSD 4.4-Lite kernel and, in hindsight, "It is now perfectly obvious to me that this would have succeeded splendidly and the world would be a very different place today" [1]. However, due to a lack of cooperation from the Berkeley programmers, Stallman decided instead to use the Mach microkernel, which subsequently proved unexpectedly difficult, and the Hurd's development proceeded slowly.

File:Linus Torvalds.jpeg
Linus Torvalds, creator of the Linux kernel.

Meanwhile, in 1991, another kernel—eventually dubbed "Linux"—was begun as a hobby by Finnish university student Linus Torvalds while attending the University of Helsinki. Torvalds originally used Minix, a simplified Unix-like system written by Andrew Tanenbaum for teaching operating system design. However, Tanenbaum did not permit others to extend his operating system, leading Torvalds to develop a replacement for Minix. Linux started out as a terminal emulator written in IA-32 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 read and write files to disk, this task-switching terminal emulator was extended with an entire filesystem handler. After that, it gradually evolved into an entire operating system kernel intended as a foundation for POSIX-compliant systems. The first version of the Linux kernel (0.01) was released to the Internet on September 17, 1991, with the second version following shortly thereafter in October [2]. Since then, thousands of developers from 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.

By the 0.01 release, Linus had implemented enough POSIX system calls to make Linux run the GNU Bash shell; after this bootstrapping procedure, development accelerated rapidly. A computer running Minix was originally necessary in order to configure, compile, and install Linux. Initial versions of Linux also required an operating system to be present in order to boot from a hard disk, but soon there were independent bootloaders, the most well known being lilo. The Linux system quickly surpassed Minix in functionality; Torvalds and other early Linux kernel developers adapted their kernel to work with the GNU components and user-space programs to create a complete, fully functional, free operating system.

Today, Torvalds continues to direct the development of the kernel, while other subsystems such as the GNU components are developed separately. The task of producing an integrated system, which combines all of these basic components along with graphical interfaces (such as GNOME or KDE, which in turn are based on the X Window System) and application software, is now performed by Linux distribution vendors/organizations.

Tux the penguin is the logo and mascot of Linux (although there are other, less common representations; see OS-tan), based on an image created by Larry Ewing in 1996. The name "Linux" was coined, not by Torvalds, but by Ari Lemmke. Lemmke was working for the Helsinki University of Technology (HUT), located in Espoo near Helsinki, as an administrator of ftp.funet.fi, an FTP server which belongs to the Finnish University and Research Network (FUNET), which has numerous organizations as its members, amongst them the HUT and the University of Helsinki. He was the one to invent the name Linux for the directory from which Torvalds' project was first available for download [3]. The name was later trademarked (see below).

Licensing

The Linux kernel, along with most of the GNU components, is licensed under the GNU General Public License (GPL). The GPL requires that all source code modifications and derived works also be licensed under the GPL, and is sometimes referred to as a "share and share-alike" (or copyleft) license. In 1997, Linus Torvalds stated, "Making Linux GPL'd was definitely the best thing I ever did." [4] Other subsystems use other licenses, although all of them share the property of being free/open-source; for example, several libraries use the LGPL (a more-permissive variant of the GPL), and the X Window System uses the permissive (non-copyleft) MIT License.

The Linux trademark (U.S. Reg No: 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 (LMI). LMI has also sought to enforce the Linux trademark in countries other than the US. In September 2005, Intellectual Property Australia, the trademark regulator in Australia, rejected an application to trademark Linux.

Pronunciation

Linux is commonly pronounced either to rhyme with minix [ˈlɪnəks], or to rhyme with my nicks [ˈlaɪnəks]. The first pronunciation is considered more correct, while the second has become popular for sounding more natural in English. Other variations are also possible, but less frequently heard.

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

For more details on this topic, see 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 or a Linux-based GNU system. Torvalds, the creator of the Linux kernel, has said that he finds calling Linux in general GNU/Linux "just ridiculous." Still, some distributions do use this name — notably Debian GNU/Linux — while most people 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

For more details on this topic, see SCO-Linux controversies.

In March 2003, the SCO Group (SCO) filed a lawsuit against IBM claiming that IBM had contributed some 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. A few of Novell's press releases seem to demonstrate serious problems with SCO's claims:

  • 2003-May-15 Novell Statement on SCO Contract Amendment (good news for Linux users)
  • 2003-May-28 Novell Challenges SCO Position, Reiterates Support for Linux
  • 2003-May-30 Novell statement re: SCO press conference allegations
  • 2003-Jun-06 Novell Statement on SCO Contract Amendment
  • 2003-Nov-18 Novell Statement on SCO claims regarding a non-compete clause in Novell-SCO contracts

The most comprehensive coverage of this suit is given by Groklaw.

Distributions

For more details on this topic, see Linux distribution.

Linux is predominantly used as part of a Linux distribution (commonly called a 'distro'). These are compiled by individuals, loose-knit teams, and various professional organizations. They include 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 deliberately include only free software. Over 450 distributions are available [7].

A typical general-purpose distribution includes the Linux kernel, some 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.

Development efforts

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 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.

The source code for the Linux kernel used to be maintained using the software application called BitKeeper but there was a dispute with its openness so now it is maintained via Git, the new directory content manager created by Linus Torvalds himself.

Applications

In the past, a user needed significant knowledge of computers in order to install and configure Linux. Because of this, and because of 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.

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. A prominent example of this software combination in use is MediaWiki — the software primarily written for Wikipedia.

Linux is also often used in embedded systems. Its low cost makes it particularly useful in set-top boxes and for devices such as the Simputer, a computer aimed mainly at low-income populations in developing nations. In mobile phones, Linux has become a common alternative to the Symbian OS software. 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. It is also expanding into telecommunications equipment through efforts such as Carrier Grade Linux.

Linux is increasingly common as an operating system for supercomputers, most recently on 64-bit AMD Opterons in the Cray XD1. As of June 2005, the 3 fastest supercomputers in the world (as recorded by the Top500) run Linux.

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, Microsoft Windows, other desktop environments, and its traditional Unix-like command line interface. Graphical Linux software exists for almost any area and in some areas there is a greater quality 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 distributions have become user-friendly, with many graphical interfaces and applications.

Its market share of desktops is rapidly growing. According to market research company IDC, in 2002, 25% of servers and 2.8% of desktop computers were already running Linux. 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 [8].

Linux and other free software projects have been frequently criticized for not going far enough in terms of ensuring usability, and Linux has been generally considered more difficult to use than Windows or the Macintosh, although it is steadily improving. Applications running within graphical desktop environments such as GNOME and KDE in Linux are very similar to those running on other operating systems. While some applications cannot be run, there usually exists a replacement that will. A growing number of proprietary software vendors are supporting Linux, and open source development for Linux is also steadily increasing. Additionally, proprietary software for other operating systems may be run through compatibility layers, such as Wine. The area of hardware and services configuration is where user experience is most varied. GUI configuration tools and control panels are available for many system settings and services, but editing of plain-text configuration files is often required. On the command shell, many usability hangups from early Unix days generally remain, such as the difficulty in finding some commands, and the inability to undo many operations such as file deletion. Many older programs with text user interfaces (TUI) have wild inconsistencies between them, but they maintain loyal followings.

It used to also be easier to find local technical support for Windows or Mac OS than for Linux in some places. It is worth noting that an operating system's usability is subjective and dependent on the background knowledge and needs of its users. For example, Gentoo Linux, a source-based distribution, is time-consuming to install, but can be more usable for advanced users than stereotypical beginner-friendly distributions, such as Mandriva or Ubuntu.

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

Most distributions of Linux have two or more means of software installation, 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 a slow initial 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 are becoming familiar with it.

Support for certain new and obscure hardware remains an issue. Though some vendors provide device drivers, many 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 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 such as those 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 providing consultation to 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, on topics including market share and reliability, with many studies specifically examining Linux.

Installation

Error creating thumbnail: Unable to save thumbnail to destination
Wikibooks has more about this subject:

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. It is unnecessary to file license numbers and enter them during installation. Also, personal computers that come with Linux distributions already installed are readily available from numerous vendors, including large mainstream vendors like Hewlett-Packard and Dell.

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, such as Knoppix, can be run directly from a "live CD" running entirely in RAM, 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 as little as 1 floppy disk 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 Red Hat Linux, Fedora Core 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 familiar with 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, 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 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 and they both 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 Debian's debconf, Mandriva's Control Center, or SUSE's YaST. 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 derivatives 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. Although compatibility is improving, in many cases week-by-week, applications that make use of non-standard programming practices can experience problems.

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.

A fourth alternative is to run the Windows applications on a Windows machine and use VNC to view it on the Linux Desktop. This is a good solution if you have one application that you cannot migrate, and an old PC. It also works well if many people (using Linux) need occasional access to Windows applications, and can share a single Windows PC for that purpose. This solution is particularly useful if you have a Windows only item of hardware, such as a dongle, custom decoder card, or some USB devices.

Programming on Linux

A number of compilers are available for Linux.

The GNU Compiler Collection (GCC) comes with the vast majority of distributions. GCC supports C, C++ and Java among other languages.

There are also a number of IDEs available for Linux, including the famous Emacs. Some of the most popular are Anjuta, KDevelop, Glade (actually a user interface designer) and Eclipse.

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.

References

See also

Error creating thumbnail: Unable to save thumbnail to destination
Wikibooks has more about this subject:
Error creating thumbnail: Unable to save thumbnail to destination
Wikibooks has more about this subject:
Error creating thumbnail: Unable to save thumbnail to destination
Wikibooks has more about this subject:

Template:Wikibookschapter

General

Lists

Magazines

External links

Template:Sisterlinks General

Distribution related

  • Distro Quiz — a test that recommends a distribution based on the answers.
  • Linux Online — distributions and FTP Sites (sortable by categories)
  • DistroWatch.com — distribution information & announcements.
  • Linux ISO — comprehensive but rather outdated site which has ISO download links for several distributions.
  • SystemDisc.com — offers a large selection of Linux and BSD distributions.

Miscellaneous

Template:Linux-distro

als:Linux ar:لينكس bg:ГНУ/Линукс ca:Linux cs:Linux da:Linux de:Linux el:Linux eo:Linukso es:Linux et:Linux eu:Linux fa:لینوکس fi:Linux fr:Linux gl:Linux he:לינוקס hr:Linux hu:Linux ia:Linux id:Linux is:Linux it:Linux ja:Linux ka:ლინუქსი ko:리눅스 ku:Linux lb:Linux li:Linux lt:Linux lv:GNU/Linux mk:Линукс mg:Linux ms:Linux nds:Linux nl:GNU/Linux nn:Linux no:Linux pa:ਲੀਨਕਸ pl:Linux pt:Linux ro:Linux ru:GNU/Linux simple:Linux sh:Linux sk:Linux sl:Linux sr:Линукс sv:GNU/Linux ta:லினக்ஸ் th:ลินุกซ์ tl:GNU/Linux tr:Linux vi:Linux zh:Linux zh-min-nan:Linux