3. The Linux Kernel

Q: What Platforms Does Linux Support?
Q: What Hardware Is Supported?
Q: Ports to Other Processors
Q: How Does Linux Kernel Versioning Work?
Q: Where Is the Latest Kernel Version on the Internet?
Q: Does Linux Support Threads or Lightweight Processes?
Q: What Version of Linux and What Machine Name Is This?
Q: What is a BogoMip?
Q: Does Linux Support USB Devices?
Q: Can Linux Use More than 3 Serial Ports by Sharing Interrupts?

Q: What Platforms Does Linux Support?

A: Linux runs on almost every general-purpose computer made in the last 10 years. It runs on systems as small as PDAs (for example, the Sharp Zaurus) and on systems as large as IBM mainframes.

There are Linux distributions specifically for mobile and handheld platforms. Information on the Linux distribution for the Compaq iPAQ is at http://www.handhelds.org.

A: Linux was written originally for Intel processor based PC's, using the hardware facilities of the 80386 processor and its successors to implement its features. The 80386 family includes the 80486 and all of the Pentium chips. However, there are now many ports to other hardware platforms. See Ports to Other Processors.

Refer also to the Linux INFO-SHEET for more details as well as the answers to Where Is the Documentation?, What Hardware Is Supported?, and Ports to Other Processors, below.

Q: What Hardware Is Supported?

A: A minimal Linux installation requires a machine for which a port exists, at least 2Mb of RAM, and a single floppy drive, but to do anything even remotely useful, more RAM and disk space are needed. Refer to: Ports to Other Processors, What are the Disk Space Requirements for Minimal, Server, and Workstation Use?, and What are the Minimum and Maximum Memory Requirements?.

Intel CPU, PC-compatible machines require at least an 80386 processor to run the standard Linux kernel.

Linux, including the X Window System GUI, runs on most current laptops. Refer to the answer for: How Do I Find Out If a Notebook Runs Linux?. There are numerous sources of information about specific PC's, video cards, disk controllers, and other hardware. Refer to the INFO-SHEET, Laptop-HOWTO, and the Unix-Hardware-Buyer-HOWTO. See Where Is the Documentation?.

Q: Ports to Other Processors

A: There are always efforts underway to port Linux onto new processors. Linux Online maintains a http://www.linux.org/projects/ports.html:list of ports currently in development.

In addition, the following information is available about specific ports:

On Intel platforms, VESA Local Bus and PCI bus are supported.

MCA (IBM's proprietary bus) and ESDI hard drives are mostly supported. There is further information on the MCA bus and what cards Linux supports on the Micro Channel Linux Web page, http://www.dgmicro.com/mca. Refer also to the answer for: Where Is the Linux Stuff on the World Wide Web?.

There is a port of Linux to the 8086, known as the Embeddable Linux Kernel Subset (ELKS). This is a 16-bit subset of the Linux kernel which will mainly be used for embedded systems, at: http://www.linux.org.uk/Linux8086.html. Standard Linux does not run 8086 or 80286 processors, because it requires task-switching and memory management facilities found on 80386 and later processors.

Linux supports multiprocessing with Intel MP architecture. See the file Documentation/smp.tex in the Linux kernel source code distribution.

An API specification and developers kit for the Crusoe Smart Microprocessor developed by Transmeta Corporation are at http://www.transmeta.com.

A project has been underway for a while to port Linux to suitable 68000-series based systems like Amigas and Ataris. The Linux/m68K FAQ is located at http://www.clark.net/pub/lawrencc/linux/faq/faq.html. The URL of the Linux/m68k home page is http://www.linux-m68k.org/faq/faq.html.

There is also a linux-680x0 mailing list. See What Mailing Lists Are There?.

There is (or was) a FTP site for the Linux-m68k project on ftp://ftp.phil.uni-sb.de/pub/atari/linux-68k, but this address may no longer be current.

Debian GNU/Linux has ports to Alpha, Sparc, Motorola 68k, PowerPC, ARM, IBM S/390, MIPS, HP PA-RISC, and IA-64. A Port to amd64 is being developed. There are mailing lists for all of them. See http://www.debian.org/MailingLists/ for general information, then follow the "subscription" link, and find the mailing list you are interested in.

One of the Linux-PPC project pages is http://www.linuxppc.org, and the archive site is ftp://ftp.linuxppc.org/linuxppc.

There are two sites for the Linux iMac port: http://w3.one.net/~johnb/imaclinux, and http://www.imaclinux.net:8080/content/index.html.

A port to the 64-bit DEC Alpha/AXP is at http://www.azstarnet.com/~axplinux/. There is a mailing list at vger.redhat.com: see What Mailing Lists Are There?.

Ralf Baechle is working on a port to the MIPS, initially for the R4600 on Deskstation Tyne machines. The Linux-MIPS FTP sites are ftp://ftp.fnet.fr/linux-mips and ftp://ftp.linux.sgi.com/pub/mips-linux. Interested people may mail their questions and offers of assistance to linux@waldorf-gmbh.de.

There is (or was) also a MIPS channel on the Linux Activists mail server and a linux-mips mailing list. See What Mailing Lists Are There?.

There are currently two ports of Linux to the ARM family of processors. One of these is for the ARM3, fitted to the Acorn A5000, and it includes I/O drivers for the 82710/11 as appropriate. The other is to the ARM610 of the Acorn RISC PC. The RISC PC port is currently in its early to middle stages, owing to the need to rewrite much of the memory handling. The A5000 port is in restricted beta testing. A release is likely soon.

For more, up-to-date information, read the newsgroup news:comp.sys.acorn.misc. There is a FAQ at http://www.arm.uk.linux.org.

The Linux SPARC project is a hotbed of activity. There is a FAQ and plenty of other information available from the UltraLinux page, http://www.ultralinux.org.

The Home Page of the UltraSPARC port ("UltraPenguin") is located at http://sunsite.mff.cuni.cz/linux/ultrapenguin-1.0/, although the URL may not be current.

There is also a port to SGI/Indy machines ("Hardhat"). The URL is http://www.linux.sgi.com.

Q: How Does Linux Kernel Versioning Work?

A: At any given time, there are several "stable" versions of Linux, and one "development" version. Unlike most proprietary software, older stable versions continue to be supported for as long as there is interest, which is why multiple versions exist.

Linux version numbers follow a longstanding tradition. Each version has three numbers, i.e., X.Y.Z. The "X" is only incremented when a really significant change happens, one that makes software written for one version no longer operate correctly on the other. This happens very rarely -- in Linux's history it has happened exactly once.

The "Y" tells you which development "series" you are in. A stable kernel will always have an even number in this position, while a development kernel will always have an odd number.

The "Z" specifies which exact version of the kernel you have, and it is incremented on every release.

The current stable series is 2.4.x, and the current development series is 2.5.x. However, many people continue to run 2.2.x and even 2.0.x kernels, and they als o continue to receive bugfixes. The development series is the code that the Linu x developers are actively working on, which is always available for public viewing, testing, and even use, although production use is not recommended! This is part of the "open source development" method.

Eventually, the 2.5.x development series will be "sprinkled with holy penguin pee" and become the 2.6.0 kernel and a new stable series will then be established, and a 2.7.x development series begun. Or, if any really major changes happen, it might become 3.0.0 instead, and a 3.1.x series begun.

Q: Where Is the Latest Kernel Version on the Internet?

A: The easiest way to update your kernel is to get the update directly from the distribution which you are running.

A: If you need or want to configure and compile your own kernel, the web page at http://www.kernel.org/ lists the current versions of the development and production kernels.

If you want to download the source code, FTP to ftp.xx.kernel.org, where xx is the two-letter Internet domain abbreviation of your country; e.g., us for United States, ca for Canada, or de for Germany. Kernel versions 2.2.x are archived in the directory pub/linux/kernel/v2.2, as are patches for the prerelease versions. The kernel source code is archived as a .tar.gz file, and as a .tar.bz2 file.

Follow the instructions in any of the standard references to compile the kernel, as you would with any other custom kernel. The Documentation subdirectory contains information by the authors of various subsystems and drivers, and much of that information is not documented elsewhere.

If you want to participate in kernel development, make sure that you sign on to the linux-kernel mailing list to find out what people are working on. Refer to the answer: What Mailing Lists Are There?.

There is a story about the features of the 2.4 series kernels at http://features.linuxtoday.com/stories/8191.html.

Q: Does Linux Support Threads or Lightweight Processes?

A: As well as the Unix multiprocessing model involving heavyweight processes, which is of course part of the standard Linux kernel, there are several implementations of lightweight processes or threads. Recent kernels implement a thread model, kthreads. In addition, there are the following packages available for Linux.

Please contact the authors of the packages in question for details.

Q: What Version of Linux and What Machine Name Is This?

A: Type:

 $ uname -a 

Q: What is a BogoMip?

A: "BogoMips" is a combination of Bogus and Mips. MIPS stands for (depending on who you ask) Millions of Instructions per Second, or Meaningless Indication of Processor Speed.

The number printed at boot time is the result of a kernel timing calibration, used for very short delay loops by some device drivers.

According to the BogoMips mini-HOWTO, the rating for your machine will be:


Common BogoMips Ratings

Processor               BogoMips                 Comparison
---------               --------                 ----------
Intel 8088              clock * 0.004            0.02
Intel/AMD 386SX         clock * 0.14             0.8
Intel/AMD 386DX         clock * 0.18             1 (definition)
Motorola 68030          clock * 0.25             1.4
Cyrix/IBM 486           clock * 0.34             1.8
Intel Pentium           clock * 0.40             2.2
Intel 486               clock * 0.50             2.8
AMD 5x86                clock * 0.50             2.8
Mips R4000/R4400        clock * 0.50             2.8
Nexgen Nx586            clock * 0.75             4.2
PowerPC 601             clock * 0.84             4.7
Alpha 21064/21064A      clock * 0.99             5.5
Alpha 21066/21066A      clock * 0.99             5.5
Alpha 21164/21164A      clock * 0.99             5.5
Intel Pentium Pro       clock * 0.99             5.5
Cyrix 5x86/6x86         clock * 1.00             5.6
Intel Pentium II/III    clock * 1.00             5.6
Intel Celeron           clock * 1.00             5.6
Mips R4600              clock * 1.00             5.6
Alpha 21264             clock * 1.99             11.1
AMD K5/K6/K6-2/K6-III   clock * 2.00             11.1
UltraSparc II           clock * 2.00             11.1
Pentium MMX             clock * 2.00             11.1
PowerPC 604/604e/750    clock * 2.00             11.1
Motorola 68060          clock * 2.01             11.2
Motorola 68040 Not enough data (yet).
AMD Athlon Not enough data (yet).
IBM S390 Not enough data (yet).

If the number is wildly lower, you may have the Turbo button or CPU speed set incorrectly, or have some kind of caching problem (as described in Why Does the System Slow to a Crawl When Adding More Memory?).

For values people have seen with other, rarer, chips, or to calculate your own BogoMips rating, please refer to the BogoMips Mini-HOWTO, on ftp://metalab.unc.edu/. See Where Is the Documentation?.

[Wim van Dorst]

Q: Does Linux Support USB Devices?

A: Linux supports a few dozen USB devices at present, and work is underway to develop additional device drivers. There is a Web page devoted to the subject, at http://www.linux-usb.org. There is also LDP documentation, at: Where Is the Linux Stuff on the World Wide Web?.

Support for USB version 2.0 was recently added to development kernels, but is not yet available in the 2.4 series.

Q: Can Linux Use More than 3 Serial Ports by Sharing Interrupts?

A: Yes, but you won't be able to use simultaneously two ordinary ports which share an interrupt (without some trickery). This is a limitation of the ISA Bus architecture.

See the Serial HOWTO for information about possible solutions and workarounds for this problem.