- Dieses Repository enthält ARC-Firmware- und Loader-Quellcode zum Booten von Windows NT auf Power Macintosh und richtet sich an PowerPC-Macintosh-Systeme der Gossamer/Grackle- und Mac99-Familien
- Unterstützt werden Power Macintosh G3, einige iMac G3, PowerBook G3/G4, iBook G3/G4 sowie einige Power Macintosh G4; wegen des fehlenden USB-Treibers sind manche Systeme jedoch nur theoretisch unterstützt oder praktisch kaum nutzbar
- Die ARC-Firmware enthält Treiber für Cuda/PMU, ADB-Tastatur, 32bpp-Framebuffer, internes Mac-I/O-IDE, einige ATA-6, MESH-SCSI und USB OHCI, aber es gibt keinen PCI-IDE-Treiber und keine LBA48-Unterstützung
- Auf der Windows-NT-Seite stehen HAL für Gossamer und Mac99, Mac-I/O-IDE-/ATA-6-Treiber, HID-/Storage-Treiber mit ADB-Tastatur/Maus und RAM-Disk sowie ein 32bpp-Framebuffer-Miniport-Treiber bereit
- Kompatibel ist NT 3.51 RTM oder neuer; frühe Betas von NT 3.51 benötigen einen Kernel-Patch, und NT 3.5 ist inkompatibel, da es nur PowerPC 601 unterstützt
Projektumfang und Zielhardware
- Dieses Repository enthält ARC-Firmware und Loader-Quellcode für Power-Macintosh-Systeme
- Die Gossamer-Architektur umfasst Systeme mit dem MPC106-"Grackle"-Speichercontroller/PCI-Host und dem Super-I/O-Chip "Heathrow" oder "Paddington"
- Power Macintosh G3 beige
- Macintosh PowerBook G3 Series "Wallstreet", "PDQ"
- iMac G3 tray-loading
- Power Macintosh G3 Blue & White "Yosemite"
- Macintosh PowerBook G3 Bronze Keyboard "Lombard"
- Power Macintosh G4 PCI "Yikes!"
- Die Mac99-Architektur umfasst den "Uni-North"-Speichercontroller/PCI-Host, den Super-I/O-Chip "KeyLargo" sowie abgeleitete Chipsätze wie "Intrepid"
- PowerBook G3 Firewire "Pismo"
- iBook G3
- iBook G4
- Beim mid-2005 iBook G4
PowerBook6,7funktioniert die interne Maus noch nicht, da sie per USB angebunden ist
- Beim mid-2005 iBook G4
- PowerBook G4
- Ab early 2005 beim PowerBook G4
PowerBook6,8bzw. bei Modellen nachPowerBook5,6werden USB-Tastatur und -Maus verwendet, wodurch eine praktische Unterstützung derzeit schwierig ist
- Ab early 2005 beim PowerBook G4
- iMac G3 slot-loading, iMac G4 und Power Macintosh G4 AGP "Sawtooth" sowie spätere Modelle werden theoretisch unterstützt, sind aber wegen des fehlenden USB-Treibers derzeit praktisch kaum nutzbar
- Je nach Hardware kann es Probleme geben; NT-HAL- und Treiberquellcode sind derzeit nicht enthalten
In der ARC-Firmware enthaltene Treiber
- Die ARC-Firmware enthält Unterstützung für Cuda und PMU
- Einschließlich Unterstützung für ADB-Tastaturen
- Verwendet wird ein flacher 32bpp-Video-Framebuffer, den der Loader einrichtet
- ATI- und nVidia-Hardware wird unterstützt
- Einige nVidia-GPUs funktionieren derzeit nicht
- Der Treiber für den internen Mac-I/O-IDE-Controller ist ein Fork von OpenBIOS
-
Es gibt keinen PCI-IDE-Controller-Treiber
- Einige ATA-6-Controller späterer Mac99-Systeme, nämlich Intrepid und U2, werden unterstützt
- LBA48 wird noch nicht unterstützt
- Auf pre-Mac99-Systemen wird der MESH-SCSI-Controller unterstützt
- Der USB-OHCI-Treiber ist ein Fork von OpenBIOS
- Auf pre-Mac99-Systemen ist er defekt, funktioniert nicht, und der Initialisierungscode ist auskommentiert
-
Für Windows NT implementierte Treiber
- Für den Gossamer-Chipsatz ist ein HAL implementiert
- Framebuffer beim NT-Boot
- Super-I/O-Interrupt-Controller
- Grackle-PCI-Bus-Unterstützung
- Cuda und PMU, einschließlich Low-Level-ADB
- Serielle Schnittstelle nur für Kernel-Debugging
- Auch für den Mac99-Chipsatz ist ein HAL implementiert
- Framebuffer beim NT-Boot
- MPIC-Interrupt-Controller
- Unterstützung für die drei PCI-Busse von Uni-North
- Einer davon ist AGP, unterstützt aber nur die PCI-Teilmenge
- PMU, einschließlich Low-Level-ADB
- Serielle Schnittstelle nur für Kernel-Debugging
- Die Treiber für den internen Mac-I/O-IDE-Controller und ATA-6-Controller sind Forks von
atapi.sysaus dem NT4 DDK - Ein allgemeiner HID-/Storage-Treiber soll künftig auch einen USB-Stack enthalten, aktuell sind jedoch nur ADB-Tastatur/-Maus und eine RAM-Disk implementiert, die während der Textinstallation als Treiber-Diskettenlaufwerk dient
- Es gibt einen Miniport-Treiber für einen flachen 32bpp-Video-Framebuffer
Software-Kompatibilität
- Kompatibel ist NT 3.51 RTM oder neuer
- Bei NT 3.51 Beta Build 944 oder älter ist wegen eines Prozessordetektion-Bugs ein Kernel-Patch zum Ausführen nötig
- NT 3.5 ist inkompatibel, da es nur PowerPC 601 unterstützt
- Die zusätzlichen Suspend-/Hibernation-Funktionen von NT 3.51 PMZ wären theoretisch kompatibel, in der Praxis müssten dafür aber alle zusätzlich benötigten Treiber neu implementiert werden
Installationsablauf und Partitionsbeschränkungen
- Die zum System passenden Binärdateien müssen von der Releases-Seite heruntergeladen werden
- Bei Gossamer/Grackle-Systemen muss das Image auf optische Medien gebrannt werden
- Old-World-Systeme wie PowerMac G3 beige und PowerBook G3 Wallstreet/PDQ verwenden
nt_arcfw_grackle_ow.iso - New-World-Systeme wie iMac G3 tray-loading, PowerMac G3 blue&white, PowerBook G3 Lombard und PowerMac G4 Yikes verwenden
nt_arcfw_grackle.iso
- Old-World-Systeme wie PowerMac G3 beige und PowerBook G3 Wallstreet/PDQ verwenden
- Auf Mac99-Systemen kann das Image auf ein USB-Laufwerk geschrieben werden
- Im ARC-Firmware-Menü wird die Platte über
Run firmware setup→Repartition disk for NT installationfür die NT-Installation partitioniert - Die NT-Partitionsgröße ist durch das CHS-Limit 16383x16x63 begrenzt und beträgt nach Abzug der 32MB-ARC-Systempartition und 1MB maximal 8030MB
- Wenn die NT-Partition größer als 2GB ist, wird sie mit NTFS formatiert
- Die NTFS-Formatversion in Releases vor dem 2024-11-11 ist nicht mit NT 3.51 kompatibel
- Für die Installation von NT 3.51 muss daher eine Partition mit höchstens 2GB verwendet werden
- Während der NT-Installation wird
cd:\ppc\setupldrausgeführt; bei mehreren optischen Laufwerken kann escd01:odercd02:sein - Im HAL-Auswahlschritt laden alle Einträge in der Liste den zum System passenden HAL
- HAL für den Gossamer-Chipsatz:
halgoss - HAL für den Mac99-Chipsatz:
halunin
- HAL für den Gossamer-Chipsatz:
- Im Schritt für Massenspeichertreiber müssen zwei Treiber geladen werden
Mac I/O IDE ControllerPowerMac General HID & Storage
- Im Schritt für den Videoadapter wird je nach OS eine andere Option gewählt
- NT 4:
Open Firmware Frame Buffer - NT 3.51:
Open Firmware Frame Buffer (NT 3.x)
- NT 4:
- In der Textinstallation muss die Tastatur auf
XT, AT or Enhanced Keyboard (83-104 keys)geändert und das Zeigegerät aufNo Mouse or Other Pointing Devicegesetzt werden - Wenn eine NT-Partition über 2GB erstellt wurde, werden bei der Datenträgerprüfung Fehler gefunden und ein Neustart ist erforderlich; beim zweiten Versuch läuft die Prüfung erfolgreich durch
Bekannte Probleme und Hinweise zum Dual-Boot
- Bei Gossamer/Gossamer-basierten Laptops möchte man eventuell den Akku entfernen
- Auf Lombard kann bei einem Bugcheck nur per PMU-Reset oder vollständiger Stromtrennung ausgeschaltet werden
- Auf Wallstreet/PDQ ist ein PMU-Reset über eine Tastenkombination möglich
- Die derzeit implementierten Treiber stellen nur das Mindestmaß dar, das zum Ausführen und Nutzen von NT erforderlich ist
- Während des NT-Boots wurde ein harter PMU-Shutdown beobachtet, der sich nur per PMU-Reset beheben ließ; die Ursache ist unbekannt
- Falls es auf Old-World-Systemen Probleme beim Booten anderer Ziele als der ARC-Firmware gibt, überspringt
Escbeim Start das ARC-Firmware-Gerät - Auf Mac99 funktioniert der USB-Treiber noch nicht, daher werden derzeit nur Laptop-Systeme unterstützt
- Zusätzliche Mac-Partitionen erscheinen in der Partitionstabelle als HFS-Partitionen, werden aber nicht formatiert
- Sie müssen mit dem Disk Utility von OS X 10.1 oder neuer formatiert werden
- Gelöscht werden muss das Volume, nicht das Laufwerk
- In Releases nach dem 2024-11-11 kann alternativ in OS 9 gebootet und über den beim Start angezeigten Dialog formatiert werden
- Das OS-X-Installationsprogramm sowie das Booten von OS 8/OS 9 schlagen fehl, wenn sich auf der Platte ein für NT erforderlicher gültiger MBR befindet
- In der ARC-Firmware muss
Run firmware setup→Reboot to OSX install or OS8/OS9verwendet werden - In Releases nach dem 2024-11-11 wird beim Schreiben auf die Platte der OS8/9-Treibercode gepatcht, sodass diese Option nicht nötig ist; wenn jedoch die On-Disk-Treiberpartition auf andere Weise aktualisiert wird, ist sie wieder erforderlich
- Beim erneuten Booten in die ARC-Firmware wird der MBR geändert
- Das Formatieren von HFS-Partitionen, die unter OS X 10.2 und 10.3 erstellt wurden, funktioniert nicht mit einem gültigen MBR
- In der ARC-Firmware muss
Build-Voraussetzungen und Größenbeschränkungen
- Zum Bauen der ARC-Firmware wird devkitPPC benötigt
- Eine für
powerpclekompiliertelibgcc.amuss sich inarcgrackle/gcclebefinden- Stand 2024-07-12 ist die Datei
cross-powerpcle-linux-gnu-0.34_1.x86_64.xbpsin einem Void-Linux-Mirror zu finden
- Stand 2024-07-12 ist die Datei
- Die Umgebungsvariable
DEVKITPPCsollte auf das devkitPPC-Verzeichnis gesetzt sein, normalerweise/opt/devkitpro/devkitPPC - Die Build-Reihenfolge ist: Big-Endian-libc, ARC-Firmware-Loader, Little-Endian-libc, ARC-Firmware
- Für Mac99 werden die Ordner
arcloader_unin,arcunin/baselibc,arcuninverwendet
- Für Mac99 werden die Ordner
stage1.elfundstage2.elfim Release-Image müssen ersetzt werden- Beim Neuerstellen eines Images aus einem Ordner-Dump muss ein hybrides HFS+ISO-Image erzeugt, der Ordner
Systemals blessed markiert und der Dateityp vonBootXauftbxigesetzt werden stage1.elfmuss 16KB oder kleiner,stage2.elf224KB oder kleiner sein- Für den Old-World-Bootloader-Build ist die entsprechende README zu beachten, für die Erstellung von Old-World-ISO-Images OldWorldIsoBuilder
Verwendeter Code und Referenzprojekte
- Für libc wird baselibc verwendet
- ELF-Loader und Makefile wurden aus The Homebrew Channel übernommen und angepasst
- Ein Teil des Low-Level-PowerPC-Codes, die Framebuffer-Konsolenimplementierung der ARC-Firmware und die Schriftarten wurden aus libogc übernommen und angepasst
- Einige ARC-Firmware-Treiber, IDE und USB wurden aus OpenBIOS übernommen und angepasst
- Der USB-Treiber von OpenBIOS stammt aus coreboot
- Die interne ISO9660-Dateisystemimplementierung der ARC-Firmware basiert auf einer angepassten Version von lib9660
- Die interne FAT-Dateisystemimplementierung der ARC-Firmware basiert auf einer angepassten Version von Petit FatFs
1 Kommentare
Meinungen auf Hacker News
Aus Nostalgie musste ich an diesen Artikel denken: https://lowendmac.com/2014/next-openstep-and-the-triumphant-...
Amelio und die Führungsetage brauchten ein neues Betriebssystem, um mit der Wintel-Übermacht konkurrieren zu können, und die Optionen hatten sich im Wesentlichen auf Windows NT lizenzieren, Solaris lizenzieren, Copland in abgespeckter Form veröffentlichen, Be übernehmen und BeOS verwenden oder NeXT übernehmen und OpenStep verwenden reduziert.
Ursprünglich lief es nur auf NeXTs Motorola-68k-Workstations, wurde dann aber auf 32-Bit-Intel-x86-„IBM-kompatible“ PCs, Hewlett-Packards PA-RISC-Workstations und Sun Microsystems’ SPARC-Workstations portiert, heißt es hier: https://www.wikipedia.org/wiki/OpenStep
Mac OS X war vor Version 10.1 im Jahr 2001 kaum angenehm im Alltag zu nutzen, trotzdem waren iMac, iBook und PowerBook G3 erfolgreich – das Betriebssystem muss also durchaus eine Rolle gespielt haben, kommt in solchen Geschichten aber fast gar nicht vor.
Das ist sicher von Nostalgie gefärbt, weil ich von 1997 bis 2001 ein jugendlicher Mac-Enthusiast war, aber zwischen einem Performa aus der Mitte der 90er mit 7.5 und einem iMac aus den späten 90ern mit 9 hatte sich ziemlich viel getan.
Auch wenn es kein zukunftsweisendes Betriebssystem war, fühlten sich 8.6/9 aus Endnutzer-Sicht im Vergleich zu Windows 95/98 relativ modern an; und selbst Mitte der 90er war 7.5 nicht wirklich schlechter als 95 – nur aus geschäftlicher Sicht sah die Zukunft düster aus.
Die anderen Vorschläge wirken alle vernünftig, aber dieser sticht schon sehr heraus – und ich bin wirklich froh, dass es nie dazu gekommen ist.
Derselbe Entwickler hat letztes Jahr auch PPC NT 4 auf die Wii portiert: https://www.youtube.com/watch?v=d8BpUpr1h9U
Spannende Arbeit. Der ARC-Standard https://en.wikipedia.org/wiki/ARC_(specification) wurde genutzt, um DEC-Alpha-Windows-Maschinen, MIPS und andere Systeme zu booten.
Die ursprüngliche EFI-Spezifikation von Intel aus dem Jahr 1998 nahm ARC als Vorbild und Inspiration, und auch die Intel Boot Initiative (IBI) sah größtenteils wie ARC aus.
EFI, heute UEFI, ist grob gesagt eher ARC plus installierbare GUID-basierte Schnittstellen im Stil von MS COM https://en.wikipedia.org/wiki/Component_Object_Model – also Protokolle.
Auf Seite 8 von https://www.intel.com/content/dam/www/public/us/en/documents... wird ein Teil dieser Mühen beschrieben.
ARC konnte NT booten, SRM dagegen nicht: https://en.wikipedia.org/wiki/SRM_firmware
Windows NT war wirklich faszinierend. Wenn ihr ein gutes Buch sucht, empfehle ich Showstopper.
Ich hatte gerade nach einem Grund gesucht, meinen bondi blue iMac G3 von 1998 mal wieder einzuschalten, und dann kommt so etwas daher – ein seltsames, raues und extrem spezifisches Projekt.
Kannst du den Kontext erklären? NT ist natürlich Closed Source und dürfte nie für den Mac entwickelt worden sein; ich frage mich, was das hier tatsächlich ist.
Ich weiß auch nicht, wie groß die Chance ist, überhaupt Software dafür zu bekommen. Die meiste NT-Software war vermutlich nur für Intel kompiliert und ebenfalls Closed Source.
Wenn man also nur diesen Teil portiert, sollten vorhandene Binärdateien für diese Architektur laufen.
Im Kern sind es drei Dinge. 1) ARC-Boot-Firmware: NT wurde auf Nicht-x86-Systemen wie i860 und MIPS entwickelt, und ARC war die Standard-Boot-Firmware. Auf x86 hat NTLDR das bis vor Vista emuliert. Dieses Projekt stellt offenbar eine ARC-kompatible Umgebung auf OpenFirmware bereit und macht dabei auch die interessante Arbeit, die Boot-Firmware so tun zu lassen, als gäbe es ein Speichergerät, damit in der frühen Installationsphase eine Treiber-„Diskette“ gelesen werden kann.
2) HAL.DLL: Die Idee ist, dass der NTOSKRNL-Kern selbst hardwareunabhängig ist und es pro CPU-Architektur eine Binärdatei gibt. Der Kernel muss aber mit echten Timern oder Bussen kommunizieren, daher steckt dieser Interface-Code in HAL.DLL, und während der Installation wird die passende Variante kopiert. Eine Liste der x86-32-HALs früherer Windows-Versionen findet man unter https://www.geoffchappell.com/studies/windows/km/hal/history.... Heute ist die eine AMD64-Variante größtenteils in den Kernel gewandert. Hier bleibt der Hauptkernel unverändert, während halgoss die Mac-spezifische Behandlung übernimmt.
3) Gerätetreiber: Sobald NT hochgefahren ist, braucht man echte Treiber.
Die Spezifikation von 1) ist bekannt, also sollte man sie emulieren können, und 3) scheint machbar, wenn man das DDK hat oder aus anderen DDKs ableiten kann. 2) dürfte der Teil sein, der am meisten internes Wissen erfordert, und ich weiß nicht, ob der geleakte NT-Source bis auf diese Ebene hinuntergeht; ich habe es nicht gesehen.
Die Kompatibilität beschränkt sich auf 32-Bit-PowerPC-Win32-Binärdateien, 16-Bit-x86-Win16-Binärdateien und x86-DOS-Programme, die in der DOS-Box von NT4 laufen. x86-Win32 geht nicht; nur Alpha hatte einen x86-Win32-Emulator.
Das heißt nicht, dass der Autor diesen Source verwendet hat, aber wenn er vorhanden ist, dürfte diese Arbeit deutlich einfacher geworden sein.
Oder der Bootloader wurde im Clean-Room-Verfahren per Reverse Engineering nachgebaut, oder es gab genügend öffentliche Informationen, sodass man den internen Windows-Code gar nicht kennen musste.
Die PPC-Codebasis zielte nicht direkt auf den Mac, sondern auf andere Systeme von IBM/Motorola, aber weil es eine „gemeinsame“ Plattform ist, müssen die Binärdateien aus der NT4-ISO selbst nicht verändert werden.
Außerdem findet man den Source Code auf GitHub in mehreren Repositories.
Ich mochte das alte Windows NT wirklich. Es war leichtgewichtig genug, um Ende der 90er auch auf schwacher Hardware zu laufen, und deutlich stabiler als Windows 95.
Stattdessen habe ich beide per Dual Boot genutzt.
Sehr cool, und ich freue mich darauf, die Zeit wieder zu erleben, in der man auf alle DOS-Spiele verzichten musste.
Daher gehen DOS-Spiele leider nicht.
Die Bootloader-Datei gefällt mir: https://github.com/Wack0/maciNTosh/blob/main/boot_files/Syst...
Nebenbei: Die Open-Firmware-Syntax ist wirklich schwer zu lesen. Sie wurde nicht ohne Grund gehasst, und es war eine verpasste Chance.
Einen neuen NT HAL zu schreiben, ist wirklich eine beeindruckende Leistung. Hut ab.
Die Dokumentation ist bestenfalls lückenhaft, und ich vermute, dass es auch viele unbekannte Bugs gibt, die in den vorhandenen HALs nur glücklicherweise nie zutage getreten sind.