Linux 2 Essay, Research Paper
Table of Contents
LINUX
I. Introduction
A. What is Linux
1. Where did Linux came from
2. When was Linux introduced
3. Types of Linux
B. Benefits of Linux
1. Performance
2. Usability
3. Features
4. Cost
II. Getting Started
A. System Requirements
B. Installation
III. Cool Stuff
A. X Windows
B. Networking
C. System Administration
IV. Conclusion
What is LINUX?
LINUX is a free, highly advanced, open-source operating system for PCs and Workstations. Technically, LINUX is an operating system kernel, the core part of an operating system. The LINUX kernel is commonly bundled with many other components to form a complete LINUX System or Distribution. When most people refer to LINUX, they are talking about this complete set of programs needed to run a computer, not just the kernel.
Many people know of, or have at least heard of, UNIX. UNIX is both one of the oldest and one of the most powerful operating systems available today. “How can UNIX be old and yet powerful by today’s standards , you ask. The answer to this question lies in the history of UNIX; UNIX is a sort of subset of a much larger and more complex operating system called MULTICS. Both UNIX and MULTICS were developed decades ago for very large computers; only now, decades later are personal computers finally powerful enough to tackle these multitasking, multi-user systems with advanced features. Getting back to the crux of our first fact, LINUX looks like UNIX. LINUX is not officially UNIX simply because it was not written by the same programmers as was the original UNIX system. However, LINUX runs UNIX programs and shares the UNIX command set. LINUX is, for all general intents and purposes, a full-featured UNIX-type operating system.
Where did LINUX come from?
UNIX is one of the most popular operating systems worldwide because of its large support base and distribution. It was originally developed at AT&T as a multitasking system for minicomputers and mainframes in the 1970’s, but has since grown to become one of the most widely used operating systems anywhere, despite its sometimes confusing interface and lack of central standardization. Many hackers feel that UNIX is the right thing – the one true operating system . Hence, the development of LINUX by an expanding group of UNIX hackers who want to get their hands dirty with their own system. Versions of UNIX exist for many systems, from personal computers to supercomputers like the Cray Y-MP. Most versions of UNIX for personal computers are expensive and cumbersome. A one-machine version of UNIX System V for the 386 costs about $1500. LINUX is a free version of a UNIX-type system, developed primarily by Linus Torvalds at the University of Helsinki in Finland, with the help of many UNIX programmers and wizards across the Internet. Anyone with enough know-how and gumption can develop and change the system. The LINUX kernel uses no code from AT&T or any other proprietary source, and much of the software available for LINUX was developed by the GNU project of the Free Software Foundation in Cambridge, Massachusetts, U.S.A. However, programmers from all over the world have contributed to the growing pool of LINUX software. LINUX was originally developed as a hobby project by Linus Torvalds. It was inspired by MINIX, a small UNIX system developed by Andy Tanenbaum. The first discussions about LINUX were on the Usenet newsgroup, comp.os.minix . These discussions were concerned mostly with the development of a small, academic UNIX system for MINIX users who wanted more. The very early development of LINUX mostly dealt with the task-switching features of the 80386 protected-mode interface, all written in assembly code.
When was LINUX introduced
The very first version of LINUX (version 0.01) was made available by Linus Torvalds around late August of 1991. It was not pretty, it had no floppy driver, and it could not do much of anything. I am not sure if anybody ever compiled that version. No announcement was ever made for LINUX version 0.01. The version 0.01 sources were not even executable. They contained only the bare rudiments of the kernel source and assumed that you had access to a Minix machine to compile and experiment with them. On October 5, 1991, Linus announced the first official version of LINUX, which was version 0.02. At that point, Linus was able to run bash (the GNU Bourne Again Shell) and gcc (the GNU C compiler), but not much else. Again, this was intended as a hacker’s system. The primary focus was kernel development – user support, documentation, and distribution had not yet been addressed. Today, the LINUX community still seems to treat these issues as secondary to real programming – kernel development. After version 0.03, Linus bumped up the version number to 0.10, as more people started to work on the system. After several further revisions, Linus increased the version number to 0.95 in March 1992, to reflect his expectation that the system was ready for an official release soon. (Generally, software is not assigned the version number 1.0 until it is theoretically complete or bug-free.). Almost a year and a half later, in late December of 1993, the LINUX kernel was still at version 0.99. As of May 1999, Red Hat LINUX has officially released a version 6.0 of the LINUX kernel. I have not tried it yet, because it will be available starting on the 26th May 1999 and this paper is due on the 20th May 1999. Anyway, back to LINUX! Most of the major, free UNIX software packages have been ported to LINUX, and commercial software is available. More hardware is supported than in the original kernel versions. Many people have executed benchmarks on 80486 LINUX systems and found them comparable with mid-range workstations from Sun Microsystems and Digital Equipment Corporation. Who would have ever guessed that this little UNIX clone would have grown up to take on the entire world of personal computing?
Types of LINUX
The question always arises at to which LINUX is the “real” one, or where to get the “official” version of LINUX. Unfortunately, this question really has no answer. The only part of LINUX, which is officially , LINUX is the core of LINUX, otherwise known as the kernel. All programs, appearances, configurations, startup code, and installation programs are provided as parts of what are called LINUX “distributions”. A distribution is simply a collection of programs and utilities, which turn the LINUX core (or kernel) into a fully functional UNIX-type system. Unfortunately, each distribution is slightly different and can greatly effect the user’s initial impression of LINUX. Different distributions will present the user with different initial configurations for LINUX. There are a number of LINUX distributions out there, both on the Web and on CD-ROM. Some are more businesslike; others are more playful or wild. Below is a brief summary regarding some of the major distributions.
? Red Hat LINUX – UNIX for Windows users. This is the easiest transition into the UNIX world you can possibly hope for if you’re a Windows user. Red Hat attempts to provide exceptional functionality and stability while keeping the system relatively easy to use and graphically oriented. Make no mistake, you will still have to learn about UNIX and the command line, but you will at least have something up and running by the time you are ready to hit the books.
? Slackware LINUX – UNIX for UNIX hackers. Slackware, released several times per year, loves to provide cutting edge and beta applications and system code, and really gives that “get your hands dirty” feel. Don’t be confused by its insider attitude, however. Slackware is very complete and can provide a serious platform for beginners and migrating Windows network users. Slackware simply requires a little more elbow grease and study to get going. Once going, Slackware “feels” much more like UNIX than does Red Hat.
? Caldera OpenLINUX – UNIX for business guys. If you’re afraid that your boss won’t like seeing LINUX on your desktop, and you have decided against Red Hat for one reason or another, Caldera’s OpenLINUX is the next logical choice. OpenLINUX is built by Caldera from the ground up for the business community; OpenLINUX often includes an office suite and telephone support. OpenLINUX also comes in several versions, from a small version for desktops to a big, ugly version for network servers.
? Debian GNU/LINUX – UNIX for purists. Debian GNU/LINUX is a sort of spiritual operating system, and both its website and its distribution remind me of those of the more “official” UNIXes like the *BSD projects. If you are interested in LINUX, but can’t loose the hang-up about LINUX not being the true and official UNIX, maybe you’ll feel a little more at ease using Debian GNU/LINUX.
Performance
Many benchmarks have been conducted by independent organizations, pitting LINUX against Windows NT and against the various flavors of UNIX. Apart from one study that is discussed later in this section, it appears that LINUX quite consistently beats NT not only on single-processor machines, but also on multi-processor machines on which NT is expected to scale better on account of its multi-threaded architecture. LINUX seems able to deliver good performance even with “heavyweight” processes instead of the “lightweight” threads that NT uses. Process forking in LINUX is particularly efficient, almost obviating the need for threads. LINUX also narrowly beats Solaris on its home ground, SPARC hardware, albeit only single-processor SPARC machines. UNIX systems, LINUX included, treat graphics as a user-level application that can be optionally run. Reasonably, sophisticated graphical interfaces exist for LINUX, but these are not tightly integrated with the operating system kernel. They can be “switched off” when not required. On servers, graphics capability is an unnecessary overhead most of the time. Typically, on UNIX servers, LINUX included, the graphical interface is invoked only when the system is being administrated, and turned off at all other times, delivering a significant performance boost to the system, because graphics is a very resource-intensive capability. The Windows design, by contrast, suffers from an overly tight integration of the graphics subsystem with the kernel (unsurprising in view of its desktop roots), and this design model will forever reduce performance in its role as a server operating system. Perhaps LINUX will lose its slim performance advantage against Solaris when it acquires more high-end features and grows in size. Time will tell. However, the constant fine-tuning of the kernel by a worldwide group of expert systems programmers could continue to give LINUX a performance lead even in future. It will be an interesting battle to watch. In April this year, a benchmark conducted by a company called Mindcraft reported that Windows NT with Microsoft’s IIS (Internet Information Server) performed 2.5 to 3.7 times faster than LINUX as a Windows fileserver (running Samba) and as a webserver (running Apache). This is somewhat surprising, because it is contrary to what several independent testers have found in the past, including Sm@rt Reseller On-line. Subsequent information on the benchmark found that the NT machine used was highly tuned and optimized for the tested load, while the LINUX machine was not, a fact later admitted by Microsoft. It was also discovered that the benchmark was sponsored by Microsoft, and was not as “independent” as it was made out to be. (Microsoft still sports these figures, though). These facts therefore put the results under a cloud. For now, rather than debate the legitimacy of the Mindcraft benchmark, it is best that you design and conduct one yourself, tailoring it to your situation. After all, not everyone runs servers that are as high-end as that used in the benchmark. Microsoft admitted after internal testing that on the same hardware, Netscape Navigator on LINUX was 30-40% faster than Internet Explorer on Windows NT. “Benchmarking”, of course, ranks with lies, damned lies and statistics, but from a variety of sources, the impression one gets is that LINUX is one of the leanest and fastest operating systems available. With the new kernel (version 2.2), it has reportedly even drawn level with the ultrafast FreeBSD. Nevertheless, the LINUX vendors need to submit formal SPEC or TPC benchmark figures; otherwise, this sort of controversy could keep arising. Incidentally, the TPC benchmarks have a price/performance parameter, and LINUX should do very well on that!
Usability
Users accustomed to the friendly graphical interfaces of Windows and the Mac would reasonably balk at having to type commands in an “arcane syntax”. Nevertheless, things are changing fast. There are two graphical desktop environments for LINUX. KDE (’K’ Desktop Environment) is the slightly more mature one, and the main criticism heard about it these days is that it’s too “clean” and “corporate”. Gnome is a more fun interface that allows users to customize it ad infinitum. Neither interface is yet as polished and complete as the Windows or Mac desktops. However, they have developed to their current state in an amazingly short time (See screenshots located at the back of this document). Critics of LINUX must remember that the earliest versions of Windows were eminently forgettable, and it was only with version 3.1, appearing sometime in 1993, that Windows became usable. It took more than another 2 years for Windows to achieve its current levels of usability in the form of Windows 98. Given the current status of both LINUX desktop projects and their tremendous momentum, it seems reasonable to expect that this argument about LINUX not having a friendly graphical interface will wither away by the end of 1999. Besides, to turn the user-friendliness argument around, a command-line is an excellent alternative to a GUI in many situations. Even with an extremely friendly GUI, a user may find certain operations difficult to express with a graphical metaphor, for instance, “pimping” I meant piping the output of one program to the input of another one. The powerful commands that can be chained together make the LINUX command line a very productive environment. Scripting is another very powerful UNIX mainstay, an area where predominantly GUI-based systems like Windows and the Mac are notoriously weak. The DOS batch files of Windows are pitifully inadequate compared to the basic UNIX shell script, while Applescript comes somewhat closer. Neither can match the breadth and power of LINUX scripting languages like Perl, Python, Tcl and Guile. That may explain why these languages are now being ported to Windows. It remains to be seen whether Windows 2000, with its promised Active Scripting using Visual Basic, brings Windows up to this level. Ironically, with a graphical environment very similar to Windows or the Mac, LINUX’s command-line and scripting interface will perhaps soon emerge as a major selling point for advanced users. Windows and Macintosh treat all users alike, irrespective of skill level, and do not allow users to acquire more control over their machines with increasing experience. UNIX and LINUX systems, on the other hand, “scale” extremely well with experience, rewarding advanced users with dramatically greater productivity. Therefore, the argument that LINUX has no friendly interface is now clearly untrue. The challenge for LINUX now is to develop graphical metaphors for its powerful command-line constructs as well. Piping and redirection through drag-and-drop, visual scripting, graphical representation of the powerful UNIX “file” abstraction, and other innovations can push the LINUX interface beyond the reach of Windows and Macintosh, because they lack the underlying architecture to support such visual representations.
Features
LINUX supports features found in other implementations of UNIX, and many which are not found elsewhere. LINUX is a complete multitasking, multi-user operating system, as are all other versions of UNIX. This means that many users can log into and run programs on the same machine simultaneously. The LINUX system is mostly compatible with several UNIX standards (like if UNIX has standards) at the source level, including IEEE POSIX.1, UNIX System V, and Berkeley System Distribution UNIX. LINUX was developed with source code portability in mind, and it is easy to find commonly used features that are shared by more than one platform. Much of the free UNIX software available on the Internet and elsewhere compiles under LINUX right out of the box . In addition, all of the source code for the LINUX system, including the kernel, device drivers, libraries, user programs, and development tools, is freely distributable. Other specific internal features of LINUX include POSIX job control (used by shells like csh and bash), pseudoterminals (pty devices), and support for dynamically loadable national or customized keyboard drivers. LINUX supports virtual consoles that let you switch between login sessions on the same system console. Users of the screen program will find the LINUX virtual console implementation familiar. The kernel can emulate 387-FPU instructions, and systems without a math coprocessor can run programs that require floating-point math capability. LINUX supports various file systems for storing data, like the ext2 file system, which was developed specifically for LINUX. The XENIX and UNIX System V file systems are also supported, as well as the Microsoft MS-DOS and Windows 95 VFAT file systems on a hard drive or floppy. The ISO 9660 CD-ROM file system is also supported.