Linux on the IBM ESA/390 Mainframe Architecture
Linux on the mainframe? 65535 attached devices, and all of them busy?
Unlike the mythical beast Bigfoot, there is evidence that Linux on
Big Iron exists. We want to believe. The truth is out there.
Watch out for the penguins.
News Flash! Bigfoot is not alone! There are now two
ports of the Linux kernel to the IBM S/390. The first port is
documented in greater detail below. The second port was developed
by IBM engineers living in a cave. Because they had no access to
the outside world, this port is completely incompatible.
However, market realities are such that the IBM effort is currently
the defacto leader. That project is staffed by a number of paid,
full-time developers, whereas this project was staffed by a small
number of unpaid volunteers. That code is the focus of intensive
ongoing development, test and deployment, while this project is
in hibernation, with no active development going on at this
time.
This may still change. There are still a few sticky points
with the s390 port that probably aren't important, but could
make thing ugly if not eventually resolved. These are:
- Assignment. The s390 tool chain (compiler, assembler,
C library) has not been assigned to the FSF for inclusion into
the mainstream distribution. Assignment requires some legal
paperwork to be performed; for various internal reasons, IBM
may find it difficult to do the assignment. However, if it
is not done, then maintaining the separate s390 patch tree
can become tedious, leading to all sorts of inconveniences.
- Vendor Neutral Forum. Currently, the s390 development
efforts are controlled de-facto by IBM. This makes it difficult
for the 'mainframe clone' vendors: Hitachi and Fujitsu, to
participate. Overall, the project is weakened by this, and it
would benefit considerably from a more open, more inclusive
style. Both other members of the at-large community, as well
as representatives from other vendors should get a more
transparent process.
- Proprietary Hardware. Many aspects of the operation of
mainframes are governed by proprietary, confidential documentation.
For example, the interface to OSA (the network adapter) is
secret. IBM has provided a binary (Object-Code-Only) driver
for this interface, in clear violation of the Linux Kernel GPL.
So far, no one is complaining, since a binary-only network
interface is better than no interface at all, but clearly,
this cannot stand as is for long.
- Pricing. Currently, IBM licenses its OS software
on a month-by-month basis, and the rental cost is based on
the number of installed CPU's (MIPS) that a customer has.
This has a strong, negative impact on Linux or any non-IBM OS:
Lets say half of a mainframe runs a traditional IBM operating
system, and the other half runs Linux/390. Under current
contracts, customers would get billed at full-price, and not
at the half-price one would expect. This is a serious issue:
the cost of hardware is a small (10%-20%) part of the total
cost of running a mainframe. The cost of the raw hardware
is comparable to (or even less than) that from Sun or HP or
SGI; its the cost of the software that makes mainframes
expensive. This issue is further clouded by 'bundling':
an OS pricing model where the cost of the hardware is
thrown in 'for free', which could mortally wound the
mainframe clone makers. If instead, software pricing
was 'fair', then Linux/390 could be a serious threat to
the high-end systems from Sun, HP and SGI.
- Older Hardware. The s390 port only runs on the newest
generation of hardware. Very few sites have this hardware.
The i370 port supports an older instruction set, and thus
opens the door to owners of older systems.
- Large GOT. The current s390 compiler doesn't support
a large GOT. A large GOT is needed to compile programs with
a large number of symbols in them.
Supposedly, this is being fixed ...
- Assembly Style. The i370 assembler supports an assembly
style that is more familiar to traditional mainframe coders.
The s390 assembler supports a syntax that resembles Intel/x86
style. I think that the s390 design choice was a mistake,
which is why they have large-GOT problems, etc.
If the above sounds like a critique of the s390 port, keep in mind
that the s390 port is currently more technically advanced, and is the
subject of active use and ongoing development. Note that the i370
port is stagnant.
June 2024 update!
Many of the links below have expired, and many of the original source
packages are no longer available, making it impossible to apply the
i370 patches below. To remedy this problem, by popular demand, a full
complete dump of *all* of my working source directories is now available
as *-i370.tar.bz2 files at https://linas.org/linux/i370/.
These are unaudited, uncleansed final snapshots of development code, and
may contain half-fininished work. In particular, a large redesign to
support shared libraries in glibc was started, but never finished.
August 2024 update!
Recent bug reports have resulted in brand-new patches to binutils
being created. Three serious bugs were reported:
- Incorrect offsets in the literal table for =A address
constants (literals).
- Failed output of =XL8 literals on 32-bit arches
- Failed output of =E floating point and
=D double precision constants.
The fixes are available at github, specifically, in the
github.com/linas/i370-binutils
repo. Read the README there for more info.
Who the heck needs an MVS-work-alike in 2024? Appearently,
PDOS (Public Domain Operating System) and
PDPCLIB (Public Domain Project C Library) do. This version of the
assembler, plus the i370 compiler are central to that effort.
September 2024 update!
A crude attempt to
revive bigfoot can be found on github.
The Bigfoot Port (aka i370)
This section describes and provides status for the original Linux/390 port.
Why do this?
Why do this?
Its a question that comes up often enough, fairly, even I suppose, and so
it deserves and answer. For the nookie, of course.
Postscript
This project became defunct in 2000, after IBM's announcement of a
competing project seemed to make it pointless to continue with this
project. See the "why do this" page for
the details. A big THANK YOU goes out to Melinda Varian
of Princeton University for providing access to the Princeton IBM/370
mainframes to do this work!
Last updated February 2000 by Linas Vepstas
(linas@linas.org)
Copyright (c) 1998,1999,2000 Linas Vepstas.
All trademarks on this page are property of their respective owners.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts. A copy of the license is included at the URL
http://www.linas.org/fdl.html,
the web page titled
"GNU Free Documentation License".
Go Back to the Linux/390 Page
Go Back to the Enterprise Linux(TM) Page
Go Back to Linas' Home Page