- Este repositorio contiene el código fuente del firmware ARC y del cargador para arrancar Windows NT en Power Macintosh, y está dirigido a los PowerPC Macintosh de las familias Gossamer/Grackle y Mac99
- Los equipos compatibles se dividen en Power Macintosh G3, algunos iMac G3, PowerBook G3/G4, iBook G3/G4 y algunos Power Macintosh G4; por la falta de controladores USB, algunos sistemas solo tienen soporte teórico o son difíciles de usar en la práctica
- El firmware ARC incluye controladores para Cuda/PMU, teclado ADB, framebuffer de 32bpp, IDE interno de Mac I/O, algunos ATA-6, MESH SCSI y USB OHCI, pero no cuenta con controlador PCI IDE ni soporte para LBA48
- Del lado de Windows NT ya están implementados el HAL para Gossamer y Mac99, controladores Mac I/O IDE/ATA-6, controladores HID/almacenamiento con teclado/mouse ADB y disco RAM, y un minipuerto para framebuffer de 32bpp
- La compatibilidad abarca desde NT 3.51 RTM en adelante; las betas iniciales de NT 3.51 requieren parche al kernel y NT 3.5 no es compatible porque solo soporta PowerPC 601
Alcance del proyecto y hardware objetivo
- Este repositorio incluye el firmware ARC y el código fuente del cargador para sistemas Power Macintosh
- La arquitectura Gossamer está dirigida a sistemas que usan el controlador de memoria/host PCI MPC106 “Grackle” y el chip Super I/O “Heathrow” o “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!”
- La arquitectura Mac99 está dirigida a sistemas con controlador de memoria/host PCI “Uni-North”, chip Super I/O “KeyLargo” y chipsets derivados como “Intrepid”
- PowerBook G3 Firewire “Pismo”
- iBook G3
- iBook G4
- el iBook G4 de mediados de 2005
PowerBook6,7todavía no tiene mouse funcional porque el mouse interno es USB
- el iBook G4 de mediados de 2005
- PowerBook G4
- los PowerBook G4 desde inicios de 2005 y modelos posteriores a
PowerBook6,8,PowerBook5,6usan teclado y mouse USB, así que actualmente es difícil darles soporte práctico
- los PowerBook G4 desde inicios de 2005 y modelos posteriores a
- Los iMac G3 slot-loading, iMac G4 y los Power Macintosh G4 AGP “Sawtooth” en adelante tienen soporte teórico, pero el uso real hoy es difícil por la falta de controladores USB
- Puede haber problemas según el hardware, y el código fuente del HAL y de los controladores de NT no está incluido actualmente
Controladores incluidos en el firmware ARC
- El firmware ARC incluye soporte para Cuda y PMU
- Incluye soporte para teclado ADB
- Usa un framebuffer de video de 32bpp plano configurado por el cargador
- Soporta hardware ATI y nVidia
- Algunas GPU nVidia todavía no funcionan
- El controlador IDE interno de Mac I/O fue derivado de OpenBIOS
-
No hay controlador para controladores PCI IDE
- Se soportan algunos controladores ATA-6 de sistemas Mac99 tardíos, concretamente Intrepid y U2
- LBA48 todavía no está soportado
- En sistemas pre-Mac99 se soporta el controlador MESH SCSI
- El controlador USB OHCI fue derivado de OpenBIOS
- En sistemas pre-Mac99 está roto, no funciona y el código de inicialización está comentado
-
Controladores implementados para Windows NT
- Hay un HAL implementado para el chipset Gossamer
- framebuffer durante el arranque de NT
- controlador de interrupciones Super I/O
- soporte para bus PCI Grackle
- Cuda y PMU, incluyendo ADB de bajo nivel
- puerto serie solo para depuración del kernel
- También hay un HAL implementado para el chipset Mac99
- framebuffer durante el arranque de NT
- controlador de interrupciones MPIC
- soporte para los 3 buses PCI de Uni-North
- uno de ellos es AGP, pero solo se soporta el subconjunto PCI
- PMU, incluyendo ADB de bajo nivel
- puerto serie solo para depuración del kernel
- Los controladores del IDE interno de Mac I/O y de ATA-6 fueron derivados de
atapi.sysdel NT4 DDK - El controlador HID/almacenamiento general pretende incluir una pila USB en el futuro, pero por ahora solo implementa teclado/mouse ADB y un disco RAM usado como disquetera para instalar controladores durante la instalación en modo texto
- Hay un controlador minipuerto para framebuffer de video de 32bpp plano
Compatibilidad de software
- La compatibilidad cubre NT 3.51 RTM en adelante
- Las versiones beta de NT 3.51 build 944 o anteriores requieren un parche al kernel para ejecutarse debido a un bug de detección del procesador
- NT 3.5 no es compatible porque solo soporta PowerPC 601
- Las funciones adicionales de suspensión/hibernación de NT 3.51 PMZ son teóricamente compatibles, pero en la práctica habría que reimplementar todos los controladores adicionales que requieren
Flujo de instalación y restricciones de partición
- Los binarios correspondientes a cada sistema deben descargarse desde la página de releases
- Los sistemas Gossamer/Grackle deben grabar la imagen en medio óptico
- Los sistemas Old World PowerMac G3 beige y PowerBook G3 Wallstreet/PDQ usan
nt_arcfw_grackle_ow.iso - Los sistemas New World iMac G3 tray-loading, PowerMac G3 blue&white, PowerBook G3 Lombard y PowerMac G4 Yikes usan
nt_arcfw_grackle.iso
- Los sistemas Old World PowerMac G3 beige y PowerBook G3 Wallstreet/PDQ usan
- Los sistemas Mac99 pueden escribir la imagen en una unidad USB
- En el menú del firmware ARC, entra a
Run firmware setup→Repartition disk for NT installationpara particionar el disco para instalar NT - El tamaño máximo de la partición NT es de 8030MB, descontando la partición ARC del sistema de 32MB y 1MB por el límite CHS de 16383x16x63
- Si la partición NT supera 2GB, se formatea como NTFS
- La versión de formato NTFS de las releases anteriores al 2024-11-11 no es compatible con NT 3.51
- Para instalar NT 3.51 hay que usar una partición de 2GB o menos
- Durante la instalación de NT se ejecuta
cd:\ppc\setupldr; si hay varias unidades ópticas, puede sercd01:ocd02: - En la etapa de selección del HAL, todos los elementos de la lista cargan un HAL adecuado para el sistema
- El HAL del chipset Gossamer es
halgoss - El HAL del chipset Mac99 es
halunin
- El HAL del chipset Gossamer es
- En la etapa de controladores de almacenamiento masivo, hay que cargar ambos controladores
Mac I/O IDE ControllerPowerMac General HID & Storage
- En la etapa del adaptador de video, se elige una opción distinta según el sistema operativo
- NT 4:
Open Firmware Frame Buffer - NT 3.51:
Open Firmware Frame Buffer (NT 3.x)
- NT 4:
- En la instalación en modo texto, el teclado debe cambiarse a
XT, AT or Enhanced Keyboard (83-104 keys)y el dispositivo apuntador aNo Mouse or Other Pointing Device - Si se creó una partición NT de más de 2GB, durante la revisión del disco se detectarán errores y hará falta reiniciar; en el segundo intento, la revisión del disco sí tendrá éxito
Problemas conocidos y precauciones de arranque dual
- En laptops Gossamer/Gossamer derivadas, quizá convenga retirar la batería
- En Lombard, ante un bugcheck, la única forma de apagar es con un reset de PMU o cortando totalmente la energía
- En Wallstreet/PDQ, el reset de PMU puede hacerse con una combinación de teclas
- Los controladores implementados actualmente son el mínimo necesario para ejecutar y usar NT
- Se ha observado un apagado duro del PMU durante el arranque de NT; solo se resolvió con reset de PMU y la causa es desconocida
- Si en sistemas Old World hay problemas para arrancar un destino distinto al firmware ARC, al arrancar se puede presionar
Escpara omitir el dispositivo del firmware ARC - En Mac99, como el controlador USB todavía no funciona, solo se soportan sistemas portátiles
- Si se crean particiones Mac adicionales, en la tabla de particiones aparecerán como particiones HFS, pero no estarán formateadas
- Deben formatearse con Disk Utility de OS X 10.1 o posterior
- Hay que borrar el volumen, no la unidad
- En las releases posteriores al 2024-11-11 también se pueden formatear arrancando en OS 9 y usando el cuadro de diálogo que aparece al inicio
- El instalador de OS X y el arranque de OS 8/OS 9 fallan si el disco tiene un MBR válido necesario para NT
- Hay que usar la opción
Run firmware setup→Reboot to OSX install or OS8/OS9en el firmware ARC - En las releases posteriores al 2024-11-11, al escribir el disco se parchea el código de controladores de OS8/9 y esta opción deja de ser necesaria, pero volverá a hacer falta si la partición de controladores en disco se actualiza de otra manera
- Al volver a arrancar con el firmware ARC, el MBR se modifica otra vez
- Los formatos de partición HFS creados en OS X 10.2 y 10.3 no funcionan si hay un MBR válido
- Hay que usar la opción
Requisitos de compilación y límites de tamaño
- Para compilar el firmware ARC se requiere devkitPPC
libgcc.acompilado parapowerpcledebe estar enarcgrackle/gccle- Al 2024-07-12, el archivo
cross-powerpcle-linux-gnu-0.34_1.x86_64.xbpspuede encontrarse en un mirror de Void Linux
- Al 2024-07-12, el archivo
- La variable de entorno
DEVKITPPCnormalmente debe apuntar al directorio de devkitPPC, usualmente/opt/devkitpro/devkitPPC - El orden de compilación es libc big endian, cargador del firmware ARC, libc little endian y firmware ARC
- Mac99 usa las carpetas
arcloader_unin,arcunin/baselibcyarcunin
- Mac99 usa las carpetas
- Hay que reemplazar
stage1.elfystage2.elfdentro de la imagen release - Al recrear la imagen desde un volcado de carpeta, debe hacerse una imagen híbrida HFS+ISO, marcar la carpeta
Systemcomo blessed y establecer el tipo de archivo deBootXentbxi stage1.elfdebe medir 16KB o menos ystage2.elfdebe medir 224KB o menos- Para compilar el bootloader Old World hay que consultar su readme, y para generar la imagen ISO Old World hay que consultar OldWorldIsoBuilder
Código utilizado y proyectos de referencia
- La libc utilizada es baselibc
- El cargador ELF y el makefile fueron tomados de The Homebrew Channel y modificados
- Parte del código PowerPC de bajo nivel, la implementación de consola framebuffer del firmware ARC y las fuentes fueron tomadas de libogc y modificadas
- Algunos controladores del firmware ARC, IDE y USB, fueron tomados de OpenBIOS y modificados
- El controlador USB de OpenBIOS proviene de coreboot
- La implementación interna del sistema de archivos ISO9660 en el firmware ARC usa una versión modificada de lib9660
- La implementación interna del sistema de archivos FAT en el firmware ARC usa una versión modificada de Petit FatFs
1 comentarios
Opiniones de Hacker News
Por nostalgia, este artículo me vino a la mente: https://lowendmac.com/2014/next-openstep-and-the-triumphant-...
Amelio y la alta dirección necesitaban un nuevo sistema operativo para competir con el enorme poder de Wintel, y las opciones se redujeron más o menos a licenciar Windows NT, licenciar Solaris, lanzar una versión recortada de Copland, comprar Be y usar BeOS, o comprar NeXT y usar OpenStep.
Se explica que originalmente solo funcionaba en las estaciones de trabajo Motorola 68k de NeXT, y luego fue portado a PCs “compatibles con IBM” Intel x86 de 32 bits, estaciones de trabajo PA-RISC de Hewlett-Packard y estaciones de trabajo SPARC de Sun Microsystems: https://www.wikipedia.org/wiki/OpenStep
Mac OS X no fue fácil de usar en la práctica hasta la versión 10.1 en 2001, pero aun así el iMac, el iBook y el PowerBook G3 tuvieron éxito, así que el sistema operativo seguramente también tuvo un papel; sin embargo, en estas historias casi siempre queda fuera.
Mi recuerdo está teñido de nostalgia porque entre 1997 y 2001 era un adolescente fanático de Mac, pero hubo bastantes cambios al pasar de una Performa de mediados de los 90 con 7.5 a una iMac de fines de los 90 con 9.
Aunque no era un sistema operativo futurista, desde el punto de vista del usuario final 8.6/9 se sentía relativamente más moderno que Windows 95/98, y aun a mediados de los 90 el futuro era oscuro desde el punto de vista del negocio, pero 7.5 no era necesariamente peor que 95.
Las demás propuestas parecen razonables, pero esta destaca de forma extraña, y de verdad me alegra que no haya ocurrido.
El mismo desarrollador también portó PPC NT 4 a la Wii el año pasado: https://www.youtube.com/watch?v=d8BpUpr1h9U
Es un trabajo interesante. El estándar ARC https://en.wikipedia.org/wiki/ARC_(specification) se usaba para arrancar máquinas DEC Alpha con Windows, MIPS, etc.
En 1998, en Intel, la especificación original de EFI tomó como modelo e inspiración a ARC, y la Intel Boot Initiative (IBI) también se veía en gran parte como ARC.
EFI, hoy UEFI, es más o menos como ARC con interfaces instalables basadas en GUID al estilo MS COM https://en.wikipedia.org/wiki/Component_Object_Model, es decir, protocolos, añadidos encima.
En la página 8 de https://www.intel.com/content/dam/www/public/us/en/documents... aparece parte de esa historia complicada.
ARC podía arrancar NT, pero SRM no: https://en.wikipedia.org/wiki/SRM_firmware
Windows NT era realmente interesante. Si buscas un buen libro, recomiendo Showstopper.
Justo estaba buscando una razón para encender mi iMac G3 bondi blue de 1998, y aparece esto; es un proyecto raro, tosco y muy específico.
¿Podrías explicar el contexto? NT obviamente es de código cerrado y supongo que nunca se desarrolló para Mac, así que me da curiosidad saber qué es esto en realidad.
Tampoco sé qué tan posible sea conseguir software. La mayoría del software para NT estaba compilado solo para Intel y seguramente también era de código cerrado.
Por eso, si solo se porta esa parte, los binarios existentes para esa arquitectura deberían funcionar.
La clave son tres cosas. 1) Firmware de arranque ARC: NT se desarrolló en sistemas no x86 como i860 y MIPS, y ARC era el firmware de arranque predeterminado. En x86, NTLDR lo emuló hasta antes de Vista. Este proyecto parece hacer también un trabajo interesante: ofrece un entorno compatible con ARC sobre OpenFirmware y, en las primeras etapas de la instalación, hace que el firmware de arranque finja que hay un dispositivo de almacenamiento para poder leer el “disquete” de controladores.
2) HAL.DLL: la idea es que el núcleo NTOSKRNL en sí es independiente del hardware, con un binario por arquitectura de CPU. Pero el kernel necesita comunicarse con temporizadores o buses reales, así que ese código de interfaz está en HAL.DLL, y durante la instalación se copia el que corresponde. La lista de HAL de x86-32 en Windows antiguos se puede ver en https://www.geoffchappell.com/studies/windows/km/hal/history.... Hoy, la versión para AMD64 está en gran parte integrada al kernel. Aquí se deja intacto el kernel principal y halgoss se encarga del tratamiento específico para Mac.
3) Controladores de dispositivo: después de que NT arranca, se necesitan controladores reales.
Como la especificación de 1) es conocida, debería poder emularse, y 3) parece posible si se tiene el DDK o se infiere a partir de otros DDK. 2) parece la parte que más conocimiento interno requeriría, y no sé si el código fuente filtrado de NT llega hasta ese nivel, porque no lo he visto.
La compatibilidad sería con binarios Win32 de PowerPC de 32 bits, binarios Win16 de x86 de 16 bits y programas DOS x86 que corran en la caja DOS de NT4. Win32 x86 no funciona, y solo Alpha tenía un emulador de Win32 x86.
Eso no significa que el autor haya usado ese código, pero tener una fuente así seguramente habría facilitado mucho este trabajo.
O tal vez hicieron ingeniería inversa del bootloader con método de sala limpia, o quizá había suficiente información pública como para no necesitar conocer el código interno de Windows.
La base de código de PPC no apuntaba directamente a Mac, sino a otros sistemas de IBM/Motorola, pero como es una plataforma “común”, los binarios dentro de la ISO de NT4 no necesitan modificarse.
Y en GitHub se puede encontrar el código fuente repartido en varios repositorios.
Me gustaba muchísimo el viejo Windows NT. Era lo bastante liviano como para correr en hardware de gama baja de fines de los 90, y era mucho más estable que Windows 95.
En vez de eso, usaba ambos con arranque dual.
Muy genial; me entusiasma la idea de revivir la época en la que había que renunciar a todos los juegos de DOS.
Así que, por desgracia, los juegos de DOS no van.
Me gusta el archivo del bootloader: https://github.com/Wack0/maciNTosh/blob/main/boot_files/Syst...
Por cierto, la sintaxis de Open Firmware es demasiado difícil de leer. No fue odiada por nada; fue una oportunidad perdida.
Escribir una nueva HAL de NT es un logro realmente impresionante. Mis respetos.
La documentación, en el mejor de los casos, es bastante fragmentaria, y sospecho que también debe haber muchos bugs desconocidos que las HAL existentes simplemente no llegaron a exponer por pura suerte.