Introduction

The standard distribution of Linux for S/390 comes with a compiler that emits code that can only run on newer S/390 equipment, using the 13 instructions comprising the so called Halfword Immediate and Relative Branch Feature. Machines so equipped are generally referred to as G2 or later.

There are basically two ways open if one wants to run Linux on pre-G2 equipment, viz. simulating the missing instructions by an extension to the Program Interrupt Handler, on the one hand, and modifying the code so as to avoid its use, on the other.

Of these ways, the first has priority, as it would be impractical to restrict oneself to running only a tiny subset of all programs, as long as the majority of binaries around are compiled for the newer machines (s390-g2). It should be added, that modifying the binary is particularly difficult in case of programs that are distributed as object code only, as it is the case with the OSA driver from IBM.

The resulting system is, however, so slow as to be unusable. So it is necessary to reduce the number of instructions that must be simulated. The following possibilities come to mind:

For the moment, the option of changing the output from the compiler is realized. For that purpose, a Perl-script (nqbtr.pl) is provided.

Distribution

In principle, this is one out of any number of kernel-patches, (as it is the case for Linux/390 in toto), given by an input file for Larry Wall's patch(1) program, but experience shows that many sites with a mainframe are ill-equipped for that sort of kernel-hacking; so it has been necessary to provide compiled kernels as well.

Compiled kernels

As there is a great number of possible kernel configurations, my attempts of making pre-compiled kernels available must by necessity remain imperfect; the same could be said, of course, of any standard Linux-distribution, such as Debian but in our case much is still in flux, and in addition the usual recompile of the kernel often impossible. I will try to help with anything I can make(1). Feel free to ask me.

All kernels are presently compiled with the s390-gcc cross-compiler for the i386 architecture.

  1. Kernel image No.219 2000-03-28 21:55:03 (Tape IPL)
  2. Kernel image No.225 2000-03-31 20:20:26 (Tape IPL, with NFS)
  3. Kernel image No.225 2000-03-31 20:20:26 (Card Reader(VM) IPL, with NFS)

Patches

The patches come as a tar(1)-archive, of which the main part is the patch itself. If this work extends to other sources, the patches thereto will here be added as well. (Here's what you'll find in the "vintage" tarball.)

  1. Vintage Patch 0.4

To apply them, you must extract the archive and then apply the patch(es) to the respective source trees. Example:

	tar xvzf vintage-0.4.tar.gz
	cd linux-2.2.14
	patch -p1 < ../vintage-0.4-kernel.patch 
      

Documentation

See also

This material is uploaded to the following sites:

For your questions and problems: Peter Schulte-Stracke.

For general information, see Linas Vepstas' comprehensive Linux on the IBM ESA/390 Mainframe Architecture and the links given there; in particular Linux/390 at Princeton University, and Linux for S/390.

See also the Marist mailing list archives , to join the list say subscribe Linux-390 Your Name to join the mailing list.

Notes

There is no warranty, etc. as always. Please see the GNU General Public License for details (part of the Linux sources).