Old Linux Versions


Introduction

If you ever tried to compile an 1.0 or 1.2 kernel under a 2.0 system you will likely be disppointed: It doesn't work anymore. There are several reasons for this: Newer compiler, incompatible changes in the binutils package, and the switch from a.out to ELF that has taken place in 1995/1996.

However, there are efforts to make the old kernels compilable under 2.x kernels. But why should one want to do so?

The main reason is that older kernels need less memory. This is good for old computers with little memory, and for embedded systems where memory cost dominates software cost because of production volume. In fact there are projects to build a very small kernel.

Another reason is stability. With appropriate patches, a 1.2.13 kernel e.g. is a very stable and proven environment, and is in some places still in use today. It probably can run for years without a shutdown.

Most applications run without changes on this old kernel (on any kernel, in fact).

Of course, the old kernels do have some drawbacks: They don't support ELF (but there are patches); they don't support as much hardware as newer kernels (however, they will probably run on newer systems; I currently have 1.0.9 on my P-133 notebook); they may have bugs and security holes that were fixed later; they don't have the performance of newer kernels (this may be insignificant for most applications).

Before version 1.0

In January 1999 I built a PC from junk parts and installed LST 1.7 (from late 1993) on it. So hardware and software were about the same age ;-) The hardware consists of a 386 SX-33 CPU, 16 MB RAM, NE2000 clone network card, 520 MB IDE harddisk, 8bit Graphics card, 3.5" floppy, and the usual ports.

The installation routine of this distribution is, unlike LST 1.8, still purely text based. It offers 6 methods of installation: From floppy, harddisk, CD-ROM (at that time only two CD drives besides SCSI were supported), via NFS, via SLIP and via FTP.

I used NFS to install it. The process was quite long because of the slowness of the machine and the interactive installation of many series. The result was a complete system which uses about 200 MB on the harddisk:

Small deficiencies:

The first program I installed additionally was... bzip2. It compiled and ran without any problems. I needed it to unpack a kernel archive.

Then I attempted to compile various kernels (0.10, 0.97, 0.99, and 1.0.9) Until now I had no success with 0.10 and 0.99 but I'll try again soon. 1.0.9 compiled without any difficulties. 0.97 was more difficult, but finally I succeeded. Several small changes in the kernel sources were necessary. This was due to changes in the tools (make, gcc) as well as changes in the gcc include files.

Next I tried to compile SSH 1.2.26. After small changes by hand I succeeded. But at first only the client ran. sshd did hang for unknown reasons during connection establishment. After half a night of debugging, trial and error I found the problem. I linked the shadow library to sshd, and then it worked flawlessly.

Next I compiled another important program, Python. After several hours the compilation was finished - and it worked.

After I replaced the graphics card by another network card, I tried to use the system as a router. This problem had to be solved in two steps. Step 1 was to have the kernel recognize the second network card. The first was already detected automatically by the NE2000 driver. I could have given the kernel a parameter "ether=" at the boot prompt to make it find the second card. But LILO didn't support the keyword "append" then. So I followed a hint in the NET2-HOWTO and made a small change in drivers/net/Space.c. The second step then merely consisted of configuring interface and route, after installation of the new kernel.

NFS and SSH worked via the router, although with poor performance. This may be more a problem of the slow hardware than a kernel problem. A much worse problem was that the routing stopped under certain unknown circumstances. This could only be cured by making a new connection, and it happened much too often for the router to be useful. So I'll have no other option than to try a DOS based router or Linux 2.x as an alternative.

The stability of the system is - as with all 0.99 series kernels - impressive. I'm sure it could be killed by network attacks, but it is probably unkillable with normal use.

The 1.0 kernel

The last official version was 1.0.9. In May 1998 I installed the LST 1.8 distribution back from '94 on my notebook. It features a heavily patched 1.0.9 kernel. Installation from CD-ROM was impossible because that kernel didn't support IDE CD-ROMs yet. At that time, they simply didn't exist, but unfortunately they have spread since then like the plague...

So I copied the distribution to the hard disk and installed from there. This was no problem since the complete compressed distribution is less than 78 MB. After installation, with TinyX and XFree 2.0, it uses 220 MB of disk space. It uses less than 4 MB of RAM, and about 6 MB after starting the VGA X server. Yes, X works, although the very new Trident chipset of this notebook is, of course, not supported. But standard VGA modes always work.

Apart from the missing IDE CD-ROM support, there are other drawbacks. PCMCIA is probably not supported, so no networking on the notebook. But there are PCMCIA patches from this time. If I had the time I could try to get it to work.

No APM support and no support for my graphics chipset (but I could try to get the newest X11 to work).

Several other pieces of hardware are not supported and won't ever be: PCI cards; parallel port devices (other than printers); ISDN devices; ...


Software Index | Home Page
Created by hjb
Updated 1999-10-09