Linux

"Don't fear the penguins."


What IS Linux Anyway?

(the technical explination)


Linux is a completely free reimplementation of the POSIX spec, with SYSV and BSD extensions (which means it looks like Unix, but does not come from the same source code base), which is available in both source code and binary form. It is copyrighted by Linus B. Torvalds (torvalds@kruuna.helsinki.fi) and other contributors, and is freely redistributable under the terms of the GNU Public License.

Linux is not public domain, nor is it `shareware'. It is `free' software, commonly called freeware, and you may give copies away, but you must also give the source with it or make it available in the same way. If you redistribute any modifications, you are legally bound to distribute the source for those modifications. See the GNU Public License for details. A copy is included with the Linux source, or you can get a copy via ftp from prep.ai.mit.edu in /pub/gnu/COPYING

Linux is still free as of version 2.0.35, and will continue to be. Because of the nature of the GNU copyright which Linux is subject to, it would be illegal for it to be made not free. Note carefully: it is perfectly legal to charge money for distributing Linux, so long as you also distribute the source code. This is a generalization; if you want the fine points, read the GPL.

Linux runs only on 386/486/Pentium machines with ISA, EISA, PCI and VLB busses. MCA (IBM's proprietary bus) is not currently supported because there is little available documentation, although some patches are available for a few machines.

There is a port in progress for multiple Motorola 680x0 platforms (currently running on some Amigas and Ataris), which now works quite well. It requires a 68020 with an MMU, a 68030, or a 68040, and also requires an FPU. Networking and X now work.

There is also a port in progress for DEC's Alpha CPU, which currently supports at least the "Jensen" hardware and the "noname" Alpha motherboard manufactured by DEC. The port is self-hosting (meaning a Linux/Alpha kernel can be compiled under Linux/Alpha) and networking is underway. X is available as well.

Ports to other machines, including MIPS, PowerPC, and PowerMAC, are under way and showing various amounts of progress. Don't hold your breath, but if you are interested and able to contribute, you may well find other developers who wish to work with you.

Linux is no longer considered to be in beta testing, as version 1.0 was released on March 14, 1994. There are still bugs in the system, and new bugs will creep up and be fixed as time goes on. Because Linux follows the ``open development model'', all new versions will be released to the public, whether or not they are considered ``production quality''. However, in order to help people tell whether they are getting a stable version or not, the following scheme has been implemented: Versions 2.x.y, where x is an even number, are stable versions, and only bug fixes will be applied as y is incremented. So from version 2.0.2 to 2.0.3, there were only bug fixes, and no new features. Versions 2.x.y, where x is an odd number, are beta-quality releases for developers only, and may be unstable and may crash, and are having new features added to them all the time. From time to time, as the currect development kernel stabilizes, it will be frozen as the new ``stable'' kernel, and developement will continue on a new development version of the kernel.

Most versions of Linux, beta or not, are quite stable, and you can keep using those if they do what you need and you don't want to be on the bleeding edge. One site had a computer running version 0.97 patchlevel 1 (dating from the summer of 1992) for over 136 days without an error or crash. (It would have been longer if the backhoe operator hadn't mistaken a main power transformer for a dumpster...) Others have posted uptimes in excess of a year.

One thing to be aware of is that Linux is developed using an open and distributed model, instead of a closed and centralized model like much other software. This means that the current development version is always public (with up to a week or two's delay) so that anybody can use it. The result is that whenever a version with new functionality is released, it almost always contains bugs, but it also results in a very rapid development so that the bugs are found and corrected quickly, often in hours, as many people work to fix them.

In contrast, the closed and centralized model means that there is only one person or team working on the project, and they only release software that they think is working well. Often this leads to long intervals between releases, long waiting for bug fixes, and slower development. Of course, the latest release of such software to the public is often of higher quality, but the development speed is generally much slower.

As of September 1, 1998, the current stable version of Linux is 2.0.35, and the new development tree, 2.1.x, is now at version 2.1.113. Only use 2.1.x kernels if you want to be a part of the bleeding edge and don't care if your machine crashes now and then!

For those who may be nervous or curious about using Linux for the first time have a look here for information about Linux "myths" and realities.

Linux Features

  • multitasking: several programs running at once.
  • multiuser: several users on the same machine at once (and no two- user licenses!).
  • runs in 386 protected mode.
  • has memory protection between processes, so that one program can't bring the whole system down.
  • demand loads executables: Linux only reads from disk those parts of a program that are actually used.
  • shared copy-on-write pages among executables. This means that multiple process can use the same memory to run in. When one tries to write to that memory, that page (4KB piece of memory) is copied somewhere else. Copy-on-write has two benefits: increasing speed and decreasing memory use.
  • virtual memory using paging (not swapping whole processes) to disk: to a separate partition or a file in the filesystem, or both, with the possibility of adding more swapping areas during runtime (yes, they're still called swapping areas). A total of 16 of these 128 MB swapping areas can be used at once, for a theoretical total of 2 GB of useable swap space.
  • a unified memory pool for user programs and disk cache, so that all free memory can be used for caching, and the cache can be reduced when running large programs.
  • dynamically linked shared libraries (DLL's), and static libraries too, of course.
  • does core dumps for post-mortem analysis, allowing the use of a debugger on a program not only while it is running but also after it has crashed.
  • mostly compatible with POSIX, System V, and BSD at the source level.
  • through an iBCS2-compliant emulation module, mostly compatible with SCO, SVR3, and SVR4 at the binary level.
  • all source code is available, including the whole kernel and all drivers, the development tools and all user programs; also, all of it is freely distributable. There are some commercial programs being provided for Linux now without source, but everything that has been free is still free.
  • POSIX job control.
  • pseudoterminals (pty's).
  • 387-emulation in the kernel so that programs don't need to do their own math emulation. Every computer running Linux appears to have a math coprocessor. Of course, if your computer already contains an FPU, it will be used instead of the emulation, and you can even compile your own kernel with math emulation removed, for a small memory gain.
  • support for many national or customized keyboards, and it is fairly easy to add new ones dynamically.
  • multiple virtual consoles: several independent login sessions through the console, you switch by pressing a hot-key combination (not dependent on video hardware). These are dynamically allocated; you can use up to 64.
  • Supports several common filesystems, including minix-1, Xenix, and all the common system V filesystems, and has an advanced filesystem of its own, which offers filesystems of up to 4 TB, and names up to 255 characters long.
  • transparent access to MS-DOS partitions (or OS/2 FAT partitions) via a special filesystem: you don't need any special commands to use the MS-DOS partition, it looks just like a normal Unix filesystem (except for funny restrictions on filenames, permissions, and so on). MS-DOS 6 compressed partitions do not work at this time, and are not expected to. VFAT (WNT, Windows 95) support is being tested.
  • support for the Windows-95 VFAT file system allowing reading and writing of long filenames
  • special filesystem called UMSDOS which allows Linux to be installed on a DOS filesystem.
  • read-only HPFS-2 support for OS/2 2.1 CD-ROM filesystem which reads all standard formats of CD-ROMs.
  • TCP/IP networking, including ftp, telnet, NFS, etc.

  • Legal Status of Linux

    Although Linux is supplied with the complete source code, it is copyrighted software, not public domain. However, it is available for free under the GNU Public License, sometimes referred to as the ``copyleft''. See the GPL for more information. The programs that run under Linux each have their own copyright, although many of them use the GPL as well. X uses the MIT X copyright, and some utilities are under the BSD copyright. In any case, all of the software on the FTP site is freely distributable (or else it shouldn't be there).


    [Linux Home Page]


    Click to go back my main Linux page.


    Care to e-mail me? Click on the icon below.

    Chris Berg