Linux: It's Not Just for Intel Anymore
A Linux Port Tour
by Joseph L. Brothers
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.
Name: Linux/68k
Linux/68k is a port of Linux to Amiga and Atari 680x0 platforms having
hardware memory management and floating point support.
- Status:
beta
- FAQ Access:
http://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,
jmayer@informatik.uni-kl.de
- Mailing Lists:
Linux-activists channel 680X0 at
linux-activists-request@niksula.hut.fi
linux-680x0@vger.rutgers.edu
to subscribe, send mail to:
majordomo@vger.rutgers.edu
- Source Access:
http://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/680x0
ftp://ftp.germany.eu.net/pub/os/Linux/Mirror.SunSITE/
ftp://src.doc.ic.ac.uk/computing/operating-systems/Linux/tsx-11-mirror/680x0/
- Release Coordinator:
Amiga-Hamish Macdonald,
hamish@border.ocunix.on.ca
Atari - Roman Hodek,
rnhodek@cip.informatik.uni-erlangen.de
- Supported Platforms:
Amiga-A3000, A3000T, and A4000/40 (but not the A4000/30)
Atari-Falcon (plus FPU), TT
Mac--no information available
- Help Wanted:
- 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.
Name: Linux/Alpha
Linux/Alpha is a port of Linux V1.0 to the Digital Equipment Corp. Alpha
RISC microprocessor.
- Status:
Kernel SDK
- 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 (
paradis@amt.tay1.dec.com)
- Mailing Lists:
- Source Access:
gatekeeper.dec.com:/pub/DEC/Linux-Alpha
- Release Coordinator:
Jim Paradis (
paradis@amt.tay1.dec.com)
- Help Wanted:
- 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!
Name: Linux/MIPS
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:
http://www.waldorf-gmbh.de:/linux-mips-faq.html
ftp.waldorf-gmbh.de:/pub/linux/mips/linux-mips-FAQ
- FAQ Maintainer:
linux@waldorf-gmbh.de
- Mailing Lists:
- Source Access:
sunsite.unc.edu:/pub/Linux/ALPHA/mips
ftp.uni-mainz.de:/pub/Linux/MIPS
ftp.waldorf-gmbh.de:/pub/linux/mips
- Release Coordinator:
Andreas Busse (andy@waldorf-gmbh.de)
- 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 (
ralf@waldorf-gmbh.de
) 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.
Name: Linux/Sparc
Linux/Sparc is a port of Linux to the sun4c, based on Version 7 of the
Sparc architecture.
- Status:
just starting
- 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,
davem@nadzieja.rutgers.edu
- Mailing Lists:
linux-sparc@vger.rutgers.edu To subscribe, send mail to:
majordomo@vger.rutgers.edu
- Source Access:
ftp://tsx-11.mit.edu/pub/linux/sources/system
- Release Coordinator:
David S. Miller,
davem@nadzieja.rutgers.edu
- 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.
Name: Linux/PowerPC
Linux/PowerPC is a port of Linux to PowerPC processors, initially the
601 and 603.
- Status:
resuming
- 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:
brothers@halcyon.com
- Mailing Lists:
linux-ppc@vger.rutgers.edu To subscribe, send mail to:
majordomo@vger.rutgers.edu
watch the mailing list for announcements
- Source Access:
ftp://tsx-11.mit.edu/pub/linux/sources/system/
- Release Coordinator:
brothers@halcyon.com
- Help Wanted:
- 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 (info@halcyon.com) 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.
Wrapping Up The Virtual Brewery Tour
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.