Published at 2023-11-22T12:38:12+01:00
Ein Unix auf einer 8-Bit-CPU und in weniger als 1 Mbyte Speicher
Category: Retrocomputing
Tags: z80, NC100, FUZIX
Author: Reiko Kaps
Vor gut 9 Jahren hat der bekannte Linux-Entwickler Alan Cox unter dem
Motto “Because Small Is Beautiful” das FUZIX-Projekt
gestartet.
https://github.com/EtchedPixels/FUZIX
FUZIX setzt seinerseits auf Vorarbeiten von
UZI auf.
https://github.com/chettrick/uzics
Für Cox verschmelzen in FUZIX verschiedene UZI-Forks “zu einer
halbwegs kohärenten Plattform, die anschließend von V7 auf einen Bereich
zwischen SYS3 und SYS5.x erweitert wurde - einige POSIX-Elemente kommen
noch als Zugabe drauf. Zusätzlich wurden noch einige Tricks und Lehren
aus der Entwicklung von ELKS und OMU eingebaut.
https://github.com/jbruchon/elks
http://www.pix.net/mirrored/discordia.org.uk/~steve/omu.html
FUZIX unterstützt eine Reihe von alten und neuen Computer(systemen).
Dazu zählen twa der Amstrad NC100 und der Sinclair ZX Spectrum 128K -
weitere finden sich in der FUZIX-Dokumentation
https://github.com/EtchedPixels/FUZIX/blob/master/docs/Platforms.md
Zudem wird an einigen anderen Plattformen gerade gearbeitet.
https://github.com/EtchedPixels/FUZIX/blob/master/docs/DevPlatforms.md
Ich selbst besitze seit einigen Jahren den Amstrad NC100, den ich
mittels SRAM-PCMCIA-Karten auf 1 MByte RAM erweitert habe. Damit wäre
es laut FUZIX-Dokumentation möglich, das OS auf dem Amstrad laufen zu
lassen. Allerdings müssen davor noch einige Vorarbeiten erledigt
werden:
Zuerst benötigen wir eine brauchbare Build-Umgebung für FUZIX. Alan Cox
beschreibt im INSTALL-File das nur knapp:
https://github.com/EtchedPixels/FUZIX/blob/master/INSTALL
Daher habe ich mich entschlossen es hier ausführlicher und
nachvollziehbar dazustellen: Empfehlenswert ist ein frisch
installiertes Debian- oder Ubuntu-Linux - vorzugsweise als virtuelle
Maschine oder Container. Letzteres hat schlicht den Vorteil, dass man
Fehler einfacher findet und erneute Versuche leichter umzusetzen sind.
Alternativ kann man auf die Container-Technik Docker dabei setzen. Sie
läuft praktisch auf allen aktuellen Desktop-Betriebsystemen und ist
dabei besonders einfach: Sämtliche Vorgaben und Einstellungen lassen
sich vorab in einen “Dockerfile” sammeln. Anschließend baut Docker
daraus dann ein Container-Image, über das man dann recht einfach FUZIX
bauen (lassen) kann. Wie man Docker auf dem eigenen Betriebsystem
installiert, beschreiben die Entwickler ausführlich:
https://docs.docker.com/engine/install/
Anschließend lädt man sich mein Dockerfile
auf den eigenen Rechner oder klont alternativ das
gesamte Repo
https://codeberg.org/reik_kaps/fuzix-builder/src/branch/main/Dockerfile
https://codeberg.org/reik_kaps/fuzix-builder
In dem neuen Verzeichnis führt man nun folgende Docker-Kommandos aus:
{body}gt; docker build
Der Befehl erzeugt aus dem Dockerfile ein Docker-Image, das die
FUZIX-Build-Umgebung sowie einige zusätzliche Skripte enthält. Dazu
zählt das Skript build.sh, über das sich die FUZIX-Sourcen lokal klonen
lassen und das den eigentlichen Build teilweise oder vollständig
automatisiert:
https://codeberg.org/reik_kaps/fuzix-builder/src/branch/main/build.sh
Das Skript schreibt auch im Makefile die Zielplattform auf
“amstardnc/nc100” um, übersetzt dann den FUZIX-Kernel udn erzeugt die
Disk-Images. Über den Schalter info liefert es einige, weitere
Hinweise zu Dateipfaden und Programm-Parametern.
Ist der Build ohne schwerwiegende Fehler nach einigen Stunden zu einem
Ende gekommen, lässt sich FUZIX bereits testen - falls man den Emulator
nc100em übersetzt und ggf. installiert hat:
Zuerst muss man das FUZIX-PCMCIA-Card-Image
($PWD/Images/amstradnc/nc100/pcmcia.img) nach $HOME/nc100/nc100.card
kopieren, anschließend ruft man die Kommandozeile
{body}gt; dnc100em -p $PWD/Kernel/platform-amstradnc/nc100/nc100emu.bin
auf, dnc100em muss dabei im Suchpfad liegen! Als Ergebniss sollte nun
FUZIX starten, was in etwa so wie in diesem Video aussehen sollte:
Nun kann man sich an die FUZIX-Installation auf der tatsächlichen
Hardware machen. Bislang gibt es aber noch Hürden, die noch nicht
genommen wurden. Dazu gehört die Verbereitung der SRAM-Karte, was ich
aber in einem weiteren Beitrag beschreiben werde.