Mac OS X in Infinite Mac ausführen
(blog.persistent.info)- Infinite Mac kann nun frühe Versionen von Mac OS X im Browser ausführen; derzeit werden 10.1 und 10.3 am besten unterstützt
- Nachdem der bisherige Weg über DingusPPC an Kernel Panics und Grafikproblemen scheiterte, wechselte die Richtung zu einem PearPC-Port, der ursprünglich für die Emulation von Mac OS X Anfang der 2000er entwickelt wurde
- Die Performance ist weiterhin langsam: Bis Mac OS X 10.2 vollständig nutzbar ist, dauert es fast 2 Minuten, und Optimierungen konnten die Zeit nur um etwa 15 Sekunden verkürzen
- Ein Bug, bei dem die Prüfung des
FP-Bits bei der PowerPC-Gleitkommaverarbeitung fehlte, verursachte Probleme beim Rendering des Docks und bei Finder-Fenstern; die Behebung verbesserte auch die Stabilität von DingusPPC - Infinite HD wurde neu zusammengestellt, um Indie-Software und Developer-CD-Tools aus der frühen Mac-OS-X-Ära aufzunehmen; Unterschiede zwischen HFS und HFS+ sowie die Kompatibilität alter
.dmg-Dateien bleiben jedoch Einschränkungen
Frühes Mac OS X im Browser ausführen
- Infinite Mac kann jetzt frühes Mac OS X ausführen
- Mac OS X 10.1 und Mac OS X 10.3 sind die am besten unterstützten Versionen
- Die Ausführung ist nicht schnell, kommt aber dem Gefühl nahe, dass die damalige echte Hardware auch nicht wesentlich besser war
- Auch Infinite HD, das passende Software aus der jeweiligen Zeit mitliefert, wurde mit Fokus auf Indie-Software aus der frühen Mac-OS-X-Ära neu zusammengestellt
Kurswechsel zum PearPC-Port
- Zunächst sollte DingusPPC genutzt werden, um Mac OS X in Infinite Mac auszuführen, doch etwa im vergangenen Sommer kam man wegen Kernel Panics und Grafikfehlern nicht weiter
- Man versuchte, den Problembereich mit einem deterministischen Ausführungsmodus einzugrenzen, doch der nächste Schritt war nicht klar
- Als Alternative wurde PearPC gewählt
- PearPC wurde Anfang der 2000er entwickelt, um Mac OS X auf x86-Windows- und Linux-Rechnern zu emulieren
- Nach dem Wechsel zu Intel ließ das Interesse nach, und die Codebasis galt praktisch als stehen geblieben
- Dass kanjitalk755 bereits einen experimentellen PearPC-Branch erstellt hatte, der auf modernem macOS gebaut und ausgeführt werden konnte, wurde zum Ausgangspunkt des Ports
- PearPC war eine Multi-Plattform-Codebasis und nutzte komplex zu portierende Konzepte wie Threads nicht in großem Umfang, wodurch es sich leichter nach WebAssembly/Emscripten und in die Infinite-Mac-Runtime übertragen ließ
- Innerhalb einiger Tage wurden Build, Videoausgabe, Laden von Disk-Images sowie Maus- und Tastatureingaben angebunden
- Dadurch ließ sich Mac OS X 10.2 im Browser letztlich stabiler ausführen als zuvor
Performance-Optimierung und verbleibende Engpässe
- PearPC führte Mac OS X 10.2 stabiler aus, fühlte sich aber langsamer an als DingusPPC
- Der Benchmark-Harness von DingusPPC wurde auf PearPC übertragen, und frühere Optimierungen an DingusPPC wurden auch auf PearPC erneut angewendet
- Beide Emulatoren sind reine Interpreter auf Basis von Lookup-Tabellen, daher war die Arbeit vergleichsweise direkt
- Bei der Bootzeit von Mac OS X 10.2 wurden etwa 15 Sekunden eingespart
- Selbst nach der Optimierung dauert es fast 2 Minuten, bis das System vollständig nutzbar ist
- In der Infinite-Mac-UI wurde ein Hinweis ergänzt, dass der Start von Mac OS X langsam sein kann
- Der größte Engpass ist das Fehlen eines MMU-Caches in PearPC
- Jeder Load/Store durchläuft eine komplexe Adressberechnung und ist entsprechend teuer
- DingusPPC verfügt über einen ausgereifteren hierarchischen Cache, der effektiv zu sein scheint
- PearPC kann beim Ausführen von 10.2 bis 10.4 stabiler sein als DingusPPC, die Codebasis ist jedoch weniger prinzipientreu
- Es verwendet eigene Firmware und einen eigenen Videotreiber
- Es implementiert nur einen Teil der für Mac OS X nötigen PowerPC-Instruktionen
- Langfristig besteht die Hoffnung, dass DingusPPC zur schnellen, stabilen und korrekten Option wird
FP-Bit-Prüfung und Rendering-Bug
- Während im PearPC-Interpreter der Ansatz einer „einheitlichen Decoding-Tabelle“ auf Opcode-Familien angewendet wurde, entstand bei Änderungen an Gleitkommaoperationen eine Regression
- Es kam zu Rendering-Glitches im Dock
- Finder-Fenster öffneten sich nicht
- Der Dispatch der Opcode-Gruppen 59 und 63 durfte nicht nur einen einfachen Lookup durchführen, sondern musste zuerst das
FP-Bit im Machine State Register prüfen- Ist das
FP-Bit nicht gesetzt, wird eine „floating point unavailable“-Exception ausgelöst
- Ist das
- Die in damaligen Macs verwendeten PowerPC-Chips hatten zwar eine FPU, doch während des Starts von Mac OS X trat diese Exception häufig auf
- Im damaligen xnu-Kernel-Source finden sich die Stellen, an denen das
FP-Bit gelöscht wird, sowie der Exception-Handler - Es scheint sich um eine Optimierung zu handeln, um beim Kontextwechsel das Speichern und Wiederherstellen der FPU-Register zu vermeiden
- Im damaligen xnu-Kernel-Source finden sich die Stellen, an denen das
- Nachdem dieselbe
FP-Prüfung auch im optimierten Dispatch-Code implementiert wurde, verschwanden die Rendering-Probleme - Derselbe Bug war auch in DingusPPC noch vorhanden
- DingusPPC prüfte das
FP-Bit nicht und ließ Gleitkomma-Instruktionen immer passieren - Nach einem schnellen Fix, der die Exception auslöste, verschwanden die Rendering-Glitches von Mac OS X
- Später führten die offizielle Implementierung und eine Korrektur zur Vermeidung von Performance-Einbußen zu deutlich besserer Stabilität von DingusPPC
- DingusPPC prüfte das
- Durch die Kombination beider Emulatoren wurde der Bereich ausführbarer früher Mac-OS-X-Versionen größer
- DingusPPC kann 10.1 stabil ausführen
- PearPC kann 10.1 nicht stabil ausführen
- 10.0 bleibt weiterhin instabil, und die Public Beta verursacht sofort einen Kernel Panic
Neuaufbau von Infinite HD
- Einer der Reize von Infinite Mac ist, dass Infinite HD mit passender Software aus der jeweiligen Ära mitgemountet wird
- Passend zur Mac-OS-X-Unterstützung wurde zusätzlich zu klassischen Mac-Apps der 80er und 90er eine eigene Version mit Software aus der frühen Mac-OS-X-Zeit erstellt
- Neben persönlich bevorzugten Apps wurde die Liste auch anhand von Vorschlägen erweitert
- Die Disk-Images werden durch eine Erweiterung der bestehenden Automatisierung erzeugt
- Da in der frühen Mac-OS-X-Zeit Disk-Images sehr häufig genutzt wurden, wurde eine Funktion ergänzt, um
.dmg-Dateien als zusätzliche Ordner in das erzeugte Image zu importieren
- Da in der frühen Mac-OS-X-Zeit Disk-Images sehr häufig genutzt wurden, wurde eine Funktion ergänzt, um
- Alte
.dmg-Dateien hatten trotz gleicher Erweiterung mehrere Varianten und ließen sich mit demhdiutilmoderner macOS-Versionen nicht immer mounten- Am Ende wurde mit dmg2img zunächst die Raw-Partition extrahiert
- Anschließend wurde als Workaround ein neues Disk-Image erstellt, das modernes macOS mounten und kopieren kann
- Bei der eigentlichen Softwaresammlung zeigte sich, dass Mac-OS-X-Software aus den frühen bis mittleren 2000ern ein blinder Fleck war
- Im Macintosh Garden gibt es einiges davon, aber die Priorität ist nicht hoch
- Bei den ursprünglichen Anbietern wurde sie oft wegen ihres Alters entfernt
- Die Wayback Machine wurde intensiv genutzt
- Auch die jeweilige Developer CD zu jeder Mac-OS-X-Version wurde installiert, damit Tools wie Project Builder und Interface Builder genutzt werden können
Dateisystem und Mounten mehrerer Disks
- Der Disk-Build-Prozess ist auf HFS ausgerichtet, doch der Standard jener Zeit war HFS+
- HFS+ bietet fortgeschrittenere Funktionen wie längere Dateinamen und beliebige Unicode-Zeichen
- Disk-Image-Dateien, die auf HFS+-Funktionen angewiesen sind, lassen sich nicht verlustfrei konvertieren
- Für die meisten Programme war das kein großes Problem
- Um bis zu drei Laufwerke zu mounten – Boot-Disk, Infinite HD und Saved HD – wurde der Ansatz aus einem DingusPPC-Fork übernommen
- Beim Start wird aus einer beliebigen Anzahl angegebener Partition-Images on the fly ein Multi-Partition-Disk-Image erzeugt
Aqua-Modus und Site-UI
- Um die Ergänzung von Mac OS X abzurunden, wurde den Bedienelementen der Infinite-Mac-Site ein Aqua-Modus hinzugefügt
- Bisher gab es Erscheinungsbilder im Stil von classic, Platinum und NeXT
- Beim Aqua-Design fiel die Wahl auf den Stil von 10.0/10.1
- Die zurückhaltenderen Versionen von 10.3 und 10.4 werden zwar bevorzugt, aber beim Stil von 10.0/10.1 wurde der Nostalgiefaktor als größer eingeschätzt
- Um dieselben Bild-Assets wie das OS zu verwenden, wurden statt Screenshots die Originalressourcen extrahiert
- Da Aqua-Assets viele halbtransparente Elemente verwenden, waren normale Screenshots nicht ausreichend
- Mit resource_dasm und pxm2tga wurden die Original-Assets aus
Extras.rsrcextrahiert
Classic-Ausführung, verbose Mode und kleine Entdeckungen
- Da mehrere Images gemountet werden können, lässt sich zusätzlich eine Mac-OS-9-Partition einbinden und die Classic-Kompatibilitätsumgebung starten
- Diese Funktion funktioniert nur unter 10.1
- PearPC unterstützte Classic nicht
- Im Ergebnis können klassische Mac-Apps innerhalb eines emulierten Mac OS X in einer WebAssembly-VM emuliert werden
- Mit den Mac-OS-X-Images lassen sich auch Änderungen am Verhalten des Calculators nachvollziehen
- Bis 10.3 gab es kein Verhalten, bei dem wiederholtes Drücken von
=die Operation wiederholt - In 10.4 war dieses Verhalten vorhanden
- Bis 10.3 gab es kein Verhalten, bei dem wiederholtes Drücken von
- Da der Start von Mac OS X langsam ist, wurde der verbose Mode freigelegt, um mehr Fortschritt anzuzeigen
- PearPC hatte dafür eine eingebaute Methode
- Für DingusPPC wurde eine Funktion ergänzt, um Open-Firmware-Variablen beim Start festzulegen
- Im Dialog für benutzerdefinierte Instanzen von Infinite Mac wird dies als Schalter „Debug Mode“ angezeigt
- Es wurde auch versucht, die Domain
macosx.appzu sichern, sie war jedoch bereits registriert- Die Domain leitet auf ein bestimmtes YouTube-Video weiter
- Der YouTuber des Videos antwortete, er habe sie nicht registriert
Nächste Kandidaten und die QEMU-Möglichkeit
- Mit der Unterstützung von Mac OS X ist Infinite Mac bis nahe an modernes macOS herangerückt
- Danach bleiben noch zwei CPU-Wechsel und mehrere kleinere Veränderungen
- Tiger ist bereits in einer Form, die auch heutige macOS-Nutzer grundsätzlich wiedererkennen können
- Als tiefere oder speziellere Retro-Computing-Ziele bleiben A/UX, Lisa, Pippin und Newton
- Früher galt QEMU als zu großes Projekt, um es nach WebAssembly zu portieren, und auch die Performance von qemu.js wirkte kaum brauchbar
- Durch das jüngere qemu-wasm und einen FOSDEM-Vortrag wurde die Möglichkeit erneut sichtbar
- Die Performance der Linux-Gast-Demo ist ermutigend
- In einem Ad-hoc-Benchmark, der die MD5-Prüfsumme von 100 MB Daten berechnete, brauchte qemu-wasm 8 Sekunden, DingusPPC 13 Sekunden und PearPC 18 Sekunden
- Zu einem grafischen Gast wie Mac OS X besteht jedoch weiterhin ein großer Abstand
1 Kommentare
Meinungen auf Hacker News
Es stimmt, dass PearPC sich einige Jahre gut gehalten hat, aber nachdem der ursprüngliche Maintainer bei einem Zugunglück ums Leben kam, verlor das Projekt den Großteil seines Schwungs.
Ich war damals begeisterter Nutzer und Teil der Community, und mir kommen noch heute die Tränen, wenn ich daran denke.
https://www.wired.com/2004/07/pearpc-coauthor/
Infinite Mac ist eine Sammlung klassischer Macintosh- und NeXT-System-Releases sowie Software, die im Webbrowser leicht zugänglich gemacht wird.
https://infinitemac.org/
Einer der interessantesten Teile des Artikels war der Link zu einem PPC-CPU-Emulator mit weniger als 700 Zeilen.
https://github.com/kwhr0/macemu/blob/master/SheepShaver/src/...
Bei 6502-Emulatoren sieht man solche Kürze, bei vergleichsweise modernen Architekturen ist das aber selten.
Ich kann mir kaum vorstellen, wie es sich für einen heute 20-jährigen Technikfan anfühlen würde, OS X 10.4 oder 10.5, 10.6 zu sehen.
Bittererweise denke ich an jemanden aus dem dunklen Zeitalter, der vor einer klassischen Statue steht und denkt: „Wie konnte die Menschheit so etwas einst erschaffen?“
Allerdings ändern sich Geschmäcker. Menschen aus dem tatsächlichen dunklen Zeitalter hätten vielleicht gedacht: „Was ist das für heidnische Dekadenz?“, und heute sieht man es vielleicht als: „Fotorealistische Icons, wie peinlich!“
Apps installiert man immer noch per „App aus dem IKEA-artigen dmg herausziehen“, gelegentlich gibt es zip oder pkg. Finder-Fenster hatten bereits links eine Sidebar mit Lesezeichen, und das Dock funktioniert genauso. Es gab zwar diese seltsame 3D-Dock-Phase, ich glaube, das war Leopard.
Einen Mac App Store gibt es nicht, aber den nutzt heutzutage ohnehin fast niemand; Spotlight war in Tiger neu. Es ist viel leichter wiederzuerkennen als der Unterschied zwischen Windows XP und 11. XP verhält sich ziemlich anders als 11.
Damals war es nicht so kompliziert wie heute, im Systemordner herumzufummeln.
Auch im Frühmittelalter gab es viele schöne Artefakte und Bauwerke. Vieles ist nicht erhalten, aber selbst unter dem, was ich persönlich gesehen habe, gibt es Beispiele wie die Schiffsbestattung von Sutton Hoo oder angelsächsische Kirchen.
Die Screenshots sind wirklich erstaunlich. Persönlich finde ich, dass Mac OS X deutlich besser aussieht als das heutige Mac OS.
Es ist klar und geordnet und vermittelt das Gefühl: „Gut, in dieser Umgebung kann ich arbeiten!“
Das heutige Mac OS fühlt sich eher an wie: „Hilfe, ich bin in einen Sack Süßigkeiten gefallen, wie komme ich hier wieder raus?“ Ich frage mich, ob andere das auch so empfinden.
Bei Windows ist es genauso. Man arbeitet kaum noch mit dem Betriebssystem selbst, native Apps sind selten, und die meisten sind browserbasiert oder Cross-Platform-Apps mit Designsystemen von Drittanbietern.
Ich bin es leid, dass Softwarefirmen so tun, als würden sie Software gut bauen.
10.4 Tiger ist ähnlich, aber die obere Menüleiste war glänzend, was mit der Zeit nicht mehr so gut wirkte. 10.5 Leopard hatte das auffällige und kitschige 3D-Dock, eine transparente obere Menüleiste und modernere Gradients.
Damals sah das cool aus, aber die Gradients sind nicht so schön wie Brushed Metal und Aqua. Alles danach ist irgendwie langweilig.
Überraschend, dass es mit dem pearpc-Projekt gelungen ist, das seit über zehn Jahren keinen letzten Commit mehr hatte: https://github.com/sebastianbiallas/pearpc
Sein Fork befindet sich unter https://github.com/mihaip/pearpc
Er hat ein WebAssembly-Target hinzugefügt, scheint aber auch die x86-64-Unterstützung beizubehalten.
Außerdem hat er in einem Blogbeitrag beschrieben, wie NextStep zu Infinite Mac hinzugefügt wurde: https://blog.persistent.info/2024/03/infinite-mac-nextstep.h...
Solche Dinge sind wirklich großartig. Damals war Aqua wie eine Offenbarung.
ein Mainstream-Unix mit einer Bedienbarkeit, die auch die Großmutter nutzen konnte, und mit Unterstützung wichtiger Drittanbieter-Apps – ein voller Erfolg.
Ich hoffe, dass einige dieser Elemente mit Liquid Glass zurückkehren, aber ehrlich gesagt sieht Aqua immer noch gut aus.
Was Nachahmungen wie Windows Vista oder Linux-Themes übersehen haben, war, wie konsistent und benutzbar alles war. Es sah cool aus, aber noch wichtiger: Es funktionierte wirklich gut.
Schön, die UIs aus der Erinnerung wiederzusehen. Ich vermisse Platinum aus der Zeit um Macintosh OS 8 und die zum Ablecken schöne MacOS-X-UI aus der Zeit um OS X 10.3 und 10.4.
Auch SunOS/Slowlaris’ OpenLook, die NeXTStep/OpenStep-UI, Microsoft Windows 2000 – der Höhepunkt vor Winblows XP, das Orange und Grün niemals hätte mischen dürfen – sowie SGIs IRIX und die Freuden der Motif-Familie kommen mir in den Sinn.
UI-Elemente waren fast immer unterscheidbar, verständlich und konsistent. Wenn man ein Standard-UI-Control bediente, wusste man schon vor der Ausführung genau, was passieren würde, und genau das passierte dann auch.
Anpassbar, themenfähig, austauschbar und immer schicker gemacht – das scheint das Ergebnis zu sein, das wir heute haben.
Die frühe OS-X-Zeit war das echte goldene Zeitalter des Mac. Die Hardware war gegenüber x86 ziemlich konkurrenzfähig, und das Betriebssystem gehörte zum Besten überhaupt.
Irgendwann begannen beide zu knirschen, aber jetzt erleben wir ein zweites goldenes Zeitalter der Hardware, sodass man davon träumen kann, dass Mac OS vielleicht bald wieder großartig wird.
Allerdings ist die Emulationsleistung hier selbst in diesem neuen Hardware-Goldzeitalter auf M1 und Safari nahezu unbrauchbar.
Kernel Panics gab es täglich, und QuickTime starb beim Anschauen von Videos mit einem Segmentation Fault.
Um Dateiformate wie wmv oder divx abzuspielen, musste man sich auf eine Quest begeben, den passenden Codec zu finden und zu installieren.
Es gab auch Überhitzung, weil man um der Optik willen keine ordentlichen Lüftungsöffnungen für den Luftstrom eingebaut hatte.
Der Einstiegs-M4 mini ist erstaunlich. Der ganze Computer verbraucht weniger Strom als eine einzelne x86-GPU mit ähnlicher Leistung.
Dark Castle! Als ich klein war, hatte mein Vater eine Apple Lisa. Er entwickelte eine Buchhaltungssoftware-Suite für Apple, daher hatte Apple ihm freundlicherweise so eine Maschine bereitgestellt.
Damals hielt ich diese unglaubliche Maschine für selbstverständlich und benutzte sie nur für Spiele und MacPaint. In der Sammlung von 3,5-Zoll-Disketten meines Vaters gab es eine Diskette mit der Aufschrift „Dark Castle“, die aus einem Grund, an den ich mich nicht erinnere, auf der Lisa nicht funktionierte.
Ich vermutete, dass es ein Spiel war, war sehr enttäuscht, es nicht spielen zu können, und war fasziniert von dieser rätselhaften Diskette.
Im Jahr 2025 startete ich den Infinite-Mac-System-7-Emulator: https://infinitemac.org/1991/System%207.0
Mir rutschte das Herz in die Hose. Direkt im Ordner „Games“ war Dark Castle.
Nach 30 Jahren kann ich dieses Spiel endlich spielen. Die Grafik ist charmant, und man spürt Elemente von Sierra-Klassikern wie King’s Quest und Prince of Persia.
https://en.wikipedia.org/wiki/Dark_Castle
Mein Abendprogramm steht damit fest.