Linux: It's Not Just for Intel Anymore
Linux isn't just for breakfast, er, Intel, anymore. Everybody loves it and wants it on their favorite processor: 680x0, Alpha, MIPS, Sparc, PowerPC. That's good, because it makes Linus happy, Linux better, life easier for Linux users, keeps commercial OS vendors on their toes, and sells a lot of hardware. It's good, too, because Linux ports to newer processor technologies help ensure the continuing viability of our favorite operating system. On the other hand, the ports could split development and lead to bugs and confusion from too many code streams. The changes necessary for portability could mean slower Linuxes for everyone. To head off these problems, Linus and the other porters are working together to take Linux beyond itsIntel-processor-based beginnings.
For those who are new to the Linux community, we should start by explaining that there is a long-standing joke about “virtual beer” in the Linux community. The “Oxford Beer Trolls” were credited for having sent “virtual beer” (money with which to buy beer, presumably) to Linus, and soon “virtual beer” meant any sort of thanks or praise. Because the phrase has become common, puns on (virtual) beer are commonplace among Linux users. Let's take a flying tour of the virtual breweries, their plumbing, hydraulic engineers and brew masters, and end with a quick tasting of the product. Let's start with the recipe. Table I lists the ingredients for each port and some notes on the process. You can see how far along each batch is.
cross-tools consist of at least a compiler and binary utilities (as, ar, ld) that produce executables for the new machine + operating system combination.
merged source refers to integration of the port with Linus' kernel source.
simulator is a program that pretends to be the new hardware so new executables can be run and debugged.
boot is the few hundred words of native assemble code that checks, and may set up the hardware before beginning to load the kernel. The port is done once that code stops changing.
kernel refers to the minimum operating software needed to start a user shell. It includes memory management, process scheduling, rudimentary device drivers and at least one file system.
runs shell includes the capability of running the basic Linux command line utilities.
native tools are the result of using the cross-tools to cross themselves to the new machine + OS.
SDK means the newly ported Linux can compile a working copy of itself from scratch, completely stand-alone.
user apps consist of text processing, e-mail, alternate shells and file systems, more device drivers, really a complete character-oriented Linux. In short, everything except X-Windows.
X-Windows adds a standard graphical user interface.
As you examine the birthplace of each port, you may enjoy keeping track of its relative ability to intoxicate. For virtual brews, this is calibrated in BogoMips (Bogus Misleading Indication of Processor Speed). Remember, this cannot be used to compare different processors.
Note that the “Mips” along the left side of Table II refers to a RISC processor family, not a measurement of speed. Now we'll check in at each brewery to look around, meet the makers, and take the temperature of the batches. We won't spend any time with the ix86 Linux you are all familiar with. Besides, it's not a port; it's the original. On with the tour.
Linux/68k is a port of Linux to Amiga and Atari 680x0 platforms having hardware memory management and floating point support.
FAQ Access:pfah.informatik.unikl.de:8000/pers/jmayer/linux68k-faq ftp://tsx-11.mit.edu/pub/linux/680x0/FAQ (or any tsx-11 mirror)
FAQ Maintainer:Joerg Mayer, firstname.lastname@example.org
Source Access: www-users.informatik.rwth-aachen.de/~hn/linux68k.html http://src.doc.ic.ac.uk/packages/Linux/tsx-11-mirror/680x0/ ftp://tsx-11.mit.edu/pub/linux/680x0ftp://ftp.germany.eu.net/pub/os/Linux/Mirror.SunSITE/ftp://src.doc.ic.ac.uk/computing/operating-systems/Linux/tsx-11-mirror/680x0/
Supported Platforms:Amiga-A3000, A3000T, and A4000/40 (but not the A4000/30)Atari-Falcon (plus FPU), TTMac—no information available
More hardware-dependent device drivers are needed. The Kernel Hackers Guide needs to be updated for the 680x0 with special emphasis on memory management.
Linux/68k runs a beta-quality 680x0 Linux kernel on two makers' platforms, a number of file systems, shells, and some utilities. There is no X-windowing yet, though work on it is progressing. Full native development is possible using the specially contributed tools.
The Amiga and the Atari ports were merged so successfully that the same kernel image (the vmlinux from tsx-11) runs on both machines. Another advantage of this is that all user program binaries should work on any machine running Linux/68k if only hardware-independent devices are used. These devices include ramdisk, mem, pty, tty, vt, slip, net/inet, and general SCSI stuff. These file systems have been ported: minix, ext2, msdos, proc, isofs, nfs.
Hamish Macdonald, describing the state of things on January 4:
I've currently got a private source tree at the v1.1.61 level, I'm tracking Linus' portability changes, and have been submitting comments to him on portability-related abstractions. As time permits, I'll probably be submitting more changes to this end.
Linux/Alpha is a port of Linux V1.0 to the Digital Equipment Corp. Alpha RISC microprocessor.
Supported Platforms:Linux/Alpha is primarily aimed at PC-class Alpha platforms that support ISA, VLB, and PCI devices.
FAQ Access:watch comp.os.linux.announce
FAQ Maintainer:Jim Paradis (email@example.com)
Release Coordinator:Jim Paradis (firstname.lastname@example.org)
If you have an Alpha-based PC-class system running OSF/1 (e.g. DEC 2000) you can use the same system for development and test bed. Otherwise, you will need two systems.
The development system can be any system that can support the Linux/Alpha cross-development tools. The cross tools have been successfully built and tested on the following systems:
Linux 1.1.x 386/486 (natch!)
DEC OSF/1 Alpha 2.0
DEC RISC/ULTRIX 4.2 (MIPS)
SunOS 4.1 (Sparc)
Jim Paradis, announcing the Linux/Alpha
Developers' Kit 20 January `95:
The Linux/Alpha Software Developers' Kit is the first public release of Linux operating system components for Digital's Alpha family of microprocessors.
The SDK is available via anonymous FTP [see above]. I STRONGLY suggest that you first download the files README and SDK_CONTENTS and read them before downloading anything else (hint: you do NOT need to download all 55Mb in that directory!)
The Linux/Alpha SDK is NOT a fully-functional Linux distribution. The documentation is EXTREMELY sketchy and is mainly in the form of back-of-the-envelope notes. Linux/Alpha is not self-hosting; one must cross-compile the kernel and utilities on another system using the available cross-development tools. The kernel is extremely fragile, and several important code paths have not been tested yet. Very few utilities are available; you can bring the system up to a shell prompt, but you can't do much of anything else yet. Device driver support is minimal; currently, we support console-callback device drivers, but these are EXTREMELY slow (console-callback drivers are the Alpha equivalent of BIOS drivers on Intel systems). We have ported three sample drivers so far for the DEC 2000 AXP system: keyboard, text-mode VGA, and Adaptec 1742 SCSI.
In other words, Linux/Alpha is currently in a state that only a kernel hacker could love. If that describes you, then by all means download the SDK and give it a try!
Linux/MIPS is a Linux port for computers equipped with Mips R4x00 processors.
Status:tools alpha; kernel pre-alpha
Supported Platforms:Deskstations Tyne and Acer PICA with R4400PC andR4600 processors. The Deskstations support the ISA bus.
FAQ Access:www.waldorf-gmbh.de:/linux-mips-faq.html ftp.waldorf-gmbh.de:/pub/linux/mips/linux-mips-FAQ
FAQ Maintainer: email@example.com
Release Coordinator:Andreas Busse (firstname.lastname@example.org)
Help Wanted:Sure, you can help! If you have a Mips box, please let us know.
From the FAQ:
We have a half-way working kernel for the Deskstation boards. Console, floppy, serial and parallel I/O seem to be OK. The C library is nearly complete. We expect the first user process running soon. The kernel will be released when a user can issue shell commands, probably early in 1995.
Support/development tools available include cross compilers, assemblers and linkers ready to use for Linux/ix86, SunOs 4.1.3 and Solaris2.3. A Mips R2000/R3000 simulator (SPIM) for Linux/ix86 is also ready to download.
Andy Busse comments:
My part of the project is kind of project management. And, of course, it was my idea to port Linux to Mipses. From my point of view, different native endianesses is probably the most complicated part of Linux/MIPS. Most systems come up little-endian while some run big-endian only. However, I still hope that it will be possible to have user code compatibility on all supported Mips boxes.
Ralf Baechle (email@example.com ) is currently working on the Deskstation port:As you might have seen, the 68k port is about to be merged into Linus' kernel distribution. Since the 68k port is the most advanced of the ports, I have high hopes for the integration of Linux/68k. It will make porting for all others a lot easier.
Linux/Sparc is a port of Linux to the sun4c, based on Version 7 of the Sparc architecture.
Supported Platforms:Sun 4/20 is typical. A more complete list will be available soon.
FAQ Access:see mailing list
FAQ Maintainer: David S. Miller, firstname.lastname@example.org
Mailing Lists:email@example.com To subscribe, send mail to: firstname.lastname@example.org
Release Coordinator:David S. Miller, email@example.com
Help Wanted:Contact David S. Miller if you have a Sparc to boot on. In David Miller's words,
Right now, I have my test box do the following: 1) Print boot-up messages, 2) Determine the machine type (sun4c, sun4m, sun4d, etc.), 3) Determine the available physical memory on the machine and other types of information, 4) Probe the OpenBoot PROM for devices that are on the machine. The PROM is a real win here.5) BogoMIPS, the most important part of the port! This SUN 4/20 gives 17.94 BogoMIPS. 6) Completely map the kernel's virtual pages. 7) Enable and flush the Virtual Address Cache.
I have a lot of the architecture-dependent include/asm-sparc files written and am able to `make config; make dep; make clean' on the tree. A lot of the file system code can be compiled. Getting it to work is another story.
The current work on the Sparc port of Linux is aimed at the sun4c machines which are based on Version 7 of the Sparc architecture. The main difference (between machine types) is that the MMU's are accessed in a different fashion in V8 and onward. Fortunately, Version 8 memory management (for sun4m) is defined by the V8 manual “The Sparc Reference MMU”. I am attempting to make sun4m support easy to just plug in later. Yes, this means multi-processor support and all that entails. Although no such machines will exist before mid `95, I am doing some of my code with the Version 9 Sparc in mind: better prepared than not.
I have been trying to coordinate my code with Linus such that we don't buck heads in the kernel tree, so to speak. Eric Youngdale and Linus have been extremely helpful in deciding how best to integrate my memory-management code into the current tree.
Linux/PowerPC is a port of Linux to PowerPC processors, initially the 601 and 603.
Supported Platforms:Apple PowerMac, Motorola PowerStack, IBM Power Personal PC. The PowerStack uses both ISA and PCI buses.
FAQ Access:see mailing list
FAQ Maintainer: firstname.lastname@example.org
Mailing Lists:email@example.com To subscribe, send mail to: firstname.lastname@example.org watch the mailing list for announcements
Release Coordinator: email@example.com
A documentation specialist is needed. Knowledge of the Linux Documentation Project, SGML, HTML, TeX, LaTeX, and desire to learn literate programming with “noweb” are required.
Volunteers having PC-class RS6000 machines or IBM PowerPersonal PCs are needed for boot and kernel testing and to write or port device drivers.
The Apple PowerMac porters mostly have a cross-development environment (not freeware). Access to the Mac's ADB internal bus specifications appears imminent, as Apple now seems willing to release the information under certain conditions.
With the addition to the project of some Motorola PowerStacks (on order) and their soon-to-be owners at year end, `94, the PowerStack part of the Linux/PowerPC port is beginning to come together. A GNU cross-development tool set, targeted at the PPC, has been started.
Many thanks go to Northwest Nexus (firstname.lastname@example.org) for supporting the Linux/PowerPC Project by providing the author's net access. Thanks also to MicroApl Ltd. (London, UK (MicroAPL@microapl.demon.co.uk )), makers of PortAsm assembler source translators, for their contribution.
Jim Paradis sums it up well:
Implementing ANY operating system on a new platform, is a major undertaking. It has taken dozens, if not hundreds, of programmer-years to bring the Intel version of Linux to the point where it is today. Too, while a kernel port is a significant piece of engineering, it is only a small part of porting an operating system. It is not surprising that the non-Intel versions of Linux are taking some time to appear.
You can all help yourselves to the samples we have provided. What? The glasses are empty? Of course they are, that's one of the risks in breweries like these. Good brews take time. We do hope you've enjoyed your tour of the new virtual breweries, though. And remember, when sampling RISC ports, don't hold your breath!
Joseph L. Brothers, CCP, CDP, is a Senior Software Engineer in Motorola's Wireless Data Group where he writes distributed engineering productivity software using the noweb literate programming tool. On his own time, he volunteers as the Linux/PowerPC Project's PowerStack task coordinator.