如果按照「黑苹果」的定义 —— 在一台没有苹果 Logo 的电脑上运行苹果公司开发的操作系统 —— 那么全世界第一台「黑苹果」应该诞生于 24 年前。1996 年,苹果将 Macintosh 电脑切换到 IBM 的 PowerPC 架构。时任苹果 CEO Gil Amelio 借此机会,与一些使用和 Macintosh 同款 CPU 和主板的厂商(如摩托罗拉)签约,授权他们的 PC 预装苹果的 Macintosh System 7(即 Classic Mac OS 7)。
然而,1997 年 7 月发生了两件事。一件事是乔布斯回到苹果、被正式任命为苹果公司的 CEO,另一件事是 7 月 26 日 Mac OS 8 正式发布。
Mac OS 8 并没有带来革命性的更新 —— 这个版本原本应该被命名为 Mac OS 7.7 。但是苹果公司前 CEO 同第三方厂商签订的系统授权协议是基于 Macintosh System 7 的。乔布斯选择发布 Mac OS 8.0,巧妙地利用命名和版本号的不同,直接把后续的服务和协议一起中断掉了。
摩托罗拉生产的 StarMax 兼容机,可以直接安装 System 7。
从 PowerPC 到 x86
把 Macintosh System 7 的授权协议理解为黑苹果有些取巧了。要谈现代的黑苹果,那么一定不能无视苹果迈向 x86 的道路,所以让我们把时间再倒回去 5 年吧。
1992 年 2 月 14 日,苹果开展了一项秘密计划「Star Trek」,将 Macintosh System 7(Classic Mac OS 7)连同其应用程序迁移到 Intel 架构兼容的 PC 机(采用 Intel 486 处理器)上,并要求在 12 月 1 日就拿出第一台原型机。苹果的工程师夜以继日的重构,终于赶在 Deadline 之前完成了 System 7 和 QuickTime 的移植。但是随着苹果时任 CEO John Sculley 离开公司,接任的 CEO Michael Spindler 更青睐 PowerPC 架构,Star Trek 随即被取消。
Macintosh System 7 的界面截图
虽然 Star Trek 被取消,但是仍然有部分苹果工程师努力将 Mac OS 移植到 x86 平台,其中成果最显著的是工程师 John Kullman,他在 2001 年 12 月成功将 Mac OS X 移植到了 x86 的 Quora PC 上。被称为「Mac OS X 之父」的 Bertrand Serlet(他后来成为 10.4 Tiger、10.5 Leopard 和 10.6 Snow Leopard 主要负责人)得知此事后与 John Kullman 会面,希望他将 Mac OS X 移植到一台索尼 VAIO 笔记本上。John Kullman 在当天晚餐之前就完成了任务。第二天,乔布斯就带着这台 VAIO 飞往东京,与索尼时任社长安藤国威会面,商讨有关在索尼的 VAIO 上运行 Mac OS X 的事宜,但谈判无疾而终。
即使「索粉」乔布斯未能和索尼达成合作,苹果内部仍然于 2002 年进行了一项新的秘密计划「Marklar」,目的是继续维持 Mac OS X 与 x86 的兼容性。直到 2005 年 6 月 6 日,苹果在旧金山莫斯康展览中心举办了 WWDC 2005,乔布斯正式宣布他们将把个人电脑产品线 从 PowerPC 架构转变为 Intel 架构 ( https://www.apple.com/newsroom/2005/06/06Apple-to-Use-Intel-Microprocessors-Beginning-in-2006/ ) 。2006 年 1 月 10 日,苹果发布了第一台使用 Intel Core(英特尔酷睿)的 MacBook Pro,代替先前的产品线 PowerBook。12 月 28 日,苹果发布了 Mac Mini,同样搭载了 Intel Core 处理器。2007 年 4 月 5 日,苹果推出 Boot Camp(启动转换),4 月 24 日,苹果推出 17 寸的 MacBook Pro,5 月 16 日,苹果推出 12 寸的 MacBook 以代替 iBook 产品线,7 月 5 日,苹果推出 iMac 以代替 eMac 产品线,8 月 7 日,苹果推出新的高端电脑产品线 Mac Pro。2009 年 8 月,苹果推出 Mac OS X 10.6 Snow Leopard,这是第一个只支持 x86 的 Mac OS X,宣告苹果正式放弃了对 PowerPC 的支持。
黑苹果的第一道曙光
回到 WWDC 2005,苹果向开发者推出了搭载 Intel 处理器的 DTK(Dev Transition Kit),搭载了兼容 Intel 的 Mac OS X 10.4.1。
Mac OS X 10.4.1 Tiger 开发版运行在搭载了 Intel 处理器的 DTK 上。
很快,就有人尝试在非苹果硬件上运行开发版的 Mac OS X,但是该系统拒绝在普通的 PC 上运行:
当试图在非 Mac 平台上安装开发版的 Mac OS X Tiger 10.4.1 时会看到上图的提示信息:Darwin/x86 不支持你的硬件配置。
当时,将 Mac OS X Tiger 10.4.1 运行在普通的 PC 上有三大障碍:第一是指令集,DTK 内置的 Intel Pentium 4 660 CPU ( https://ark.intel.com/content/www/cn/zh/ark/products/27484/intel-pentium-4-processor-660-supporting-ht-technology-2m-cache-3-60-ghz-800-mhz-fsb.html ) 支持 SSE-3 指令集,但是 2004 年前后的 PC 常见的处理器都不包括该指令集;其次是芯片组,Mac OS X 开发版只支持 Intel 915G/ICH6 芯片组;最后,当时的苹果的 DTK 使用了 Infineon TPM 安全芯片。讽刺的是,最难克服的障碍其实不是硬件或安全芯片,而是指令集。
目前可考的第一台成功的黑苹果诞生于 2005 年 8 月 10 日,那一天 HardMac 网站收到匿名开发者发来的两段视频 ( https://web.archive.org/web/20051018182314/http://hardmac.com/news/2005-08-10/ ) ,视频中展示了 Mac OS X 10.4.1 Tiger 运行在搭载 Pentium M 735 处理器的 Mitac 8050D 笔记本上。
值得一提的是,2006 年 1 月 10 日苹果发布 MacBook Pro,相比传统 x86 主板使用 BIOS 引导(Legacy),MacBook Pro 使用了 UEFI 引导方式。
2006 年 2 月 14 日,「The Guru」团队的成员 Maxxuss(crg92)发布了首个 Patch 补丁。通过该补丁修补 XNU 内核即可解除引导和安装限制、在任何内置 SSE-2 指令集的 Intel 处理器上运行 Mac OS X 10.4.4,今天 在 InsanelyMac 上仍然可以找到当时的帖子 ( https://www.insanelymac.com/forum/topic/9071-1044-security-broken/?page=1 ) 。几小时之后苹果发布了 10.4.5 版本的 Mac OS X,又过了两周 crg92 就放出了新的针对 10.4.5 的补丁。
Mac OS X 10.5 Leopard 于 2007 年正式发布,随后 BrazilMac 发布了一个通用补丁。用户可以通过购买 Mac OS X 零售版的安装光盘、打上补丁即可让 XNU 内核运行在普通 Intel PC 上。之后,数个黑客和开发者(如 Lorem、SynthetiX、ToH、StageXNU 团队)都纷纷释出了内核补丁。同时,基于这些补丁制作的 Mac OS X「发行版」开始出现,如 iATKOS、KALYWAY ( https://www.insanelymac.com/forum/topic/77069-kalyway-1051-dvd-release-the-official/ ) 和 iPC ( http://ipcosx86.wikidot.com/ ) 。
2009 年,Mac OS X 10.6 Snow Leopard 正式发布,这是第一个完全放弃 PowerPC 架构的 Mac OS X 版本。来自俄罗斯的 Netkas ( http://netkas.org/ ) 率先释出了一个修改版的变色龙 EFI 可以用于引导 Mac OS X 10.6。紧接着,Voodoo 团队也释出了兼容 10.6 的官方版本更新。
除了率先使变色龙兼容 Mac OS X 10.6,Netkas 还开发了 FakeSMC 和 HWSensor。现在 Netkas 致力于拓展 AMD 显卡的兼容性(如在 macOS 10.14 Mojave 为 Raedon RX560 启用 Metal 支持、避免 Raedon W5700 在 macOS 10.15.5 上引发 Kernel Panic 等)。
2011 年,Mac OS X 10.7 Lion 发布。这是苹果第一个不再提供安装光盘的 Mac OS X 版本,也是第一个支持 SSD TRIM 的 Mac OS X 版本。来自俄罗斯的 Michael Belyaev(usr-sse2)率先找到了安装方法,将修改版安装镜像写入到 USB 存储设备,并通过 XPC EFI Bootloader(一个基于 DUET 的模拟 EFI 引导器)启动 XNU 内核。