|
Linux began life as a small student project at the University of Helsinki in Finland. Linus Torvalds, wanted a small, UNIX-like operating system, and so he set out to write one. He received help from volunteers all around the globe, who collaborated via bulletin boards and Email, via the Internet to create the Linux operating system.
This worldwide group of volunteers, ended up creating a rather remarkable operating system that works very well, is very stable, and rivals offerings from giants like Microsoft, Apple, and Sun.
Linux was developed as a freely distributable version of UNIX. UNIX is the most widely used operating system in the world and has long been the standard for high-performance workstations and larger servers. UNIX, first developed in 1965, has a strong programmer oriented, user group, that supports the operating system.
Because UNIX is a commercial product, though, it must be purchased for each platform it will run on. Licensing fees for UNIX versions for PC machines range from a few hundred to several thousand dollars. In an attempt to make UNIX widely available for no cost to those who want to experiment with it, a number of public domain UNIX systems have been developed over the years.
One of the early UNIX workalikes was Minix, written by Andy Tanenbaum. Although not full featured, Minix provided a small operating system that could be used on PC’s. To expand on Minix, a number of users started developing an enhanced and more fully featured operating system that would take advantage of the 80386 CPU’s architecture.
One of the primary developers of this system, which became known as Linux, was Linus Torvalds of the University of Helsinki who released an early version of Linux in 1991. A first commercial almost bug-free release was unleashed to the programming community in March 1992.
Soon, many programmers were working on Linux, and as the challenge and excitement of producing a growing UNIX workalike caught on; Linux grew at a remarkable rate. It continues to grow as programmers adapt features and programs that were originally written as commercial UNIX products to Linux.
New versions of Linux or its utilities are appearing at an astounding rate. It is not unusual to see a new release every week. Even as the number of developers working on Linux grew, the entire UNIX workalike operating system was eventually completed, if not perfected, and now includes all the tools you will find in any commercial UNIX product.
To avoid any charges for Linux whatsoever, the Linux developers do not use any code from other UNIX systems. There are no licensing fees involved with the Linux operating system and part of its mandate is to be made freely available. Some companies have undertaken the task of assembling and testing versions of Linux, which they package on a CD-ROM for a (usually) minimal price. Linux offers the following features
Multi-tasking
Linux natively runs more than one task (program) at a time in a UNIX-like fashion. It also supports preemptive multitasking, where priorities can be set for different processes.
Multi-user
Many users can be networked to a single Linux server. Linux is the least expensive, and perhaps best-featured, multi-user operating system on the planet today.
User-friendly G.U.I
The X Window System interface and a slew of great GUI based tools make Linux easy to use. Today, Linux has millions of users, and that number keeps growing every day. A major reason for Linux adoption is cost. Linux itself is free of charge.
There are companies who package Linux as a distribution and charge for it. Having said that many don’t charge at all or have a very nominal charge for at least one of their Linux distributions. These distributions, such as Red Hat Linux, SuSE, Debian, Mandrake and so on vary as to their installation processes and accompanying tools.
What Is Linux?
Linux, is a freely distributed multitasking, multi user, operating system that behaves like UNIX. Linux was designed specifically for the PC (Intel CPU) platform and takes advantage of its architecture to give a performance similar to high-end UNIX workstations. To begin, with a quick look at the Linux operating system as a package i.e. what is available when Linux is installed on any computer.
Linux’s Kernel
Linux is a complete multitasking, multi user, operating system that behaves like UNIX in terms of kernel behavior and peripheral support. Linux has all the features of UNIX, plus several extensions that add an interesting versatility to Linux. All the source code for Linux and its utilities are freely available.
The Linux kernel was originally developed for the Intel 80386 CPU’s protected mode. The 80386 was originally designed with multitasking in mind, and Linux makes good use of the advanced features built into the CPU’s instruction set. Memory management is especially strong with the 80386. A floating-point emulation routine, built into the kernel allows Linux to function on machines that do not have math coprocessors.
Linux allows shared executables, so that if more than one copy of a particular application is loaded (either by one user running several identical tasks or several users running the same task), all the tasks can share the same memory. This process, called copy-on-write pages, makes for efficient use of RAM.
The Linux kernel also supports demand paging, which means that only the sections of a program that are necessary are read into RAM. To further optimize memory usage, Linux uses a unified memory pool. This enables all free memory on the system to be used as disk cache, effectively speeding access to frequently used programs and data. As memory usage increases, the amount of cache is automatically adjusted.
To support large memory requirements when only small amounts of physical RAM are available, Linux supports swap space. Swap space allows pages of memory to be written to a reserved area of a hard disk and is treated as an extension of physical memory.
By moving pages back and forth between the swap space and RAM, Linux can effectively behave as if it had much more physical RAM than it does, this is at the cost speed due to the hard disk’s slow access when compared to access to RAM.
Linux uses dynamically shared libraries extensively. Dynamically shared libraries use a common library section for many different applications, effectively reducing the size of each application. Linux does allow full library linking (called statically linked libraries) for portability to machines that may not have the dynamic libraries.
To make Linux widely acceptable, it supports a number of different file systems, including those compatible with DOS and OS/2. Linux’s own file system, called ext2fs, is designed to make optimal use of hard disk space.
Linux is ideally suited for application development and experimentation with new languages. As part of the distribution software there are several different compilers provided, including C, C++, Fortran, Pascal, LISP, Ada, BASIC, and Smalltalk. Many of the Linux compilers, tools, debuggers, and editors are from the Free Software Foundation’s GNU project.
GNU Software
GNU (a recursive acronym for Gnu’s Not UNIX) was developed by the Free Software Foundation (FSF) to provide royalty-free software to programmers and developers. Since it was created, many programmer packages and toolkits have been developed and assigned to FSF for distribution. Most of the GNU software mirrors commercially available software (which usually has a hefty licensing fee attached), and in many cases is an improvement.
Linux includes many GNU utilities, including the languages mentioned earlier, debuggers, compiler tools, and more. Text processing, print utilities, and other GNU tools are also included with most Linux distributions.
X Windows
X Window is a graphical user interface G.U.I. designed at MIT to provide portable GUI applications across different platforms. The version of X supplied with Linux is called XFree86, and is a direct port of the standard X11R5 system to 80386-based architectures. XFree86 has been enhanced to provide compatibility with some other GUIs, including Open Look.
XFree86 supports several different video cards at a number of resolutions, offering a high resolution graphical user interface.
Any X Window application can be recompiled to run properly under Linux, and a number of games, utilities, and add-on applications have been developed and supplied as part of the X Window system.
The XFree86 system also includes application development libraries, tools, and utilities. This allows programmers to write applications specifically for X Window without having to invest in expensive software development kits or libraries.
M.S. DOS and M.S. Windows Interface
Because Linux is designed for PC machines, it made sense to provide some compatibility with Microsoft MS-DOS as part of the operating system. Linux provides a DOS emulator as part of the distribution system, which allows many DOS applications to be executed directly from within Linux. Do not expect complete portability of DOS applications, though, as some are written to access peripherals or disk drives in a manner that Linux cannot cope with. The WINE project has developed a Microsoft Windows emulator for Linux. This enables Windows applications to be run from within Linux, too. A better approach, called WABI, is available at additional cost. WABI lets Linux run Windows applications under X Windows.
Linux allows seamless transfer of files between M.S. DOS / M.S. Windows (Fat 32 and of late NTFS as well - using the Linux 2.6 kernel) and the Linux file system, accessing the DOS, Windows, partitions on a hard disk directly, if so configured. This makes it easy to move files and applications back and forth between the two operating systems.
TCP/IP
TCP/IP (Transmission Control Protocol/Internet Protocol) is the primary networking system used by Linux. TCP/IP is a full family of protocols that were developed for the Internet, and must be used when connecting to the Internet.
The Linux TCP/IP implementation provides all the networking software and drivers usually associated with a commercial TCP/IP package. With it the Linux computer can be connected to a local area network or to the Internet as required.What Can BE Done With LinuxLearning UNIX Through LinuxEven though Linux is not called UNIX, it is a complete UNIX implementation.
It conforms to many of the same standards as off-the-shelf, genuine, dyed-in-the-wool UNIX (in fact, better than many commercial UNIX versions), and it would be very difficult for even a veteran UNIX user to know whether they were working with Linux or UNIX without using tools that specify the identity of the system. Why isn’t Linux called UNIX? Simple - Copyright reasons.
Because Linux is UNIX in all but name, it’s a great way to learn UNIX. Not only can Linux run on most PCs that are sitting around your basement (try that with most commercial UNIX versions today; most of them need a Pentium PII or better), it is a fraction of the cost of a full-blown UNIX. Anything you learn with Linux is directly transferable to a UNIX platform.
Applications you write under Linux can usually be recompiled under UNIX and work perfectly.
Running A Business
Business can be run on a system using Linux. In the early days of Linux development, this was considered risky because the operating system just wasn’t stable enough. Companies can’t afford a server that crashes repeatedly. Since then, Linux has matured, become more robust, and offers all the features except the very high security classifications (generally required by the armed forces) that commercial UNIX offers.
It’s not uncommon for a Linux system to go years without requiring a shutdown or a lockup that is something that very few other operating systems can claim.
Internet Servers
Linux is ideally suited for running a Web server, FTP server, or email service at home, office, or organization. Most of this is because of its UNIX heritage.
Is Linux better than Windows NT, UNIX, or Macintosh for use as an Internet server? Perhaps better is not the right word. It is certainly not any worse and costs less than all the others. Plus, Linux has a ton of public domain software available to help support Internet services, and there’s lots of experience using Linux for small ISPs that can be draw on.
What Is Needed To Run Linux
The Linux operating system is attractive to many users because its hardware requirements are not very demanding, unless you want to get into application development and extensive GUI use. Having said this, the better and more robust the hardware Linux is run on the better it runs. Using the latest, Intel PVI processors, with 512 MB RAM and 80GB hard disk together with hyper threaded motherboard architecture will create a really high end, high performance, desktop or server.
Motherboard Requirements
The hardware required to set up a Linux system mirrors a typical PC installation. It starts with the motherboard, which should be an Intel PII or PVI (or one of the Intel workalikes such as AMD).
Linux can make use of a floating point unit if the processor has one built in. If an FPU is not installed, Linux provides a memory-based emulator that has reasonable performance. Either Intel or workalike add-on FPUs are supported.Linux supports ISA (Industry Standard Architecture), EISA (Extended Industry Standard Architecture), and PCI (Peripheral Component Interconnet) motherboards, but not MCA (IBM’s MicroChannel Architecture). VESA Local Bus motherboards, which allow peripheral cards direct access to the motherboard components, are also supported.
RAM requirements vary depending on the size of the Linux system you want to run. With the cost of RAM at an all time low these days try and put in the maximum possible. A startup system with about 256MB RAM is really excellent, having said that 128MB RAM will also work just fine.
Linux uses the entire available RAM on the computer. It does not impose any architectural limitations on memory as DOS and some other operating systems do. Any available memory is completely used.
To extend the amount of physical RAM on a system, a Linux swap partition ion the hard disk s recommended. The swap space is used as a slower extension of actual memory, where data can be exchanged with physical RAM. Even with RAM-heavy systems, a swap space should be created. The size of the swap space depends on the amount of RAM on the system, the number of users, and typical usage. Having said that, a good rule of thumb to follow is swap space should be set to double the total RAM on the mother motherboard.
Hard Disks
Linux is designed primarily for hard disk use and supports all the common hard disk controller systems including IDE (Integrated Drive Electronics), EIDE (Extended Integrated Drive Electronics), ESDI (Enhanced Small Device Interface), RLL (Run Length Limited), and SCSI (Small Computer System Interface). Linux supports the older 8-bit original PC controllers, although most of today’s controllers are 16-bit AT or PCI designs.
Linux is not choosy about the manufacturer and type of hard disk. This applies to all but SCSI drives, which require special handling. However, Linux is still restricted by older PC BIOS versions, which impose limitations on the number of sectors, heads, and cylinders. There is an effective 1,024KB size limit on drives with these older BIOS chips, and even some smaller drives can’t be handled properly by Linux or DOS because of BIOS problems. Some device drivers now make these drives accessible to DOS and Linux but its necessary to root around to find the correct driver.
Linux supports SCSI devices for most standard devices, but there are many different SCSI controllers and protocols on the market and not all work well with Linux. Linux does support the most common SCSI controllers, though. Some other controllers are supported with enhanced BIOS chips on the PC motherboard.
The size of hard disk space required by Linux depends on which parts of the operating system are installed. A minimum effective system should be considered as 10GB, which gives enough room for a full Linux install including X-Windows.Because hard disks are now inexpensive, obtaining large-capacity drives is relatively easy. Linux can share a disk with up to three other operating systems (and even more with a few tricks), so if you plan to load DOS, Windows 95, and Linux, for example, allocate enough space for each operating system when loaded.
Video Graphics System
Linux can use almost any video card that works without special drivers under DOS and Windows. This includes CGA, EGA, VGA, and Super VGA, as well as Hercules video cards. Some enhanced resolution cards are also supported under Linux, such as the Cirrus Logic, Diamond, ATI, and Trident cards. Since there are hundreds of video cards available, though, there are not enough drivers for all models and special video modes available. Because most cards support default VGA and SVGA modes, these can be used in almost every case.
X imposes its own video card requirements, which require bitmap capabilities of a high-resolution card. Although X can run on a VGA or SVGA system, for optimum results a high-resolution card is required. For this reason, make sure that a video driver is available for Linux before purchasing a new video card or that it is compatible with an older card that works with a driver already in existence.
Mouse
Linux doesn’t use the mouse for character-based sessions, but it is necessary for X. Linux handles practically every type of mouse and trackball that has DOS or Windows drivers. This includes the Microsoft, Logitech, Mouse Systems, and other vendors as well as compatibles. The bus and serial-port mouse are both supported. Some other pointing devices such as pens, as well as some joysticks used for cursor movement, are supported.
Tape Drives
Any SCSI tape drive that has a controller recognized by Linux is usable. There are other tape drives that use a proprietary interface, which requires a dedicated hardware card. In most cases, if the IRQ, DMA, and memory address can be configured into Linux, the tape drive will be accessible.
Some QIC and similar small-cartridge drives are becoming popular, driven either by the floppy controller card or the parallel port. Drivers for some of these tape drives are available, although not all are supported. Since many of these small QIC drives rely on proprietary compression schemes to boost data density on tapes, you may not be able to write more than the raw cartridge capacity to these drives.
CD-ROM
Because most CD-ROMs use either a SCSI or EIDE interface, you will need either a SCSI or EIDE controller card. Older CD-ROM drives used to be driven by a variety of cards, such as sound boards. For these, you need a suitable Linux driver. SCSI-based CD-ROM drives will be recognized and supported by Linux as long as the SCSI controller card is recognized.
Linux cannot read all formats of CD-ROMs. At present, it handles only ISO-9660 format file systems. Although ISO-9660 is widely used, not all CD-ROMs are written using it so do not be surprised if a DOS or Macintosh CD-ROM cannot be mounted properly.
Removable Media
Removable media support in Linux depends on the type of interface used by the media. Most SCSI-based systems (such as Iomega’s Jaz and SCSI ZIP drives, as well as SyQuest SCSI cartridges) can be used, although the changing of media while a file system is loaded is seldom properly supported. Iomega’s Bernoulli systems and LaserSafe Pro magneto-optical cartridge systems can all be used with Linux without special drivers, as long as the cartridges can be formatted. Some other magneto-optical and removable magnetic media systems will also function properly.
Some removable media requires special drivers, especially those, which do not use SCSI but rely on a dedicated hardware card.
There is very limited support in Linux for these devices. What is available is mostly provided by programmers who have written a driver for their own use and then made it public domain.
Printers
Practically all parallel and serial port printers are widely supported as nonintelligent devices. Some drivers are available for specific popular printers, such as the Hewlett-Packard LaserJets and DeskJets, although there are many printers that do not have dedicated drivers yet. If no driver exists for your printer, it will behave as an ASCII-only device.
Modems
Linux supports most serial asynchronous modems, as well as some synchronous devices. Support for ISDN modems is also available as well. As a general rule, if DOS and Windows can use the modem, so can Linux.
Linux supports all baud rates, including the newer compression schemes such as 56K systems with some driver installation.More than one modem is supported on the system. Indeed, you can hang as many modems off a Linux system as you have serial ports.
Terminals
Linux supports character-based terminals connected through a serial port or a multiport card. Most existing character-based terminals can be used, and any terminal for which you have the control codes can be added. Graphics terminals, in the UNIX sense, use simple ASCII graphic characters and are not X-capable.
X terminals are supported although not all X terminals work properly. X terminals typically need a high-speed connection to properly display graphics (either through a serial port or from a network port). A PC running X client software can function as an X terminal, as well.
Multiport Cards
Some UNIX-based multiport cards will work with Linux because drivers have been released either by the vendor or users. Before purchasing a multiport card, though, check the availability of drivers. Some multiport cards offer expansion parallel ports as well as serial ports, and these will also need drivers.
Some multiport cards can be connected through a SCSI controller card instead of built as a dedicated card that plugs into an expansion slot. Even SCSI-based expansion cards will need a driver for Linux to use them properly. Network-based multiport cards, including remote access servers, often work without special drivers because each port on the card behaves like a network device.
Network Cards
Since Linux is a UNIX system, its primary network protocol is TCP/IP. Other protocols can be used with Linux, but because TCP/IP is included with each Linux software package and is the default network protocol, it is the most widely used. TCP/IP’s role as the protocol of the Internet also makes it popular. TCP/IP is usually used over Ethernet networks, so most networking systems in Linux are designed around Ethernet.
Many Ethernet network interface cards (NICs, also called network adapters) are available. The most popular Ethernet cards from 3Com, D-Link, DAX, HP, and Intel all work cleanly with Linux. Many compatible Ethernet NICs from other vendors also function properly.
Copyrights
Just because Linux is distributed free, it doesn’t mean the software is not copyrighted. Linux is copyrighted under the GNU General Public License (GPL), which is known in the programming community as a copyleft instead of copyright because it allows the redistribution of Linux software to anyone who wants it, along with the complete source code. However, the original owner of the components retains the copyrights to the software.
There is no warranty of any kind with Linux. Even if a Linux distribution is purchased from a company and they are paid for maintenance, one cannot ever deal with the Linux programmers themselves.
If Linux destroys all your accounting data, for example, it’s tough luck. The user of Linux assumes the risk. However, it’s also true that Linux has proven itself very stable and there are no incidents of serious data damage that were not caused by user error!According to the GNU GPL, Linux can be sold, if someone is willing to pay for it. Any of the code can be modified and repackage it as required. However, no one can own the software and claim copyright, even if they have modified the source code. One condition imposed by the GNU GPL is that all source code must be provided with the system if it is sold for profit, so others can further modify and sell it, too.
There are no royalties of shareware fees paid to the authors and developers of Linux. For the most part, they provide the software to end users simply for the true love of programming and to share their code with other programmers who appreciate it.
Getting Help
Linux does not have a telephone support line. On the other hand, there are many thousands of Linux users who are willing to help everyone from neophyte to experienced programmer. All you have to know is where to look for help. There are two sources, written documentation and the user community.
The first exposure most people get to Linux is the Linux INFO-SHEET, a relatively short ASCII document that is available from Usenet, BBSs, and many user groups. The INFO-SHEET is a quick summary of Linux and is posted at regular intervals to the Linux newsgroups on Usenet.
The Linux Documentation Project was created to provide a complete set of public domain documentation for Linux. From a few rough installation notes a couple of years ago, the documentation has expanded to include almost a thousand pages, some very good, some not. The following primary documents are currently available or soon to be released: Linux Installation - how to install and configure Linux Linux User’s Guide - a guide for first-time users Linux System Administrator’s Guide - a guide to various aspects of system administration Linux Network Administration Guide - setting up and using networks Linux Kernel Hacker’s Guide - a guide to modifying the Linux kernel
As well as these primary documents, there are about a dozen smaller guides to specific or esoteric aspects of Linux. These smaller guides are called
How to documents. Together, they form a growing document suite that covers practically every aspect of Linux. Not all the documents are up-to-date, as changes to the operating system have occurred since they were first written.
Several different people have written the Linux documents, so the styles and layout are not consistent. However, these documents are available with most distributions of the software. A bound printed copy of the documentation set of the Linux Documentation Project is available, published by Linux Systems Labs.
A number of Frequently Asked Questions (FAQ) files are available through the Linux newsgroups on Usenet and as part of the distribution set. The FAQs tend to be quick problem solving items, designed to save you from thumbing through many pages of online documentation.
One FAQ called the META-FAQ is available and provides basic information about Linux, where to get it, and the documentation that goes with it. It, too, is regularly posted to newsgroups.
There is a file called the Linux Software Map (LSM) that contains a list of many of the components in Linux. Unfortunately, the LSM is incomplete and lacks considerable chunks of data. However, it is a good starting point if you want to see what is included with Linux. The LSM is updated at intervals and can be obtained from Usenet, from a Linux FTP site, or with many distribution sets.
Finally, there are the Linux mailing lists, available to anyone with email to the Internet (or forwarded by someone with access). Information on the Linux mailing lists (there are quite a few) is available from Usenet newsgroups or BBSs.
|