Einleitung
Im zweiten Teil meiner Artikelserie geht es um die quasi prähistorische Version 1.1.2, der ältesten heute noch existierenden Linux-Distribution Slackware.
Slackware 1.1.2 erschien am 15.Februar 1994. Ausgestattet war diese Distribution mit Linux 0.99.15, GCC 2.5.8, und XFree86 2.0. Als Windowmanager wurden “fvwm” in der Version 1.2, sowie SUNs Desktopversuch OpenWindows mitgeliefert.
Die mitgelieferte Softwareausstattung kann man also ohne Übertreibung als „prähistorisch“ bezeichnen.
Für mich war diese Version die erste Bekanntschaft mit Linux und Unix überhaupt. Ich spare mir an dieser Stelle die Geschichte, wie ich damals an die Installations-CD mit Slackware kam. Jedenfalls nimmt die Slackware-CD immer noch einen Ehrenplatz in meiner CD-Sammlung ein. Witzigerweise war die Installation unter QEMU auch das erste Mal, dass ich diese Slackware-Version überhaupt sauber zum Laufen bekommen habe. Als ich mir nämlich die CD damals kaufte, hatte ich gerade einmal einen Rechner mit einer 386SX25-CPU, 3MB RAM und einer 40MB Festplatte. Da ich im Leben noch nie etwas von Swap-Partitionen gehört hatte, ging mir beim Rumspielen mit dem System immer der Speicher aus, weshalb es damals auch bei einigen wenigen Versuchen blieb. Die ersten richtigen Schritte mit Linux machte ich erst zwei Jahre später mit einem 486DX50MHz, 8MB RAM, einer 120MB Festplatte und DLD (Deutsche Linux Distribution).
Die Installation
Die Installation dieser alten Slackware-Version stellte mich vor einige besondere Herausforderungen:
Linux lernte erst mit Version 1.2, mit IDE-CDROM-Laufwerken umzugehen. Davor konnte es nur mit einigen proprietären Laufwerkscontrollern und den passenden Laufwerken (Das bekannteste Laufwerk war damals ein Single-Speed-Laufwerk von Mitsumi) umgehen. Ein direkter Zugriff auf das CD-Image während der Installation war also nicht möglich.
Mir blieben also nur zwei Wege, die Installation durchzuführen:
- Installation über Disketten-Images
- Installation über ein gemountetes Installationsverzeichnis
Den ersten Weg konnte ich mir gleich sparen, da außer der „root“- und „boot“-Diskette (Ältere Linux-Benutzer dürften sich noch erinnern), keine weiteren Disk-Images vorlagen. Ich hätte also alle Dateien der einzelnen Verzeichnisse auf dutzende Disketten verteilen müssen und dazu hatte ich einfach keine Lust.
Als zweite Möglichkeit bot sich die Installation per gemounteten Installationsverzeichnis an. Der Installer von Slackware bietet seit Alters her die Möglichkeit an, die Installationsdateien aus einem beliebigen Verzeichnis zu holen. Ich musste also nur einen Weg finden die Dateien auf eine, von Slackware lesbare, Partition zu packen.
Um dieses zu ermöglichen, musste ich folgendermaßen vorgehen:
- Erstellen eines zusätzlichen QEMU-Festplatten-Images mit ca. 100MB.
- Einbinden dieses Images (neben dem Image des später installierten System) in QEMU.
- Partitionieren und formatieren der neuen Partition unter dem virtualisierten Slackware mit dem ext2-Dateisystem.
- Mounten des QEMU-Images bzw. der ext2-Partition innerhalb meines Host-Systems, mit Hilfe von des Kernelmoduls „nbd“ und „qemu-nbd“.
- Kopieren aller Installationsdateien von Slackware auf die Partition.
- Einbinden der Partition in das virtualisierte Slackware.
- Auswählen des Verzeichnisses im Installer.
Dieser Weg funktionierte deshalb, weil sich das ext2-Dateisystem in all den Jahren kaum verändert hat bzw. moderne Versionen des Dateisystems einen Kompatibilitätsmodus für ältere Versionen besitzen.
Jedenfalls konnte ich am Ende innerhalb der virtuellen Maschine, problemlos auf die Installationsdateien von Slackware zugreifen.
Alte Dateisysteme von Linux
- Minix – Dieses war das ursprüngliche Dateisystem bei der Entwicklung von Linux. Es wurde 1:1 von Minix übernommen, wurde aber recht schnell, wegen zu großer Beschränkungen, gegen weiterentwickelte Dateisysteme ersetzt. Das Minix-Dateisystem wurde aber noch einige Jahre auf den Installationsdisketten diverser Linux-Distributionen benutzt (z.B. SuSE).
- Extfs – Der Vorgänger des bekannten ext2fs. Das Dateisystem war im Grund nur eine leicht verbesserte Version des Minix-Dateisystems.
- Xiafs – War eine verbesserte Variante des minix-Dateisystems und war bis zu einem bestimmten Zeitpunkt stabiler, schneller und platzsparender als das bekannte ext2-Dateisystem. Größtes Manko im Vergleich zu ext2, war das Fehlen eines “Dirty”-Bits um ein nicht korrekt ausgehängtes Dateisystem zu markieren. So musste ein Dateisystemcheck immer von Hand ausgeführt werden. Zudem entwickelte sich ext2 damals rasant weiter, sodass Xiafs ab einem bestimmten Zeitpunkt nicht mehr konkurrenzfähig war.
Das zweite Problem ergab sich dadurch, dass das virtualisierte Slackware beim Schreiben auf die Festplatte regelmäßig abstürzte. Dies hing meines Wissens vor allem mit dem Caching-Verhalten von QEMU zusammen. Als ich den Festplattencache von QEMU per Option „-drive slackware112.img,cache=writeback“ veränderte, lief die Installation fehlerfrei durch (Auch wenn sich das System beim Schreiben größerer Datenmengen immer noch eine kleine Denkpause gönnt).
Die Konfiguration
Nach der Installation fing die eigentliche Arbeit an:
So gab es damals nicht ohne Weiteres eine deutsche Tastaturbelegung. Diese musste von Hand nachgeladen bzw. in die Datei „rc.local“ eingebunden werden.
Auch die Inbetriebnahme der Netzwerkkarte gestaltete sich etwas schwieriger, da Plug’n Play und PCI damals noch nicht existierten. Zum Glück erlaubt QEMU auch das Emulieren einer ISA-Netzwerkkarte. Ich musste nur die ISA-Emulation von QEMU über den Parameter “-M isapc” aktivieren. Leider musste ich noch zusätzlich im Kernelquellcode des NE2000-Treibers ein paar Stellen löschen, da sich der Treiber ansonsten immer auf IRQ4 (QEMU benutzt IRQ9) konfigurierte, obwohl in der Kernel-Config-Datei der passende Parameter gesetzt war.
Nachdem diese Hürde aber genommen war, funktionierte die Netzwerkverbindung unter dem emulierten Slackware problemlos.
Die Kompilierung des angepassten Kernels dauerte übrigens weniger als eine Minute (Siehe Video am Ende des Artikels). Ich habe in der Konfiguration alles entfernt, was von der emulierten Hardware nicht unterstützt wird (SCSI, CD-ROM-Controller, usw.). Da es damals nur sehr wenige Treiber im Kernel gab,dauert das Kompilieren eines komplett konfigurierten Kernels aber auch nicht viel länger.
Linux 0.99.15 wurde im Dezember 1993 freigegeben. Die Version 1.0 folgte dann im März 1994.
Als größtes Problem sollte sich die Einrichtung des X-Servers erweisen. Da sich die Syntax der X-Konfigurationsdatei in den letzten 17 Jahren sehr stark verändert hat, musste ich erst einmal mein Wissen über diese alte X11-Version auffrischen. So musste man sich damals noch mit den Modeline-Einträgen, zur Programmierung der passenden Auflösung und Bildwiederholfrequenzen, herumplagen. Unter SuSE 6.0 stellte das alles kein Problem dar, da es 1998 schon einige gute Tools zur Erstellung der Konfigurationsdatei gab. Durch die freie Programmierung des Monitors musste man damals sehr vorsichtig sein um seinen Monitor nicht über den Jordan zu schicken. Nicht wenige Benutzer sahen nach einer Fehlkonfiguration schwarzen Rauch aus den Lüftungsschlitzen aufsteigen (Weil sie z.B. den Monitor außerhalb seiner Spezifikation betrieben).
Unter QEMU kann so etwas natürlich nicht passieren. Hier kann man im Prinzip Fantasiewerte in einem Modeline-Eintrag angeben. Hauptsache die Felder mit den der Auflösung sind richtig eingetragen.
Auch musste ich explizit einen bestimmten (eigentlich falschen) „Cirrus Logic“-Chip angeben, um den X-Server überhaupt zum Laufen zu bekommen. Der X-Server kannte nämlich die ID des emulierten Grafikchips noch nicht (Der “verbaute” Grafikchip erschien erst ein paar Jahre später auf dem Markt).
Die Geschwindigkeit der Grafikdarstellung bei den ersten Versuchen sehr schlecht (Man konnte den einzelnen Elementen beim Zeichnen zuschauen), nachdem ich aber QEMU das erste Mal mit der ISA-Emulation gestartet hatte, war die Geschwindigkeit aber akzeptabel. Es reichte danach problemlos zum Testen der diversen Programme.
Laufender Betrieb
Tja, was ist mit so einem alten System überhaupt noch möglich?
Man kann sich daran ergötzen ein Linux-System zu haben, dass innerhalb weniger Sekunden betriebsbereit ist. So dauert es gerade einmal 11s bis der grafische Login-Manager erscheint. Der Start von “fvwm” dauert weniger als 1s.
Richtiges Arbeiten, ist mit dieser alten Slackware-Version nicht mehr möglich. Dazu fehlen einfach die Programme bzw. die vorhandenen Programme sind einfach schon zu alt.
Ich habe z.B. versucht eine alte Version des Mosaic Browsers zum Laufen zu bekommen, was aber aus verschiedenen Gründen fehlschlug (Fehlende Motif-Bibliotheken, andere fehlende Bibliotheken, generelle Bugs beim Starten). Jedenfalls wollte Mosaic nicht funktionieren.
Im Grund sind als Produktivprogramme nur Emacs (Im Textmodus), TeX (ohne LaTeX), GCC, diverse andere Editoren und einige kleinere grafische Tools vorhanden. Also nichts, womit sich ein moderner Computerbenutzer überhaupt anfreunden würde.
Fazit
Im Vergleich zu heutigen Linux-Distributionen wirkt die alte Slackware-Installation sehr unfertig und kantig. Es gibt so gut wie keine Automatismen oder Komfortfunktionen. Das man z.B.nach der Installation nur eine englische Tastaturbelegung hat, ist noch eines der kleineren Übel. Die größte Hürde wird für die meisten die Einrichtung eines funktionierenden Xservers sein gewesen.
Linux war damals noch ein System für Menschen, die sich schon mit Unix auskannten und daheim auch ein “echtes” Unix haben wollten und/oder gerne an ihrem Computer experimentierten und etwas Neues kennenlernen wollten. Es war definitiv nicht für Leute gedacht, die ihren Computer nur einfach benutzen wollten. Ohne eine gedruckte Dokumentation lief also fast gar nichts, schon alleine aus dem Grund, dass es damals keine bezahlbaren Zugänge zum Internet gab.
Das war auch der Grund warum z.B. SuSE Linux in Deutschland recht schnell zum Marktführer bei den Linux-Distributionen wurde. Man bekam sehr gute gedruckte Handbücher und die Vorkonfiguration des gesamten Systems war auch deutlich besser als beim reinen Slackware (Auf dem SuSE Linux in den ersten Versionen basierte).
Ich habe mir mal den Spaß erlaubt und ein Archiv mit den QEMU-Image-Dateien des installierten Systems hochgeladen. Um das System in Betrieb zu nehmen, muss man nur QEMU installieren, das Archiv entpacken und über Befehl „start-slackware.sh“ ausführen.
Die Installation startet direkt zum einem grafischen Login durch. Der Standardbenutzer heißt „gonzo“, wobei man beachten muss, dass es im Login-Manager keine deutsche Tastenbelegung gibt. Der Benutzer „gonzo“ startet den Fenstermanager “fvwm”. Es sind noch die Benutzer „satan“ (Verzeichnis „/home/hell“) und „snake“ (Verzeichnis „/home/pit“) vorhanden, die aber komplett unkonfiguriert sind und den Fenstermanager “twm” starten. Alle Benutzer (inkl. „root“) haben kein gesetztes Passwort.
Um den Rechner sauber herunterzufahren, muss man in einem geöffneten Terminal den Befehl su -c "/sbin/shutdown -h now"
bzw. su -c "/sbin/reboot"
ausführen. Beim Herunterfahren, Neustarten oder Ausloggen aus X11 (Wenn man den Textmodus benutzt und X11 erst später startet) gibt es leider einen Bug, welcher dazu führt, dass man die Text-Meldungen nicht mehr sehen kann. Man sollte deshalb ungefähr eine Minute warten, bis man das QEMU-Fenster schließt.
Hinweis
Um wieder dauerhaft den Textmodus einzustellen, muss man in der Datei „/etc/inittab“ das Standard-Runlevel von 6 auf 5 ändern (Zeile „id:6:initdefault“). Im Text-Modus-Runlevel gibt es den oben beschriebenen Bug übrigens nicht. Dort funktioniert alles wie gewohnt.
Wer gerne mit Linux experimentiert, wird mit dem alten System seine wahre Freude haben. Vor allem kann man sehr deutlich sehen, wie sich Linux in den letzten 17 Jahren weiterentwickelt hat.
Am Ende möchte ich noch einen Link zu einer Webseite anbieten, welcher einige sehr alte Linux-Distributionen zum Download anbietet:
http://www.oldlinux.org/Linux.old/
Auf dieser Seite kann z.B. eine Version von DLD, welche damals die beste deutsche Übersetzung aller Distributionen anbot, finden. Auch findet man dort ein VMWare-Image einer Linux-Installation (Distribution ist in diesem Fall zu hoch gegriffen), die auf der Kernelversion 0.11 basiert. Diese Version erschien am 6. Dezember 1991 und stellte die erste Linux-Version dar, die unter sich selbst kompiliert werden konnte (Bis zu dieser Version musste Linux unter Minix kompiliert werden). Linux war zu diesem Zeitpunkt nicht einmal drei Monate alt!
Video und Gallerie von Slackware 1.1.2
Zum Schluss die übliche Gallerie und als kleines Schmankerl ein Video (Ogg Theora-Format), welches die Kompilierung von Linux 0.99.15 im virtualisierten Slackware zeigt:
Video – Kompilieren des Kernels unter Slackware 1.1.2