1 poin oleh GN⁺ 2024-07-13 | 1 komentar | Bagikan ke WhatsApp
  • Repositori ini berisi firmware ARC dan kode sumber loader untuk mem-boot Windows NT di Power Macintosh, ditujukan untuk PowerPC Macintosh seri Gossamer/Grackle dan seri Mac99
  • Target dukungan mencakup Power Macintosh G3, sebagian iMac G3, PowerBook G3/G4, iBook G3/G4, dan sebagian Power Macintosh G4; karena tidak adanya driver USB, sebagian sistem hanya didukung secara teoretis atau sulit digunakan secara nyata
  • Firmware ARC mencakup driver Cuda/PMU, keyboard ADB, framebuffer 32bpp, IDE internal Mac I/O, sebagian ATA-6, MESH SCSI, dan USB OHCI, tetapi tidak memiliki driver PCI IDE maupun dukungan LBA48
  • Di sisi Windows NT, tersedia HAL untuk Gossamer dan Mac99, driver Mac I/O IDE/ATA-6, driver HID/storage yang mengimplementasikan keyboard/mouse ADB dan ramdisk, serta driver miniport framebuffer 32bpp
  • Target kompatibilitas adalah NT 3.51 RTM atau lebih baru; beta awal NT 3.51 memerlukan patch kernel, dan NT 3.5 tidak kompatibel karena hanya mendukung PowerPC 601

Cakupan proyek dan perangkat keras target

  • Repositori ini mencakup firmware ARC dan kode sumber loader untuk sistem Power Macintosh
  • Target arsitektur Gossamer adalah sistem yang menggunakan memory controller/PCI host MPC106 “Grackle” dan chip Super I/O “Heathrow” atau “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!”
  • Target arsitektur Mac99 mencakup memory controller/PCI host “Uni-North”, chip Super I/O “KeyLargo”, serta chipset turunan seperti “Intrepid”
    • PowerBook G3 Firewire “Pismo”
    • iBook G3
    • iBook G4
      • iBook G4 mid-2005 PowerBook6,7 memakai mouse internal berbasis USB, sehingga mouse belum berfungsi
    • PowerBook G4
      • model PowerBook G4 PowerBook6,8, PowerBook5,6 dan yang lebih baru setelah early 2005 memakai keyboard dan mouse USB, sehingga saat ini sulit didukung untuk penggunaan nyata
  • iMac G3 slot-loading, iMac G4, serta model setelah Power Macintosh G4 AGP “Sawtooth” secara teoretis didukung karena tidak adanya driver USB, tetapi saat ini sulit didukung untuk penggunaan nyata
  • Masalah dapat muncul tergantung perangkat keras, dan sumber NT HAL serta driver saat ini belum disertakan

Driver yang disertakan dalam firmware ARC

  • Firmware ARC mencakup dukungan Cuda dan PMU
    • Termasuk dukungan keyboard ADB
  • Menggunakan flat framebuffer video 32bpp yang dikonfigurasi oleh loader
    • Mendukung perangkat keras ATI dan nVidia
    • Sebagian GPU nVidia saat ini tidak berfungsi
  • Driver controller IDE internal Mac I/O di-fork dari OpenBIOS
    • Tidak ada driver controller PCI IDE

      • Controller ATA-6 pada sebagian sistem Mac99 generasi akhir, yaitu Intrepid dan U2, didukung
      • LBA48 belum didukung
      • Pada sistem pre-Mac99, controller MESH SCSI didukung
      • Driver USB OHCI di-fork dari OpenBIOS
      • Pada sistem pre-Mac99, driver ini rusak dan tidak berfungsi, serta kode inisialisasinya juga dikomentari

Driver yang diimplementasikan untuk Windows NT

  • HAL untuk chipset Gossamer telah diimplementasikan
    • Framebuffer saat boot NT
    • Super I/O interrupt controller
    • Dukungan bus PCI Grackle
    • Termasuk Cuda dan PMU, serta ADB level rendah
    • Port serial khusus untuk kernel debugging
  • HAL untuk chipset Mac99 juga telah diimplementasikan
    • Framebuffer saat boot NT
    • MPIC interrupt controller
    • Dukungan tiga bus PCI Uni-North
    • Salah satunya adalah AGP, tetapi hanya subset PCI yang didukung
    • Termasuk PMU dan ADB level rendah
    • Port serial khusus untuk kernel debugging
  • Driver controller IDE internal Mac I/O dan controller ATA-6 di-fork dari atapi.sys milik NT4 DDK
  • Driver HID/storage umum dimaksudkan untuk juga mencakup stack USB di masa depan, tetapi saat ini hanya mengimplementasikan keyboard/mouse ADB dan ramdisk yang dipakai sebagai floppy drive untuk instalasi driver saat instalasi teks
  • Tersedia driver miniport flat framebuffer video 32bpp

Kompatibilitas perangkat lunak

  • Target kompatibilitas adalah NT 3.51 RTM atau lebih baru
  • NT 3.51 beta build 944 atau lebih lama memerlukan patch kernel agar dapat dijalankan karena bug deteksi prosesor
  • NT 3.5 tidak kompatibel karena hanya mendukung PowerPC 601
  • Fitur tambahan suspend/hibernation pada NT 3.51 PMZ secara teoretis dapat kompatibel, tetapi dalam praktiknya semua driver tambahan yang diperlukan untuk fitur tersebut harus diimplementasikan ulang

Alur instalasi dan batasan partisi

  • Biner yang sesuai dengan sistem harus diunduh dari halaman releases
  • Sistem Gossamer/Grackle harus membakar image ke media optik
    • Sistem Old World seperti PowerMac G3 beige dan PowerBook G3 Wallstreet/PDQ menggunakan nt_arcfw_grackle_ow.iso
    • Sistem New World seperti iMac G3 tray-loading, PowerMac G3 blue&white, PowerBook G3 Lombard, dan PowerMac G4 Yikes menggunakan nt_arcfw_grackle.iso
  • Sistem Mac99 dapat menulis image ke drive USB
  • Dari menu firmware ARC, masuk ke Run firmware setupRepartition disk for NT installation untuk mempartisi disk bagi instalasi NT
  • Ukuran partisi NT maksimum adalah 8030MB, setelah mengecualikan partisi sistem ARC 32MB dan 1MB dari batas CHS 16383x16x63
  • Jika ukuran partisi NT melebihi 2GB, partisi akan diformat sebagai NTFS
    • Versi format NTFS pada rilis sebelum 2024-11-11 tidak kompatibel dengan NT 3.51
    • Untuk memasang NT 3.51, gunakan partisi 2GB atau lebih kecil
  • Selama instalasi NT, jalankan cd:\ppc\setupldr; jika ada beberapa drive optik, bisa menjadi cd01: atau cd02:
  • Pada tahap pemilihan HAL, semua item dalam daftar akan memuat HAL yang sesuai dengan sistem
    • HAL chipset Gossamer adalah halgoss
    • HAL chipset Mac99 adalah halunin
  • Pada tahap driver mass storage, dua driver harus dimuat
    • Mac I/O IDE Controller
    • PowerMac General HID & Storage
  • Pada tahap video adapter, pilih opsi berbeda tergantung OS
    • NT 4 adalah Open Firmware Frame Buffer
    • NT 3.51 adalah Open Firmware Frame Buffer (NT 3.x)
  • Dalam instalasi teks, keyboard harus diubah menjadi XT, AT or Enhanced Keyboard (83-104 keys), dan pointing device harus diubah menjadi No Mouse or Other Pointing Device
  • Jika membuat partisi NT lebih dari 2GB, proses pemeriksaan disk akan menemukan error dan perlu reboot; pada percobaan kedua pemeriksaan disk akan berhasil

Masalah yang diketahui dan catatan dual-boot

  • Pada laptop seri Gossamer/Gossamer, Anda mungkin ingin melepas baterai
    • Di Lombard, satu-satunya cara mematikan daya saat bugcheck adalah reset PMU atau memutus daya sepenuhnya
    • Reset PMU pada Wallstreet/PDQ dapat dilakukan dengan kombinasi tombol keyboard
  • Driver yang saat ini diimplementasikan adalah tingkat minimum yang diperlukan untuk menjalankan dan menggunakan NT
  • PMU hard shutdown pernah diamati saat boot NT, hanya dapat dipulihkan dengan reset PMU, dan penyebabnya tidak diketahui
  • Jika ada masalah saat boot ke target selain firmware ARC pada sistem Old World, menekan Esc saat boot akan melewati perangkat firmware ARC
  • Pada Mac99, driver USB belum berfungsi sehingga hanya sistem laptop yang didukung
  • Jika membuat partisi Mac tambahan, partisi itu akan terlihat sebagai partisi HFS di tabel partisi, tetapi tidak akan diformat
    • Partisi harus diformat dengan Disk Utility OS X 10.1 atau lebih baru
    • Yang harus dihapus adalah volume, bukan drive
    • Pada rilis setelah 2024-11-11, partisi juga dapat diformat dengan boot ke OS 9 dan menggunakan dialog yang muncul saat startup
  • Installer OS X dan boot OS 8/OS 9 akan error jika ada MBR valid yang diperlukan NT di disk
    • Gunakan opsi Run firmware setupReboot to OSX install or OS8/OS9 di firmware ARC
    • Pada rilis setelah 2024-11-11, kode driver OS8/9 dipatch saat penulisan disk sehingga opsi ini tidak diperlukan, tetapi jika partisi driver on-disk diperbarui dengan cara lain, opsi ini kembali diperlukan
    • MBR akan dimodifikasi ketika boot kembali dengan firmware ARC
    • Format partisi HFS yang dibuat oleh OS X 10.2 dan 10.3 tidak berfungsi jika ada MBR valid

Kondisi build dan batas ukuran

  • Build firmware ARC memerlukan devkitPPC
  • libgcc.a yang dikompilasi untuk powerpcle harus ada di arcgrackle/gccle
    • Per 2024-07-12, file cross-powerpcle-linux-gnu-0.34_1.x86_64.xbps dapat ditemukan di mirror Void Linux
  • Variabel lingkungan DEVKITPPC biasanya harus diatur ke direktori devkitPPC, yaitu /opt/devkitpro/devkitPPC
  • Urutan build adalah big endian libc, loader firmware ARC, little endian libc, lalu firmware ARC
    • Mac99 menggunakan folder arcloader_unin, arcunin/baselibc, dan arcunin
  • stage1.elf dan stage2.elf di dalam image rilis harus diganti
  • Saat membuat ulang image dari dump folder, buat image hybrid HFS+ISO, jadikan folder System dalam status blessed, dan atur tipe file BootX menjadi tbxi
  • stage1.elf harus 16KB atau lebih kecil, dan stage2.elf harus 224KB atau lebih kecil
  • Untuk build bootloader Old World, lihat readme terkait; untuk pembuatan image ISO Old World, lihat OldWorldIsoBuilder

Kode yang digunakan dan proyek referensi

  • libc menggunakan baselibc
  • ELF loader dan makefile diambil dari The Homebrew Channel lalu dimodifikasi
  • Sebagian kode PowerPC level rendah, implementasi konsol framebuffer firmware ARC, dan font diambil dari libogc lalu dimodifikasi
  • Sebagian driver firmware ARC, IDE, dan USB diambil dari OpenBIOS lalu dimodifikasi
    • Driver USB OpenBIOS diambil dari coreboot
  • Implementasi filesystem ISO9660 internal firmware ARC menggunakan versi modifikasi lib9660
  • Implementasi filesystem FAT internal firmware ARC menggunakan versi modifikasi Petit FatFs

1 komentar

 
GN⁺ 2024-07-13
Opini Hacker News
  • Karena nostalgia, tulisan ini jadi teringat: https://lowendmac.com/2014/next-openstep-and-the-triumphant-...
    Amelio dan jajaran eksekutif senior membutuhkan sistem operasi baru agar bisa bersaing dengan raksasa Wintel, dan pilihannya menyempit menjadi melisensikan Windows NT, melisensikan Solaris, merilis Copland dalam versi yang diperkecil, mengakuisisi Be lalu memakai BeOS, atau mengakuisisi NeXT lalu memakai OpenStep

    • API NeXT juga di-port agar berjalan di atas Windows NT dan Solaris milik Sun, dan seluruh sistem operasi NextStep juga berjalan langsung di bare metal pada beberapa arsitektur CPU
      Ada penjelasan bahwa awalnya ia hanya berjalan di workstation Motorola 68k milik NeXT, lalu di-port ke PC “kompatibel IBM” Intel x86 32-bit, workstation PA-RISC milik Hewlett-Packard, dan workstation SPARC milik Sun Microsystems: https://www.wikipedia.org/wiki/OpenStep
    • Ingin sekali, walau hanya sekali, melihat garis waktu ketika Apple membeli Be alih-alih NeXT
    • Dalam narasi “klasik” masa kini yang berpusat pada kembalinya Jobs, rasanya keberhasilan rekayasa Mac OS 8/9 cukup diremehkan
      Mac OS X bahkan belum mudah dipakai sungguhan sebelum versi 10.1 pada 2001, tetapi iMac, iBook, dan PowerBook G3 sukses, jadi sistem operasinya pasti ikut berperan; namun cerita-cerita seperti ini nyaris tidak memasukkannya
      Ini mungkin bercampur nostalgia karena saya adalah pengguna Mac fanatik remaja pada 1997–2001, tetapi ada cukup banyak perubahan dari Performa pertengahan 90-an yang menjalankan 7.5 ke iMac akhir 90-an yang menjalankan 9
      Walau bukan sistem operasi masa depan, dari sudut pandang pengguna akhir 8.6/9 terasa relatif lebih modern daripada Windows 95/98, dan bahkan pada pertengahan 90-an, 7.5 tidak secara khusus lebih buruk daripada 95; hanya saja masa depannya dari sudut bisnis tampak suram
    • Pada akhirnya, mereka memang mengumpulkan bagian-bagian yang masih bisa diselamatkan dari Copland dan merilisnya sebagai Mac OS 8
    • Penasaran seberapa serius sebenarnya opsi “melisensikan Windows NT dari Microsoft dan menempelkan antarmuka mirip Mac” itu
      Usulan lain semuanya masuk akal, tetapi yang ini tampak sangat menonjol sendiri, dan benar-benar syukur hal itu tidak pernah terjadi
  • Pengembang yang sama tahun lalu juga mem-port PPC NT 4 ke Wii: https://www.youtube.com/watch?v=d8BpUpr1h9U

  • Pekerjaan yang menarik. Standar ARC https://en.wikipedia.org/wiki/ARC_(specification) digunakan untuk mem-boot mesin DEC Alpha Windows, MIPS, dan lainnya
    Pada 1998, spesifikasi EFI asli dari Intel dimodelkan dari dan terinspirasi oleh ARC, dan Intel Boot Initiative (IBI) juga sebagian besar tampak seperti ARC
    EFI, yang kini menjadi UEFI, kurang lebih mirip ARC ditambah antarmuka berbasis GUID yang dapat dipasang ala MS COM https://en.wikipedia.org/wiki/Component_Object_Model, yaitu protokol
    https://www.intel.com/content/dam/www/public/us/en/documents... halaman 8 memuat sebagian kisah susah payah itu

  • Windows NT benar-benar menarik. Kalau mencari buku bagus, saya merekomendasikan Showstopper

    • Buku itu luar biasa, dan layak disejajarkan dengan Masters of Doom atau The Soul of a New Machine
  • Kebetulan saya sedang mencari alasan untuk menyalakan bondi blue iMac G3 keluaran 1998, lalu muncullah ini; proyek yang aneh, kasar, dan sangat spesifik

  • Bisa jelaskan konteksnya? NT tentu saja bersumber tertutup dan sepertinya tidak pernah dikembangkan untuk Mac, jadi saya penasaran sebenarnya ini apa
    Saya juga tidak tahu seberapa mungkin mendapatkan perangkat lunaknya. Sebagian besar software NT dikompilasi khusus untuk Intel dan kemungkinan source-nya juga tertutup

    • NT dirancang dengan mempertimbangkan portabilitas, jadi bahkan dalam CPU yang sama pun bagian yang spesifik per mesin dipisahkan dengan rapi
      Karena itu, jika hanya bagian tersebut yang di-porting, binary yang sudah ada untuk arsitektur itu seharusnya bisa berjalan
      Intinya ada tiga. 1) Firmware boot ARC: NT dikembangkan di sistem non-x86 seperti i860 dan MIPS, dan ARC adalah firmware boot bawaannya. Di x86, NTLDR mengemulasikannya sampai sebelum Vista. Proyek ini tampaknya menyediakan lingkungan yang kompatibel dengan ARC di atas OpenFirmware, sekaligus melakukan hal menarik: membuat firmware boot berpura-pura ada perangkat penyimpanan agar bisa membaca “floppy” driver pada tahap awal instalasi
      2) HAL.DLL: Gagasannya adalah NTOSKRNL utama bersifat independen dari perangkat keras, sehingga ada satu binary untuk tiap arsitektur CPU. Namun kernel tetap harus berkomunikasi dengan timer atau bus nyata, jadi kode antarmuka itu ada di HAL.DLL dan versi yang sesuai disalin saat instalasi. Daftar HAL x86-32 Windows lama bisa dilihat di https://www.geoffchappell.com/studies/windows/km/hal/history.... Sekarang, untuk AMD64, sebagian besarnya sudah masuk ke dalam kernel. Di sini kernel utama dibiarkan apa adanya, sementara halgoss menangani bagian khusus Mac
      3) Driver perangkat: setelah NT berjalan, tetap dibutuhkan driver nyata
      Spesifikasi untuk 1) sudah diketahui, jadi semestinya bisa diemulasikan, dan untuk 3) mungkin ada DDK atau bisa disimpulkan dari DDK lain. 2) tampaknya bagian yang paling membutuhkan pengetahuan internal, dan saya belum pernah melihat apakah source NT yang bocor turun sampai ke level itu, jadi tidak tahu
      Kompatibilitasnya kira-kira binary Win32 PowerPC 32-bit, binary Win16 x86 16-bit, dan program DOS x86 yang berjalan di DOS box NT4. Win32 x86 tidak bisa, dan hanya Alpha yang punya emulator Win32 x86
    • NT4 dikembangkan untuk arsitektur PowerPC, MIPS, dan Alpha. Sebagian besar kode sumber NT4 juga pernah bocor https://www.neowin.net/news/exclusive-windows-2000--windows-...
      Bukan berarti pembuatnya memakai source itu, tetapi jika source semacam itu tersedia, pekerjaan ini sepertinya akan jauh lebih mudah
      Atau bisa jadi bootloader-nya direkayasa balik dengan metode clean-room, atau informasi publiknya sudah cukup sehingga tidak perlu mengetahui kode internal Windows
      Basis kode PPC bukan ditujukan langsung untuk Mac, melainkan untuk sistem lain dari IBM/Motorola, tetapi karena ini platform “umum”, binary di ISO NT4 sendiri tidak perlu dimodifikasi
      Dan di GitHub, kode sumbernya bisa ditemukan di beberapa repositori
    • Xbox 360 berbasis PowerPC dan menjalankan Windows 2000, yaitu varian dari sistem operasi NT: https://en.wikipedia.org/wiki/Xbox_360_technical_specificati...
  • Saya benar-benar menyukai Windows NT lama. Cukup ringan untuk berjalan di hardware kelas rendah pada akhir 90-an, dan jauh lebih stabil daripada Windows 95

    • Kalau Microsoft benar-benar serius mendorong subsistem POSIX, mungkin saya tidak perlu menyentuh Linux hanya karena tugas UNIX
      Sebagai gantinya, saya memakai keduanya dengan dual boot
  • Sangat keren, dan saya menantikan untuk kembali mengalami masa ketika harus menyerah pada semua game DOS

    • Ini bukan emulator x86 yang bisa menjalankan DOS box, melainkan NT yang berjalan native di PPC
      Jadi sayangnya game DOS tidak bisa
    • Windows 2000 dan XP mendukung cukup banyak game MS-DOS dengan lumayan baik jika VDMSound dipasang
  • Saya suka file bootloader-nya: https://github.com/Wack0/maciNTosh/blob/main/boot_files/Syst...
    Sebagai tambahan, sintaks Open Firmware sangat sulit dibaca. Bukan tanpa alasan ia dibenci, dan itu adalah peluang yang terlewat

  • Menulis NT HAL baru adalah pencapaian yang benar-benar mengesankan. Hormat saya
    Dokumentasinya paling-paling hanya terpencar-pencar, dan sepertinya ada banyak bug yang belum diketahui hanya karena kebetulan tidak tersingkap oleh HAL yang sudah ada