LINUX provides a complete implementation of TCP/IP networking software. This includes device drivers for many popular Ethernet cards, SLIP (Serial Line Internet Protocol) and PPP (Point-to-Point Protocol), which provide access to a TCP/IP network via a serial connection, PLIP (Parallel Line Internet Protocol), and NFS (Network File System). The complete range of TCP/IP clients and services is also supported, which includes FTP, telnet, NNTP, and SMTP. The LINUX kernel is developed to use protected-mode features of Intel 80386 and better processors. In particular, LINUX uses the protected-mode, descriptor based, memory-management paradigm, and other advanced features. Anyone familiar with 80386 protected-mode programming knows that this chip was designed for multitasking systems like UNIX. LINUX exploits this functionality. The kernel supports demand-paged, loaded executables. Only those segments of a program, which are actually in use, are read into memory from disk. In addition, copy-on-write pages are shared among executables. If several instances of a program are running at once, they share physical memory, which reduces overall usage. In order to increase the amount of available memory, LINUX also implements disk paging. Up to one gigabyte of swap space may be allocated on disk (up to eight partitions of 128 megabytes each). When the system requires more physical memory, it swaps inactive pages to disk, letting you run larger applications and support more users. However, swapping data to disk is no substitute for physical RAM, which is much faster. The LINUX kernel also implements a unified memory pool for user programs and disk cache. All free memory is used by the cache, which is reduced when running large programs. Executables use dynamically linked, shared libraries: code from a single library on disk. This is not unlike the SunOS shared library mechanism. Executable files occupy less disk space, especially those, which use many library functions. There are also statically linked libraries for object debugging and maintaining complete binary files when shared libraries are not installed. The libraries are dynamically linked at run time, and the programmer can use his or her own routines in place of the standard library routines. To facilitate debugging, the kernel generates core dumps for post-mortem analysis. A core dump and an executable linked with debugging support allows a developer to determine what caused a program to crash.
Cost
LINUX is a freeware or open source software and thus is free, which is to say that it can be obtained at no cost. Several different distributions of LINUX are available on the Internet for download. No password is required for access, and no registration is required after downloading. There are no “nag” screens begging you to pay for it. It is not crippled in any way, nor is it limited to any particular kind of use. You can use it at home, at school, in your business. You can install it as many times on as many computers as you like, and you can legally make copies of it and give them to friends and colleagues (or even sell copies if you wish). LINUX is also sold commercially on CD-ROM via Internet, mail order, and retail stores. Commercial distributions usually include multiple CD-ROMs, a printed installation manual and/or user’s guide, a bootable floppy disk to help with the installation, 30 days or more of technical support via email or other means, and sometimes extra commercial programs that are not available in the download edition. The cost is normally in the range of $30-$99. By comparison, a retail copy of Windows 98 costs about $189. Judging by the price difference, you might think that Windows 98 has something that LINUX lacks. The truth is just the opposite. Windows 98 has built-in networking software, a web browser, a basic text editor, and a couple of games. Did I leave anything out? LINUX comes with built-in networking software, 2 or more web browsers, half a dozen text editors, over 20 games, a World Wide Web server, an FTP server, an email server, programming environments and compilers allowing you to write programs in C, Pascal, PERL, Python, BASIC, Fortran, and probably other programming languages that even I have never heard of. Of course, that is just the short list.
System Requirements
One of the main issues when installing software is to meet or exceed the minimum hardware requirement. LINUX supports more hardware than some commercial implementations of UNIX. Below is a detailed summary of the supported hardware requirement.
Motherboard and CPU requirements – LINUX currently supports systems with the Intel 80386, 80486, or Pentium CPU, including all variations like the 80386SX, 80486SX, 80486DX, and 80486DX2. Non-Intel clones work with LINUX as well. LINUX has also been ported to the DEC Alpha and the Apple PowerMac. If you have an 80386 or 80486SX, you may also wish to use a math coprocessor, although one isn’t required. The LINUX kernel can perform FPU emulation if the machine doesn’t have a coprocessor. All standard FPU couplings are supported, including IIT, Cyrix FasMath, and Intel. Most common PC motherboards are based on the PCI bus but also offer ISA slots. This configuration is supported by LINUX, as are EISA and VESA-bus systems . IBM’s MicroChannel (MCA) bus, found on most IBM PS/2 systems, is significantly different, and support has been recently added.
Memory requirements – LINUX requires very little memory, compared to other advanced operating systems. You should have 4 megabytes of RAM at the very least, and 16 megabytes is strongly recommended. The more memory you have, the faster the system will run. Some distributions require more RAM for installation. LINUX supports the full 32-bit address range of the processor. In other words, it uses all of your RAM automatically
Hard drive controller requirements – It is possible to run LINUX from a floppy diskette, or, for some distributions, a live file system on CD-ROM, but for good performance you need hard disk space. LINUX can co-exist with other operating systems – it only needs one or more disk partitions. LINUX supports all IDE and EIDE controllers as well as older MFM and RLL controllers. Most, but not all, ESDI controllers are supported. LINUX also supports a number of popular SCSI drive controllers. This includes most Adaptec and Buslogic cards as well as cards based on the NCR chip sets.
Hard drive space requirements – Of course, to install LINUX, you need to have some amount of free space on your hard drive. LINUX will support more than one hard drive on the same machine; you can allocate space for LINUX across multiple drives if necessary. You could run a system in 20 megabytes of disk space. However, for expansion and larger packages like X, you need more space. Realistic space requirements range from 200 megabytes to one gigabyte or more.
Monitor and video adaptor requirements – LINUX supports standard Hercules, CGA, EGA, VGA, IBM monochrome, Super VGA, and many accelerated video cards, and monitors for the default, text-based interface. In general, if the video card and monitor work under an operating system like MS-DOS, the combination should work fine under LINUX.
Miscellaneous hardware – LINUX also support devices like a CD-ROM drive, mouse, and sound card.
Mice and other pointing devices – Typically, a mouse is used only in graphical environments like X. However, several LINUX applications that are not associated with a graphical environment also use mice. LINUX supports standard serial mice like Logitech, MM series, Mouseman, Microsoft (2-button), and Mouse Systems (3-button). LINUX also supports Microsoft, Logitech, and ATIXL bus mice, and the PS/2 mouse interface. Pointing devices that emulate mice, like trackballs and touchpads, should work also.
CD-ROM drives – LINUX supports many common CD-ROM drives attach to standard IDE controllers. Another common interface for CD-ROM is SCSI. SCSI support includes multiple logical units per devices. Additionally, a few proprietary interfaces, like the NEC CDR-74, Sony CDU-541 and CDU-31a, Texel DM-3024, and Mitsumi are supported. LINUX supports the standard ISO 9660 file system for CD-ROMs, and the High Sierra file system extensions.
Tape drives – Any SCSI tape drive, including quarter inch, DAT, and 8MM are supported, if the SCSI controller is supported. Devices that connect to the floppy controller like floppy tape drives are supported as well, as are some other interfaces, like QIC-02.
Printers – LINUX supports the complete range of parallel printers. If MS-DOS or some other operating system can access your printer from the parallel port, LINUX should be able to access it, too. LINUX printer software includes the UNIX standard lp and lpr software. This software allows you to print remotely via a network. LINUX also includes software that allows most printers to handle PostScript files.
Modems – As with printer support, LINUX supports the full range of serial modems, both internal and external. A great deal of telecommunications software is available for LINUX, including Kermit, pcomm, minicom, and seyon. If your modem is accessible from another operating system on the same machine, you should be able to access it from LINUX with no difficulty.
Ethernet cards – Many popular Ethernet cards and LAN adaptors are supported by LINUX. LINUX also supports some FDDI, frame relay, and token ring cards, and all Arcnet cards. A list of supported network cards is generally included in the kernel source of the distribution.
Installation
Each Linux distrribution has its own setup utility, every one vastly different from all the others. This makes it very difficult if not impossible to write a general step by step Linux installation manual. The closest thing in existence is the Linux Installation and Getting Started Guide , which should be included in HTML format with every Linux distribution, and is available online thanks to the Linux Documentation Project . This book contains a fairly good comparison of the major distributions and an outline of the installation process for each one. It also covers the basic technical concepts you need to understand during installation, and covers some issues of usability following the install.
X Windows
The X Window System, or simply X, is a standard graphical user interface (GUI) for UNIX machines and is a powerful environment, which supports many applications. Using the X Window System, you can have multiple terminal windows on the screen at once, each having a different login session. A pointing device like a mouse is often used with X, although it is not required. Many X-specific applications have been written, including games, graphics and programming utilities, and documentation tools. LINUX and X make your system a bona fide workstation. With TCP/IP networking, your LINUX machine can display X applications running on other machines. The X Window System was originally developed at the Massachusetts Institute of Technology and is freely distributable. Many commercial vendors have distributed proprietary enhancements to the original X Window System as well. The version of X for LINUX is XFree86, a port of X11R6, which is freely distributable. XFree86 supports a wide range of video hardware, including VGA, Super VGA, and accelerated video adapters. XFree86 is a complete distribution of the X Windows System software, and contains the X server itself, many applications and utilities, programming libraries, and documents. Standard X applications include xterm, a terminal emulator used for most text-based applications within a window, xdm, which handles logins, xclock, a simple clock display, xman, a X-based manual page reader, and xmore. There are manu other application written which includes spreadsheets, word processors, graphics programs, and web browsers like the Netscape Navigator. Theoretically, any application written for X should compile cleanly under LINUX. The interface of the X Window System is controlled largely by the window manager. This user-friendly program is in charge of the placement of windows, the user interface for resizing and moving them, changing windows to icons, and the appearance of window frames, among other tasks. XFree86 includes twm, the classic MIT window manager, and advanced window managers like the Open Look Virtual Window Manager (olvwm) are available. Popular among LINUX users is fvwm–a small window manager that requires less than half the memory of twm. It provides a 3-dimensional appearance for windows and a virtual desktop. The user moves the mouse to the edge of the screen, and the desktop shifts as though the display was much larger than it really is. fvwm is greatly customizable and allows access to functions from the keyboard as well as mouse. Many LINUX distributions use fvwm as the standard window manager. A version of fvwm called fvwm95-2 offers Microsoft Windows 95-like look and feel. The XFree86 distribution includes programming libraries for programmers who wish to develop X applications. Widget sets like Athena, Open Look, and Xaw3D are supported. All of the standard fonts, bitmaps, manual pages, and documentation are included. PEX (a programming interface for 3-dimensional graphics) is also supported. Many X application programmers use the proprietary Motif widget set for development. Several vendors sell single and multiple user licenses for binary versions of Motif. Because Motif itself is relatively expensive, not many LINUX users own it. However, binaries statically linked with Motif routines can be freely distributed.
Networking
LINUX supports two primary UNIX networking protocols: TCP/IP and UUCP. TCP/IP (Transmission Control Protocol/Internet Protocol) is the networking paradigm which allows systems all over the world to communicate on a single network, the Internet. With LINUX, TCP/IP, and a connection to the Internet, you can communicate with users and machines via electronic mail, Usenet news, and FTP file transfer. Most TCP/IP networks use Ethernet as the physical network transport. LINUX supports many popular Ethernet cards and interfaces for personal computers, including pocket and PCMCIA Ethernet adapters. However, because not everyone has an Ethernet connection at home, LINUX also supports SLIP (Serial Line Internet Protocol) and PPP (Point-to-Point Protocol), which provide Internet access via modem. Many businesses and universities provide SLIP and PPP servers. In fact, if your LINUX system has an Ethernet connection to the Internet and a modem, your system can become a SLIP or PPP server for other hosts. NFS (Network File System) lets your system seamlessly share file systems with other machines on the network. FTP (File Transfer Protocol) lets you transfer files with other machines. sendmail sends and receives electronic mail via the SMTP protocol; C-News and INN are NNTP based new systems; and telnet, rlogin, and rsh let you log in and execute commands on other machines on the network. finger lets you get information about other Internet users. LINUX also supports Microsoft Windows connectivity via Samba and Macintosh connectivity with AppleTalk and LocalTalk. Support for Novell’s IPX protocol is also included. The full range of mail and newsreaders is available for LINUX, including elm, pine, rn, nn, and tin. Whatever your preference, you can configure a LINUX system to send and receive electronic mail and news from all over the world. The system provides a standard UNIX socket-programming interface. Virtually any program that uses TCP/IP can be ported to LINUX. The LINUX X server also supports TCP/IP, and applications running on other systems may use the display of your local system. UUCP (UNIX-to-UNIX Copy) is an older mechanism to transfer files, electronic mail, and electronic news between UNIX machines. Historically, UUCP machines are connected over telephone lines via modem, but UUCP is able to transfer data over a TCP/IP network as well. If you do not have access to a TCP/IP network or a SLIP or PPP server, you can configure your system to send and receive files and electronic mail using UUCP.
System Administration
LINUX differentiates between different users. What they can do to each other and the system is regulated. File permissions are arranged so that normal users cannot delete or modify files in directories like /bin and /usr/bin. Most users protect their own files with the appropriate permissions so that other users cannot access or modify them. Each user is given an account that includes a user name and home directory. In addition, there are special, system defined accounts which have special privileges. The most important of these is the root account, which is used by the system administrator. By convention, the system administrator is the user, root. There are no restrictions on root. He or she can read, modify, or delete any file on the system, change permissions and owner-ships on any file, and run special programs like those which partition a hard drive or create file systems. The basic idea is that a person who cares for the system logs in as root to perform tasks that cannot be executed as a normal user. Because root can do anything, it is easy to make mistakes that have catastrophic consequences. If a normal user tries inadvertently to delete all of the files in /etc, the system will not permit him or her to do so. However, if root tries to do the same thing, the system does not complain at all. It is very easy to trash a LINUX system when using root. Picture the root account as a special, magic hat that gives you lots of power, with which you can, by waving your hands, destroy entire cities. It is a good idea to be a bit careful about what you do with your hands. Because it is easy to wave your hands in a destructive manner, it is not a good idea to wear the magic hat when it is not needed, despite the wonderful feeling. The best way to prevent accidents is to sit on your hands before you press Enter for any command that is non-reversible.