1 पॉइंट द्वारा GN⁺ 2024-07-13 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • यह repository Power Macintosh पर Windows NT बूट करने के लिए ARC firmware और loader source code रखती है, और Gossamer/Grackle परिवार तथा Mac99 परिवार के PowerPC Macintosh को target करती है
  • समर्थित targets Power Macintosh G3, कुछ iMac G3, PowerBook G3/G4, iBook G3/G4, और कुछ Power Macintosh G4 में बंटे हैं; USB driver की अनुपस्थिति के कारण कुछ systems केवल सैद्धांतिक रूप से supported हैं या व्यावहारिक उपयोग में कठिन हैं
  • ARC firmware में Cuda/PMU, ADB keyboard, 32bpp framebuffer, Mac I/O internal IDE, कुछ ATA-6, MESH SCSI, USB OHCI drivers शामिल हैं, लेकिन PCI IDE driver और LBA48 support नहीं है
  • Windows NT side पर Gossamer और Mac99 के लिए HAL, Mac I/O IDE/ATA-6 drivers, ADB keyboard/mouse और ramdisk implement करने वाले HID/storage drivers, तथा 32bpp framebuffer miniport driver तैयार हैं
  • Compatibility target NT 3.51 RTM या बाद का है; NT 3.51 के शुरुआती betas को kernel patch चाहिए और NT 3.5 केवल PowerPC 601 support करता है, इसलिए compatible नहीं है

Project scope और target hardware

  • यह repository Power Macintosh systems को target करने वाले ARC firmware और loader source code शामिल करती है
  • Gossamer architecture targets वे systems हैं जो MPC106 “Grackle” memory controller/PCI host और “Heathrow” या “Paddington” Super I/O chip इस्तेमाल करते हैं
    • 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!”
  • Mac99 architecture targets में “Uni-North” memory controller/PCI host, “KeyLargo” Super I/O chip, और “Intrepid” जैसे derivative chipsets शामिल हैं
    • PowerBook G3 Firewire “Pismo”
    • iBook G3
    • iBook G4
      • mid-2005 iBook G4 PowerBook6,7 में internal mouse USB है, इसलिए mouse अभी काम नहीं करता
    • PowerBook G4
      • early 2005 के बाद के PowerBook G4 PowerBook6,8, PowerBook5,6 और बाद के models USB keyboard और mouse इस्तेमाल करते हैं, इसलिए अभी practical support मुश्किल है
  • iMac G3 slot-loading, iMac G4, Power Macintosh G4 AGP “Sawtooth” और बाद के models USB driver की अनुपस्थिति के कारण सैद्धांतिक रूप से supported हैं, लेकिन फिलहाल practical support कठिन है
  • Hardware के अनुसार समस्याएँ हो सकती हैं, और NT HAL तथा driver source फिलहाल शामिल नहीं हैं

ARC firmware में शामिल drivers

  • ARC firmware में Cuda और PMU support शामिल है
    • ADB keyboard support शामिल है
  • Loader द्वारा set किए गए flat 32bpp video framebuffer का उपयोग करता है
    • ATI और nVidia hardware को support करता है
    • कुछ nVidia GPU फिलहाल काम नहीं करते
  • Mac I/O internal IDE controller driver OpenBIOS से fork किया गया है
    • PCI IDE controller driver नहीं है

      • कुछ बाद के Mac99 systems के ATA-6 controllers, यानी Intrepid और U2, supported हैं
      • LBA48 अभी supported नहीं है
      • pre-Mac99 systems में MESH SCSI controller support है
      • USB OHCI driver OpenBIOS से fork किया गया है
      • pre-Mac99 systems में यह broken state में है, काम नहीं करता और initialization code भी comment out किया गया है

Windows NT के लिए implement किए गए drivers

  • Gossamer chipset के लिए HAL implement किया गया है
    • NT boot के समय framebuffer
    • Super I/O interrupt controller
    • Grackle PCI bus support
    • Cuda और PMU, low-level ADB सहित
    • केवल kernel debugging के लिए serial port
  • Mac99 chipset के लिए भी HAL implement किया गया है
    • NT boot के समय framebuffer
    • MPIC interrupt controller
    • Uni-North की 3 PCI buses का support
    • इनमें से एक AGP है, लेकिन केवल PCI subset supported है
    • PMU, low-level ADB सहित
    • केवल kernel debugging के लिए serial port
  • Mac I/O internal IDE controller और ATA-6 controller drivers NT4 DDK के atapi.sys से fork किए गए हैं
  • General HID/storage driver में भविष्य में USB stack भी शामिल करने का इरादा है, लेकिन फिलहाल केवल ADB keyboard/mouse और text setup के दौरान driver installation floppy drive के रूप में इस्तेमाल होने वाली ramdisk implement की गई है
  • flat 32bpp video framebuffer miniport driver है

Software compatibility

  • Compatibility target NT 3.51 RTM या बाद का है
  • NT 3.51 beta build 944 या उससे नीचे के versions में processor detection bug के कारण चलाने के लिए kernel patch चाहिए
  • NT 3.5 compatible नहीं है क्योंकि यह केवल PowerPC 601 support करता है
  • NT 3.51 PMZ के अतिरिक्त suspend/hibernation features सैद्धांतिक रूप से compatible हो सकते हैं, लेकिन असल में उन features के लिए जरूरी सभी additional drivers फिर से implement करने होंगे

Installation flow और partition constraints

  • अपने system के अनुसार binaries releases page से लेनी चाहिए
  • Gossamer/Grackle systems में image को optical media पर burn करना होगा
    • Old World systems PowerMac G3 beige, PowerBook G3 Wallstreet/PDQ के लिए nt_arcfw_grackle_ow.iso इस्तेमाल करें
    • New World systems iMac G3 tray-loading, PowerMac G3 blue&white, PowerBook G3 Lombard, PowerMac G4 Yikes के लिए nt_arcfw_grackle.iso इस्तेमाल करें
  • Mac99 systems में image को USB drive पर लिखा जा सकता है
  • ARC firmware menu में Run firmware setupRepartition disk for NT installation पर जाकर NT installation के लिए disk partition करें
  • NT partition size 16383x16x63 CHS limit में से 32MB ARC system partition और 1MB घटाकर अधिकतम 8030MB है
  • अगर NT partition size 2GB से ज्यादा है, तो इसे NTFS में format किया जाता है
    • 2024-11-11 से पहले के releases का NTFS format version NT 3.51 के साथ compatible नहीं है
    • NT 3.51 install करने के लिए 2GB या उससे कम partition इस्तेमाल करना होगा
  • NT installation के दौरान cd:\ppc\setupldr चलाया जाता है; अगर कई optical drives हैं तो यह cd01: या cd02: हो सकता है
  • HAL selection step में list की सभी entries system के हिसाब से HAL load करती हैं
    • Gossamer chipset HAL halgoss है
    • Mac99 chipset HAL halunin है
  • Mass storage driver step में दो drivers load करने होंगे
    • Mac I/O IDE Controller
    • PowerMac General HID & Storage
  • Video adapter step में OS के अनुसार अलग option चुनें
    • NT 4 के लिए Open Firmware Frame Buffer
    • NT 3.51 के लिए Open Firmware Frame Buffer (NT 3.x)
  • Text setup में keyboard को XT, AT or Enhanced Keyboard (83-104 keys) में बदलना होगा, और pointing device को No Mouse or Other Pointing Device में बदलना होगा
  • यदि 2GB से बड़ा NT partition बनाया है, तो disk check process में error मिलती है और reboot जरूरी होता है; दूसरे प्रयास में disk check सफल होता है

Known issues और dual-boot सावधानियाँ

  • Gossamer/Gossamer-family laptops में आप battery निकालना चाह सकते हैं
    • Lombard में bugcheck के समय power off करने का तरीका केवल PMU reset या power पूरी तरह हटाना है
    • Wallstreet/PDQ में PMU reset keyboard combination से किया जा सकता है
  • फिलहाल implement किए गए drivers NT को चलाने और उपयोग करने के लिए जरूरी minimum level के हैं
  • NT boot के दौरान PMU hard shutdown देखा गया है, और केवल PMU reset से ठीक हुआ; कारण अज्ञात है
  • Old World systems में ARC firmware के अलावा किसी और target पर boot करने में समस्या हो तो boot के समय Esc दबाने से ARC firmware device skip हो जाता है
  • Mac99 में USB driver अभी काम नहीं करता, इसलिए केवल laptop systems supported हैं
  • अतिरिक्त Mac partitions बनाने पर वे partition table में HFS partitions के रूप में दिखते हैं, लेकिन format नहीं होते
    • OS X 10.1 या बाद के Disk Utility से partition format करना होगा
    • drive नहीं, volume erase करना होगा
    • 2024-11-11 के बाद के releases में OS 9 में boot करके startup पर दिखने वाले dialog से भी format किया जा सकता है
  • OS X installer और OS 8/OS 9 boot में, अगर disk पर NT के लिए जरूरी valid MBR हो, तो error आती है
    • ARC firmware में Run firmware setupReboot to OSX install or OS8/OS9 option इस्तेमाल करना होगा
    • 2024-11-11 के बाद के releases में disk write के समय OS8/9 driver code patch कर दिया जाता है, इसलिए यह option जरूरी नहीं रहता, लेकिन अगर on-disk driver partition किसी और तरीके से update हो जाए तो फिर जरूरी हो जाता है
    • ARC firmware से दोबारा boot करने पर MBR modify होता है
    • OS X 10.2 और 10.3 में बनाए गए HFS partition formats valid MBR होने पर काम नहीं करते

Build conditions और size limits

  • ARC firmware build के लिए devkitPPC जरूरी है
  • powerpcle के लिए compiled libgcc.a arcgrackle/gccle में होना चाहिए
    • 2024-07-12 तक Void Linux mirror पर cross-powerpcle-linux-gnu-0.34_1.x86_64.xbps file मिल सकती है
  • DEVKITPPC environment variable को आम तौर पर devkitPPC directory पर set करना होगा, जो /opt/devkitpro/devkitPPC होती है
  • Build order है: big endian libc, ARC firmware loader, little endian libc, ARC firmware
    • Mac99 के लिए arcloader_unin, arcunin/baselibc, arcunin folders इस्तेमाल होते हैं
  • Release image के अंदर stage1.elf और stage2.elf को replace करना होगा
  • Folder dump से image फिर से बनाते समय hybrid HFS+ISO image बनानी होगी, System folder को blessed state में रखना होगा, और BootX file type को tbxi set करना होगा
  • stage1.elf 16KB या कम, stage2.elf 224KB या कम होना चाहिए
  • Old World bootloader build के लिए संबंधित readme देखें, और Old World ISO image creation के लिए OldWorldIsoBuilder देखें

इस्तेमाल किया गया code और reference projects

  • libc के लिए baselibc इस्तेमाल किया गया है
  • ELF loader और makefile The Homebrew Channel से लेकर modify किए गए हैं
  • कुछ low-level PowerPC code, ARC firmware framebuffer console implementation, और fonts libogc से लेकर modify किए गए हैं
  • कुछ ARC firmware drivers, IDE और USB OpenBIOS से लेकर modify किए गए हैं
    • OpenBIOS का USB driver coreboot से लिया गया है
  • ARC firmware के अंदर ISO9660 filesystem implementation lib9660 को modify करके इस्तेमाल करता है
  • ARC firmware के अंदर FAT filesystem implementation Petit FatFs को modify करके इस्तेमाल करता है

1 टिप्पणियां

 
GN⁺ 2024-07-13
Hacker News टिप्पणियां
  • नॉस्टैल्जिया की वजह से यह लेख याद आ गया: https://lowendmac.com/2014/next-openstep-and-the-triumphant-...
    Amelio और शीर्ष executives को Wintel की विशाल ताकत से मुकाबला करने के लिए नया ऑपरेटिंग सिस्टम चाहिए था, और विकल्प सिमटकर Windows NT license, Solaris license, Copland की सीमित release, Be को acquire करके BeOS इस्तेमाल करना, या NeXT को acquire करके OpenStep इस्तेमाल करना रह गए थे

    • NeXT के API भी Windows NT और Sun के Solaris पर चलने के लिए port किए गए थे, और पूरा NextStep ऑपरेटिंग सिस्टम भी कई CPU architectures पर bare metal पर चलता था
      बताया गया है कि यह मूल रूप से केवल NeXT के Motorola 68k workstations पर चलता था, फिर 32-bit Intel x86 “IBM-compatible” PCs, Hewlett-Packard के PA-RISC workstations, और Sun Microsystems के SPARC workstations पर port किया गया: https://www.wikipedia.org/wiki/OpenStep
    • मैं कम से कम एक बार वह timeline देखना चाहूंगा जिसमें Apple ने NeXT की जगह Be को खरीदा होता
    • Jobs की वापसी के इर्द-गिर्द बनी आज की “classic” कथा में Mac OS 8/9 की engineering success को काफ़ी कम आंका जाता है
      Mac OS X 2001 में 10.1 आने से पहले तक रोज़मर्रा के इस्तेमाल के लिए आसान नहीं था, फिर भी iMac, iBook, PowerBook G3 सफल रहे, इसलिए ऑपरेटिंग सिस्टम ने भी निश्चित रूप से भूमिका निभाई होगी, लेकिन इन कहानियों में यह बात लगभग गायब रहती है
      1997–2001 के दौरान किशोर उम्र का Mac enthusiast होने की मेरी यादों में नॉस्टैल्जिया मिला हो सकता है, लेकिन 90s के मध्य में 7.5 चलाने वाले Performa से 90s के अंत में 9 चलाने वाले iMac तक जाते हुए काफ़ी बदलाव हुए थे
      यह भविष्यवादी ऑपरेटिंग सिस्टम नहीं था, फिर भी end user के नजरिए से 8.6/9 Windows 95/98 की तुलना में अपेक्षाकृत modern लगता था, और 90s के मध्य में भी केवल business के भविष्य के लिहाज़ से स्थिति धुंधली थी; 7.5, 95 से खास तौर पर बदतर नहीं था
    • आखिरकार Copland से बचाने लायक टुकड़ों को जोड़कर Mac OS 8 के रूप में release किया गया
    • यह जानने की जिज्ञासा है कि “Microsoft से Windows NT को license करके उस पर Mac जैसा interface लगाना” वाला विकल्प असल में कितना गंभीर था
      बाकी प्रस्ताव सब reasonable लगते हैं, लेकिन यही एक अजीब तरह से अलग दिखता है, और अच्छा हुआ कि यह सच में नहीं हुआ
  • उसी developer ने पिछले साल PPC NT 4 को Wii पर भी port किया था: https://www.youtube.com/watch?v=d8BpUpr1h9U

  • दिलचस्प काम है। ARC standard https://en.wikipedia.org/wiki/ARC_(specification) DEC Alpha Windows machines और MIPS वगैरह को boot करने के लिए इस्तेमाल होता था
    1998 में Intel में मूल EFI specification ने ARC को model माना और उससे प्रेरणा ली, और Intel Boot Initiative(IBI) भी ज़्यादातर ARC जैसा ही दिखता था
    EFI, यानी आज का UEFI, मोटे तौर पर ARC में MS COM https://en.wikipedia.org/wiki/Component_Object_Model शैली के installable GUID-based interfaces, यानी protocols, जोड़ने जैसा है
    https://www.intel.com/content/dam/www/public/us/en/documents... के पेज 8 पर उस संघर्ष की कहानी का कुछ हिस्सा मिलता है

    • मेरे roommate के Alpha में SRM firmware था, और उससे NetBSD boot किया था
      ARC NT को boot कर सकता था, लेकिन SRM ऐसा नहीं कर सकता था: https://en.wikipedia.org/wiki/SRM_firmware
  • Windows NT सचमुच दिलचस्प था। अगर कोई अच्छी किताब ढूंढ रहे हैं तो Showstopper की सिफारिश करूंगा

    • वह किताब शानदार थी, और उसे Masters of Doom या The Soul of a New Machine के साथ रखा जा सकता है
  • मैं वैसे भी 1998 के bondi blue iMac G3 को चालू करने का कोई कारण ढूंढ रहा था, और तभी यह आ गया; अजीब, rough और बेहद specific project है

  • क्या संदर्भ समझा सकते हो? NT तो जाहिर तौर पर closed source है और शायद Mac के लिए कभी develop भी नहीं हुआ होगा, इसलिए जानना चाहता हूं कि यह असल में है क्या
    सॉफ्टवेयर मिलने की संभावना भी कितनी है, पता नहीं। ज़्यादातर NT software Intel-only के लिए compile हुआ होगा और source भी बंद रहा होगा

    • NT को portability को ध्यान में रखकर design किया गया था, इसलिए एक ही CPU के भीतर भी machine-specific हिस्से साफ़-साफ़ अलग किए गए हैं
      इसलिए अगर सिर्फ़ उस हिस्से को port कर दिया जाए, तो उस architecture के लिए मौजूद binaries चलनी चाहिए
      मुख्य बातें तीन हैं। 1) ARC boot firmware: NT को i860, MIPS जैसे non-x86 systems पर develop किया गया था और ARC default boot firmware था। x86 पर Vista से पहले तक NTLDR इसे emulate करता था। लगता है यह project OpenFirmware के ऊपर ARC-compatible environment देता है, और installation के शुरुआती चरण में driver “floppy” पढ़ने देने के लिए boot firmware से यह दिखाने जैसा दिलचस्प काम भी करता है कि storage device मौजूद है
      2) HAL.DLL: विचार यह है कि NTOSKRNL का मुख्य हिस्सा hardware-independent है, इसलिए हर CPU architecture के लिए एक binary होती है। लेकिन kernel को असली timers या bus से communicate करना पड़ता है, इसलिए वह interface code HAL.DLL में होता है और installation के दौरान सही वाला copy किया जाता है। पुराने Windows की x86-32 HAL list https://www.geoffchappell.com/studies/windows/km/hal/history... पर देखी जा सकती है। अब AMD64 के लिए ज़्यादातर एक ही variant है जो kernel के अंदर चला गया है। यहां main kernel वैसा ही रहता है और halgoss Mac-specific handling करता है
      3) device drivers: NT boot होने के बाद असली drivers की ज़रूरत होती है
      1. की spec ज्ञात है, इसलिए इसे emulate किया जा सकता होगा, और 3) के लिए DDK होगा या दूसरे DDK से अनुमान लगाया जा सकता होगा। 2) वह हिस्सा लगता है जहां सबसे ज़्यादा internal knowledge चाहिए, और leaked NT source उस level तक जाता है या नहीं, मैंने नहीं देखा इसलिए पता नहीं
        compatibility 32-bit PowerPC Win32 binaries, 16-bit x86 Win16 binaries, और NT4 DOS box में चलने वाले x86 DOS programs तक है। x86 Win32 नहीं चलता, और सिर्फ़ Alpha में x86 Win32 emulator था
    • NT4 PowerPC, MIPS, Alpha architectures के लिए develop किया गया था। NT4 source code का काफी हिस्सा भी कभी leak हुआ था https://www.neowin.net/news/exclusive-windows-2000--windows-...
      इसका मतलब यह नहीं कि author ने वह source इस्तेमाल किया, लेकिन ऐसा source हो तो यह काम काफी आसान हुआ होगा
      या फिर bootloader को clean-room तरीके से reverse engineer किया गया होगा, या public information इतनी पर्याप्त रही होगी कि Windows internals के code को जानना ज़रूरी न पड़ा हो
      PPC codebase सीधे Mac को target नहीं करता था, बल्कि IBM/Motorola के दूसरे systems के लिए था, लेकिन क्योंकि यह “common” platform है, इसलिए NT4 ISO के अंदर की binaries को खुद modify करने की ज़रूरत नहीं है
      और GitHub पर source code कई repositories में मिल सकता है
    • Xbox 360 PowerPC-based था और Windows 2000, यानी NT operating system का एक variant चलाता था: https://en.wikipedia.org/wiki/Xbox_360_technical_specificati...
  • मुझे पुराने Windows NT से सच में बहुत लगाव था। 90s के आखिर में low-end hardware पर भी चलने जितना हल्का था और Windows 95 से कहीं ज़्यादा stable था

    • अगर Microsoft ने POSIX subsystem को गंभीरता से push किया होता, तो UNIX assignments की वजह से शायद मुझे Linux को छूने की ज़रूरत ही नहीं पड़ती
      इसके बजाय मैंने दोनों को dual boot करके इस्तेमाल किया
  • बहुत शानदार, और उस दौर को फिर से जीने का इंतज़ार है जब सारे DOS games छोड़ने पड़ते थे

    • यह DOS box चलाने वाला x86 emulator नहीं है, बल्कि PPC पर natively चलने वाला NT है
      इसलिए अफसोस, DOS games नहीं चलेंगे
    • Windows 2000 और XP में VDMSound install करने पर कई MS-DOS games को काफी अच्छी तरह support मिलता था
  • bootloader file पसंद आई: https://github.com/Wack0/maciNTosh/blob/main/boot_files/Syst...
    वैसे, Open Firmware syntax पढ़ना बहुत मुश्किल है। इसे बेवजह नापसंद नहीं किया गया था; यह एक खोया हुआ मौका था

  • नया NT HAL लिखना सचमुच प्रभावशाली उपलब्धि है। सलाम
    documentation ज्यादा से ज्यादा टुकड़ों में ही है, और existing HALs में भी शायद कई unknown bugs होंगे जो किस्मत से सामने नहीं आए