Linux on the IBM PS/2 Model 55SX

The Model 55SX has a 16MHz 386SX processor and MCA bus. It can run a recent version of Linux, provided you are careful about what to install. The best distribution to use is probably Slackware, because it is easy to strip down, and the important parts can even be installed from floppies if necessary.

System requirements

You'll need at least eight megabytes of RAM for any modern Linux. (There are 'small' Linux kernels and distributions for 4Mbyte machines, but they probably don't support MCA and you'd have to patch them by hand.) The 55SX's planar (motherboard) has two 72-pin SIMM slots, which can each take a 4Mbyte parity SIMM. To get from 8Mbyte to 16Mbyte (the maximum) you'll need a memory card plugging into an MCA slot. Eight megs is adequate, but more is certainly better.

There were various models of 55SX, with different sized disks. I used a 60Mbyte drive to install Slackware, including X Window and networking. Installing in a smaller space is certainly possible, but you'll have to work even harder to strip down the system. The 55SX's disk has an odd arrangement where it plugs directly into the MCA bus and pretends to be an ESDI drive; it works with Linux's ESDI driver.

Installing with 8Mbyte RAM and 60Mbyte disk

Here's what I did to install Slackware 7.0 (the latest version) on a 55SX with 8Mbyte RAM, 60Mbyte ESDI hard disk and 3c523 Ethernet card. The following instructions assume familiarity with Linux and with the Slackware install process, feel free to send questions by mail or to the PS/2 newsgroup if things aren't clear.

Compiled a 2.2.15 kernel with support for MCA, ESDI, 3c523 and NFS. Made a Slackware boot disk using this kernel (using the scripts supplied on the Slackware CD). Test that the kernel boots and recognizes your hardware.

Now if you had enough memory you could just install using the new boot disk and a standard Slackware root disk. However 8Mbyte doesn't seem to be enough even for the low-memory root disk, you cannot even log in to enable swap space. This is because the contents of the root disk get decompressed to a RAM disk which eats up a large chunk of memory.

In the olden days you could overcome this by uncompressing the root floppy image and writing it to a diskette. Then instead of loading the image into a RAM disk at boot time, you could just mount it normally and run the system directly from the floppy, which is very slow but works. However the root disk has grown so large that it will no longer fit on a floppy without being compressed.

But you do have a hard disk in the machine. If you could somehow copy the installation root disk's contents to the hard disk (which is certainly big enough to hold them), you could mount that. But how to copy the diskette's contents to the hard disk in the first place?

At this point you need a root or rescue disk from an older version of Slackware. I used the root disk from Slackware 3.1, which came out in 1996. This disk is small enough that you can decompress it to a floppy and mount that directly; it might even be small enough to run from a RAM disk in memory. So boot your 55SX using the boot disk you created, and the old Slackware root disk. There will be enough free memory for you to log in. (If not uncompress the root disk to a floppy and ask for 'mount root=/dev/fd0' at the prompt.)

Now you could just install Slackware 3.1. But I preferred to use the latest version if at all possible. So I proceeded to partition the hard disk as follows:

Then you can run mkswap and swapon on /dev/eda2, and copy the contents of the Slackware 7.0 root disk uncompressed to /dev/eda1, using gzip -d </dev/fd0 >/dev/eda1 or similar. Test that /dev/eda1 really does contain a usable filesystem by mounting it.

Now you are ready to go with the Slackware 7.0 install. Boot with your boot disk, and at the prompt ask to mount /dev/eda1, which is the uncompressed 7.0 root disk. With a bit of luck the disk will start clattering and you'll eventually get a login prompt. From here you can install Slackware as normal.

(With only 44Mbyte though you'll have to be very careful what packages you choose. I suggest installing only some things from the A and N series, and adding others later. Myself I built an extra-small version of the Slackware tcpip1 package to save disk space.)

If you don't have a network card you will have to install from floppies. Actually, without a network card I'd reckon the computer would be pretty useless anyway.

Once the install has finished, you should be able to use the same boot disk to boot your system, mounting /dev/eda3 as the root partition. You might want to get rid of the temporary 3Mbyte partition used for the root disk image, so you just have

and you can do this by deleting partitions in fdisk and then creating new ones, as long as the new /dev/eda2 starts and ends in exactly the same place as /dev/eda3 did.

To save on disk space after installing your system, try deleting the man pages and docs. You could also use the executable packer UPX on infrequently-used binaries, and delete those which are never used; try ls -lru /usr/bin after you've used the system a few times.

Installing on a bigger machine

If you have 12 megs or more of RAM, you probably won't have any of the awkwardness about decompressing root disks to a partition on your ESDI drive. You can just run the Slackware install as normal. If you have more disk space, you can be a bit more liberal in what packages to install - but you still have to take some care, even the huge 120Mbyte disk is not that big by modern standards :-)

Stuff to do after you've installed


Getting X to work with the 55SX's onboard graphics is actually quite straightforward, it's standard VGA with 256Kbyte VRAM. If you want something better, it's possible to get XGA-1, XGA-2 or 8514/A cards to work with XFree86. The D & G Micro site hasn't been updated for a couple of years, but it still has useful information about getting XFree86 to work with XGA-* cards. In brief: make sure you have XFree86 3.3.x with the XF86_AGX server; grab an XF86Config file which looks close to your setup; download, compile and run xgapos2.c; paste its output into the Device section of XF86Config.


The 55SX isn't exactly overburdened with CPU power, so you may want to use it to log in to other machines over the network. The most convenient and probably most secure way to do this is OpenSSH. You can build this on some other machine and make a tarball to install on your 55SX. For text logins, encrypted SSH is fast enough, but if you want to run remote X applications, you might be interested in patching ssh to use no encryption (provided you are running over a trusted, local network).

Edward Avis
Last modified: Tue May 14 21:39:39 BST 2002