FUZIX: Unix für 8-Bit-CPUs, erster Teil

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

images/fuzix-nc100em.png

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:

FUZIX from Scratch

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:

https://files.mastodon.social/media_attachments/files/109/904/156/916/544/734/original/202c2435e887d9da.mp4

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.