Bekanntlich ist RPCEmu der beste frei verfügbare Emulator für IOMD-basierte Hardware (vulgo Risc PC und A7000), den es für die Geschmacksrichtung „Linux“ gibt. Während es für die Windows-User ein „ready-to-install“-Paket gibt und auch ein ZIP-Paket, das man einfach irgendwo auf die Platte extrahiert, heißt es bei Linux traditionell „compile from source“.
Ich will hier für eine aktuelle Ubuntu-Installation kurz die Schritte skizzieren, die einen zu einem funktionsfähigen RPCEmu mit Netzwerkunterstützung führen – auf der RPCEmu-Seite sind die Hinweise doch etwas verstreut, und einiges muss man sich zusammenreimen.
Das verwendete RISC OS ist natürlich RISC OS 5 von RISC OS Open Ltd.
RPCEmu Quellcode beschaffen
Hier gibt es zwei Möglichkeiten: Sourcecodearchiv von der RPCEmu-Seite herunterladen, oder per Mercurial direkt das Source-Repository anzapfen. Ersteres ist etwas komfortabler, weil im Archiv bereits viele Dinge unabhängig vom Quellcode an der richtigen Stelle liegen. Will man letzteres tun, muss man Mercurial („hg“) auf die Kiste bekommen – der Paketmanager hält hier alles notwendige bereit (einfach „sudo apt-get install mercurial“ ausführen geht am schnellsten). Auschecken des tip-Standes (anderswo „Head“, „Trunk“ oder „Master“ genannt) ist simpel:
hg clone http://www.home.marutan.net/hg/rpcemu rpcemu
Egal für welchen Weg man sich entscheidet, man sollte am Ende ein „rpcemu“-Verzeichnis auf der Platte liegen haben, in dem sich der Quellcode im Verzeichnis src befindet.
RPCEmu compilieren
Zunächst sollte man sein Linux mit den notwendigen Libraries ausstatten. Gott sei Dank sind die Abhängigkeiten hier überschaubar: es braucht nur Allegro (mindestens Version 4.2, aber nicht Version 5; derzeit aktuell ist 4.4) und pthread (aka libpthread). Letzteres war bei mir schon installiert, ersteres kam über „sudo apt-get install liballegro4-dev“.
Über das config-Skript parametriert man alle notwendigen Dinge, vor allem aktiviert man den dynamischen Recompiler (vulgo „JIT“), weil sonst die Emulation doch eher gemächlich läuft: ./configure –enable-dynarec
Danach kommt dann der eigentliche compile-Vorgang, den man wie üblich per „make“ startet. Resultat ist ein Binary namens „rpcemu“, das theoretisch ausführbar wäre – aber es fehlt ja noch ein bisserl was.
RPCEmu vorbereiten
Hat man sich bei der Quellcode-Beschaffung vom Mercurial-Repository bedient, muss man etwas mehr tun. Dort, wo das rpcemu-Binary nun liegt, erzeugt man zwei Verzeichnisse: hostfs (dort liegt später das RISC OS-Dateisystem) und poduleroms (dort kommen RISC OS-Module rein, die RPCEmu dann automatisch ins ROM integriert, und zwar über den Podule-ROM-Mechanismus – genau so, wie z.B. bei physischer RISC OS-Hardware die Podules (Netzwerk, SCSI, IDE, USB…) ihre Treiber ins RISC OS einbinden). Ins poduleroms-Verzeichnis kopiert man jetzt die drei Dateien hostfs,ffa hostfsfiler,ffa SyncClock,ffa aus riscos-progs/HostFS und riscos-progs/SyncClock. Damit steht nun HostFS zum Booten zur Verfügung, und die RISC OS-Uhr wird regelmäßig mit der Uhr des Hostsystems abgeglichen.
Jetzt gilt es, die Konfiguration anzupassen. Das passiert in der Datei rpc.cfg. Damit unfallfrei gebootet werden kann, muss unbedingt
model = RPCSA
in dieser Datei stehen, da der „Dynamic Recompiler“ zwingend die StrongARM-Emulation voraussetzt, ansonsten kommt es zu bösen Instabilitäten. Um für die spätere Netzwerkkonfiguration schon gerüstet zu sein, kann man hier schon die Zeile
username = <your standard username>
eintragen – den Platzhalter mit dem Benutzer ersetzen, der den Emulator später ausführen wird.
Alle anderen Konfigurationen – Sound aktiv oder nicht, wieviel RAM und VRAM etc. – kann man später bequem über das RPCEmu-Menü setzen (Strg+Ende blendet das Menü ein).
RISC OS installieren
Letzter Schritt ist die Installation von RISC OS. Seit RISC OS 3.5 ist RISC OS ja quasi zweigeteilt: einmal das ROM, und einmal die „disc based components“, auch gerne mal vereinfacht „!Boot“ oder „Bootstruktur“ genannt.
Das ROM bekommt man natürlich von RISC OS Open Ltd. https://www.riscosopen.org/content/downloads/riscpc – abenteuerlustige Naturen verwenden einen 5.21-Nightly Build, eher konservative Nutzer begnügen sich mit der als stabil gekennzeichneten Version 5.20. Beiden gemeinsam ist, dass man in den Tiefen des jeweiligen ZIP-Archivs fündig wird: soft/!Boot/Choices/Boot/PreDesk/!!SoftLoad/riscos ist die Datei der Wahl, die ins Verzeichnis roms des RPCEmu kopiert werden muss.
Passend zur ROM-Version braucht man jetzt noch das „HardDisc4“-Disk-Image. Hier https://www.riscosopen.org/content/downloads/common kann man das runterladen unter „Disc based components“. Um es nochmal zu wiederholen, weil Fehler hier oft sehr merkwürdige Auswirkungen haben – wichtig: passend zur ROM-Version! Ich empfehle die „self-extracting archives“, dann braucht man nicht extra noch einen Entpacker. Die Datei kopiert man nach „hostfs“, damit sie von innerhalb RISC OS zur Verfügung steht.
Jetzt ist es endlich soweit, und RPCEmu kann gestartet werden: einfach rpcemu ausführen. Standardmäßig ist im mitgelieferten cmos.ram ADFS als Bootdateisystem konfiguriert, deshalb kommt man nicht mal in den Desktop. Also schnell von der Kommandozeile in RISC OS konfigurieren:
*co. filesystem HostFS
Dann einfach
*desktop
tippen und man kommt in die graphische Oberfläche. Hier auf das HostFS-Laufwerksitem clicken, das vorher dort platzierte HardDisc4-File mit dem Filetype „Utility“ ausstatten, doppelclicken und warten bis sich alles entpackt hat. Es entsteht ein Verzeichnis „HardDisc4“ – den Inhalt dieses Verzeichnisses ins Root verschieben.
Netzwerk einrichten
Die Kür ist die Netzwerkinstallation. Die soll hier gar nicht im Detail behandelt werden, denn die RPCEmu-Doku ist hier sehr gut und erlaubt ein schrittweises Einrichten.
In Kurzform:
- rpcemu künftig per sudo starten
- per iptables und sysctl das Tunnelling konfigurieren
- im RPCEmu-Menü das Netzwerk aktivieren (Strg+Ende, Settings -> Networking -> IP-Tunneling)
- RISC OS-Netzwerktreiber installieren
- RISC OS-TCP/IP-Konfiguration durchführen
Quellen
RPCEmu-Homepage http://www.marutan.net/rpcemu/
Linux compile from source http://www.marutan.net/rpcemu/linuxcompile.html
RPCEmu networking http://www.marutan.net/rpcemu/manual/network.html
Linux networking: binary config http://www.marutan.net/rpcemu/manual/net-lin.html
Linux networking: IP tunnelling http://www.marutan.net/rpcemu/manual/net-lin-tun.html
Networking: RISC OS network driver install http://www.marutan.net/rpcemu/manual/net-ro.html
Networking: RISC OS configuration for IP tunnelling http://www.marutan.net/rpcemu/manual/net-ro-tun.html
Der Expertentipp zum Abschluss
Wer wie ich mal probeweise die Linux-Maschine virtuell eingerichtet hat (z.B. via VirtualBox), sollte darauf achten, im BIOS die Virtualisierungsoptionen einzuschalten (VT-x, Intel VT, AMD-V oder ähnlich). Sonst ist die Performance eher unterirdisch, und man kann auch auf 64bit-Systemen nur 32bit-Gastsysteme betreiben.