黑苹果的历史

公众号程序猿DD

共 12328字,需浏览 25分钟

 ·

2020-09-26 16:20

点击上方蓝色“程序猿DD”,选择“设为星标”

回复“资源”获取独家整理的学习资料!

来源 | 公众号「云原生实验室」

楔子:第一台“黑苹果”

如果按照“黑苹果”的定义 —— 在一台没有苹果 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 架构[1]。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[2] 支持 SSE-3 指令集,但是 2004 年前后的 PC 常见的处理器都不包括该指令集;其次是芯片组,Mac OS X 开发版只支持 Intel 915G/ICH6 芯片组;最后,当时的苹果的 DTK 使用了 Infineon TPM 安全芯片。讽刺的是,最难克服的障碍其实不是硬件或安全芯片,而是指令集。

目前可考的第一台成功的黑苹果诞生于 2005 年 8 月 10 日,那一天 HardMac 网站收到匿名开发者发来的两段视频[3],视频中展示了 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 上仍然可以找到当时的帖子[4]。几小时之后苹果发布了 10.4.5 版本的 Mac OS X,又过了两周 crg92 就放出了新的针对 10.4.5 的补丁。

苹果随后的几个月内发布了 Mac OS X 10.4.6 和 10.4.7,OSx86 社区成员设法将这些系统中的新版本的内核替换为 10.4.4 和 10.4.5 的旧内核、实现将这些新版本的系统安装在 PC 上。但是从 10.4.8 开始,苹果开始更广泛地使用 SSE-3 指令集,意味仅仅通过修补 XNU 内核已经无法再兼容只支持 SSE-2 指令集的处理器(如早期的奔腾 4)。来自新西兰的 macOS、iOS 开发者与逆向工程师 Mfiki[5](Vitaly Pronkin)于 2006 年 12 月 24 日放出了一个新的更精简的 Patch 以使 XNU 内核兼容 SSE2;而开发者 Semthex 则制作了一个通过 SSE-2 模拟 SSE-3 的指令集模拟器。

Mac OS X 10.5 Leopard 于 2007 年正式发布,随后 BrazilMac 发布了一个通用补丁。用户可以通过购买 Mac OS X 零售版的安装光盘、打上补丁即可让 XNU 内核运行在普通 Intel PC 上。之后,数个黑客和开发者(如 Lorem、SynthetiX、ToH、StageXNU 团队)都纷纷释出了内核补丁。同时,基于这些补丁制作的 Mac OS X“发行版”开始出现,如 iATKOS、KALYWAY[6] 和 iPC[7]

之后随着 EFI 引导方法的流行,这些发行版都逐渐改为在系统中内置 Boot-132 或 Chameleon。

中场休息:对美国法院的一瞥

2008 年 4 月,一家名为 Psystar 的公司在美国佛罗里达州注册。这家公司计划公开销售 Intel PC,预装内置 BrazilMac 补丁的 Mac OS X 10.5 Leopard。这种 PC 一开始被称为“OpenMac”,很快又被更名为“Open Computers”。

Pystar 的“OpenMac”

2008 年 7 月 3 日,苹果在加利福尼亚州地区法院起诉 Pystar 公司,声称 Pystar 公司侵犯了苹果的版权、违反了数字千年版权法案(DMCA),“避开、绕过、移除、解扰、解密、停用、破坏苹果保护机制”。

2008 年 8 月 28 日,Pystar 公司在佛罗里达州地区法院起诉苹果,声称苹果公司存在垄断和其它不正当竞争行为。2008 年 11 月 18 日,Pystar 公司的起诉被驳回。

2009 年 2 月 5 日,Pystar 公司赢得苹果第一轮的版权诉讼[8]这一判例意味着苹果的 EULA 中的“禁止在一台没有苹果 Logo 的电脑上运行苹果公司开发的操作系统”条款可能是没有法律效力的

2009 年 4 月,苹果的新闻发言人表示 Pystar 公司没有依法公开任何财务信息(利润、资产、负债)。Pystar 的 CEO 兼创始人对此拒绝置评,并仍然拒绝透露任何财务信息。

2009 年 5 月 26 日,Pystar 公司申请破产保护,试图通过破产保护法案拖延苹果的诉讼。在申请破产期间,Pystar 公司仍然在销售预装 Mac OS X 的 PC,因此 2009 年 6 月法院解除了苹果的诉讼中止,使苹果可以继续起诉 Pystar 公司。2009 年 8 月 12 日,Pystar 公司的破产保护申请被佛罗里达地区法院驳回。

2009 年 11 月 13 日,加利福尼亚州地方法院判定 Pystar 违反了 DMCA 和侵犯了苹果的版权,定于 12 月 14 日举行听证会。2009 年 12 月 15 日,加利福尼亚州法院发表永久性禁令,禁止 Pystar 制造、分发、协助任何人安装任何版本(包括未来版本)的 Mac OS X。2010 年 1 月 16 日,Pystar 公司提起上诉。2012 年 5 月 14 日,最高法院驳回了 Pystar 公司的上诉,苹果赢得了最终的诉讼。

向 Chameleon(变色龙)进发

回到 WWDC 2005 上发布的搭载 Intel DTK,内置了一个名为 Boot-132 的 UEFI Bootloader 用于加载 XNU 内核。。当时 Intel 的 UEFI 还是新鲜产物、几乎所有的 PC 都在使用 BIOS 引导(也就是现在被称为 Legacy BIOS 的引导方法)。Boot-132 后来随 Mac OS X 10.4.8 的 XNU 内核一起开源,所以在 2007 年,David Elliott 基于 Linux 的 GRUB Bootloader 和苹果 Boot-132 的源码开发了一个初级的 Bootloader,能够为使用 Legacy BIOS 引导的 PC 提供一个“模拟 UEFI”环境用于加载 XNU 内核。

除了 Boot-dfe,David Elliott 的作品还包括初版的 NullCPUPowerManagement[9],用于兼容苹果的电源管理 AppleIntelCPUPowerManagement。

2008 年,Voodoo 团队(原 StageXNU 团队,你应该记得在上个章节中看到过这个名字)将 David Elliott 开发的“模拟 UEFI”实现与苹果原始的 Boot-132 结合,制作了 Chameleon(变色龙)项目。随着 Chameleon 的不断迭代更新,许多功能如注入 Device Properties(设备属性)、加载 Kernel Extension(内核扩展,即 kext)、修补 ACPI、模拟 SMBIOS 机型、图形化界面的启动菜单都一一被支持。Voodoo 团队还开发了数个 kext 如 VoodooPower、VoodooSDHCI 以及在 Hackintosher 中耳熟能详的 VoodooHDA 和 VoodooPS2Controller。

在 QEMU 虚拟机中通过 Chameleon 2.1.0 引导 PureDarwin,该版本的变色龙已经支持图形化引导界面。

由于变色龙的出现,越来越少的人选择反编译修改 XNU 内核、而是通过 Bootloader 替换 DSDT、注入设备属性和 kext。考虑到数字千年版权法(DMCA)禁止修改并分发 macOS 中非开源部分的操作系统代码,使用 Bootloader 引导黑苹果无需直接修改操作系统或 XNU 内核本身、因而成功绕过了这一法律。

2009 年,Mac OS X 10.6 Snow Leopard 正式发布,这是第一个完全放弃 PowerPC 架构的 Mac OS X 版本。来自俄罗斯的 Netkas[10] 率先释出了一个修改版的变色龙 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 内核。

usr-sse2 现在是 acidanthera 团队的活跃成员,参与了 OpenCore 和 VirtualSMC 等的开发。截至本文写就,usr-sse2 正在研究苹果的 IO80211Family。

同年,来自 tonymacx86 的 MacMan 开发了 变色龙的一个分支 Chimera[11]。tonymacx86 社区提供的工具 UniBeast(以及后来的 MultiBeast)内置了 Chimera、大大简化了黑苹果的安装。

来到 Clover(四叶草)的时代

不论是 David Elliott 的 Boot-dfe 还是变色龙,都是基于一个模拟的 EFI 环境。这意味着:

  • 黑苹果不能安装 BootCamp 实现 Windows 和 Mac OS X 之间切换
  • 黑苹果无法进入恢复模式,因为变色龙无法引导 Recovery HD 分区
  • 黑苹果的硬盘不能使用 GUID 分区表(GPT),因为变色龙不支持 GPT、只支持 MBR

微软从 Windows 7 开始对 UEFI 引导提供初步支持、主流 PC 和笔记本厂商都逐渐用 EFI 代替 Legacy BIOS;同时随着大于 2TiB 的硬盘的出现,GPT 越来越流行,Hackintosher 对支持 GPT 的、真正的 UEFI Bootloader 的呼声越来越高。

Clover 的历史可以回溯到 2006 年出现的一个 FreeBSD 发行版 TrueOS。TrueOS 社区的 Christoph Pfisterer 开发了一个带有图形化界面的 UEFI Bootloader“rEFIt”。

2011 年 Christoph Pfisterer 中止了 rEFIt 的开发。次年,开发者 Roderick W. Smith Fork 了 rEFIt、成立了 rEFInd 项目。同年,Slice 和 OSx86 社区讨论开发一个 UEFI Bootloader:除了支持和变色龙一样模拟 EFI 环境外、还需要兼容真正的 UEFI 环境;要能正确读取 HFS+ 分区;式、能够修补 ACPI、加载 kext、加载 SMBIOS、内置 Quirk 以在 PC 上启动 macOS。社区决定这个 Bootloader 应该基于 rEFInd 开发。2012 年,OS X 10.8 Mountain Lion 正式发布,同年 Clover 发布了第一个版本:

2014 年 10 月 16 日 OS X 10.10 Yosemite 发布,次日 Voodoo 团队发布了变色龙最后一个正式版本 2.2,提供了 Yosemite 的引导支持。

正是从 OS X 10.10 Yosemite 开始,Hackintosher 开始倾向于使用苹果发布的原始 OS X 系统镜像、使用尽可能少的 kext 和 Patch,以保证黑苹果的稳定性。

2015 年 9 月 30 日,OS X 10.11 El Capitan 发布,tonymacx86 出品的黑苹果安装工具 UniBeast 将内置的 Bootloader 从变色龙的分支 Chimera 替换为 Clover,正式宣告变色龙寿终正寝。

尾声:几个时间

截至本文写就,macOS 11.0 Big Sur 已经进入 Public Beta 5,苹果已经宣布未来 Mac 将会从 Intel 切换到 ARM 架构的 Apple Silicon。不少 Hackintosher 都在担心黑苹果的未来。本文就以对几个时间点的探讨作为结尾吧。

Clover 用了多久才取代了 Chameleon(变色龙)?

  • 2008 年初 Chameleon 发布了首个版本
  • 2012 年 Clover 发布了首个版本
  • 2014 年 10 月 17 日 Chameleon 发布了最后一个版本

Clover 从发布第一个版本发布到取代 Chameleon 只用了 2 年。

苹果从 PowerPC 切换到 Intel 用了多久?

  • 2005 年 6 月 6 日苹果召开 WWDC 2005,宣布苹果将从 PowerPC 切换到 Intel
  • 2006 年 1 月 10 日苹果发布了第一台使用 Intel 的 MacBook Pro
  • 2009 年 8 月 28 日苹果发布了 Mac OS X 10.6 Snow Leopard,正式停止对 PowerPC 的支持。

也就是说,苹果从宣布切换到 Intel 到 Mac OS X 放弃 PowerPC 支持用了 4 年。

OpenCore 什么时候会取代 Clover?

OpenCore 0.0.1 发布于 2019 年 5 月 4 日。如果 Clover 只用了两年就完成了从发布到取代变色龙,那么明年 OpenCore 就会完全取代 Clover(指 Clover 终止开发)。然而抛开历史背景讲历史就是在耍流氓,前面的章节我们看到了变色龙的诸多缺陷(模拟的 UEFI、不支持 GPT 等),被 Clover 取代是必然的。但是现在 Clover 并没有明显的弊端、而 OpenCore 也没有非常显着的优势,加之 Clover 的维护仍然非常活跃,因此在可预见的未来中 Clover 和 OpenCore 仍然会同时存在。

苹果什么时候会放弃 Intel 的 x86 架构?

这可能是 Hackintosher 们最关心的问题了。如果套用苹果从 PowerPC 切换 Intel 的时间表,那么苹果会在 WWDC 开完后第二年(也就是 2021 年)就会将所有 Mac 切换为 ARM 架构(不再发布搭载 Intel 处理器的 Mac)、而 macOS 则会在三年后(也就是 2024 年)正式放弃对 Intel 处理器的支持。

但是,现在苹果的策略和 15 年前的还是存在着重大区别 —— WWDC 2005 开完以后,苹果在 2005 年下半年没有再发布任何新 Mac,主要是释出现有的 PowerPC 架构的 Mac 的性能升级(增加运行内存、硬盘扩容等),接着整个 2006 年都没有发布 PowerPC 架构的 Mac、全部产品线都切换到 Intel 架构;而 WWDC 2020 之后,苹果却还是发布了搭载 10 代 Intel 处理器的 27 寸的 iMac 2020。显然,这一次苹果在更换架构这件事上要保守许多,苹果甚至可能在到 2021 年都会发布搭载 Intel 11 代处理器的 Mac。

另外,我们还可以再列一张关于 macOS 的时间表:

  • OS X 10.10 Yosemite 发布于 2014 年 10 月 16 日、兼容 2007 年及以后的 iMac 和 MacBook Pro,最后更新于 2015 年 8 月 15 日。
  • OS X 10.11 El Caption 发布于 2015 年 9 月 30 日、兼容 2007 年及以后的 iMac 和 MacBook Pro,最后更新于 2018 年 7 月 9 日。
  • macOS 10.12 Sierra 发布于 2016 年 9 月 20 日,兼容 2009 年下半年发布的 iMac 和 MacBook,最后更新于 2019 年 9 月 26 日。
  • macOS 10.13 High Sierra 发布于 2017 年 9 月 25 日,兼容 2009 年下半年发布的 iMac 和 MacBook,最后更新于 2019 年 12 月 10 日。
  • macOS 10.14 Mojave 发布于 2018 年 9 月 24 日,兼容 2010 年的 iMac Pro 和 2012 年下半年发布的所有 Mac,最后更新于 2019 年 12 月 10 日。
  • macOS 10.15 Catalina 发布于 2019 年 10 月 7 日,兼容 2010 年的 iMac Pro 和 2012 年下半年发布的所有 Mac,截至本文写就仍在维护。
  • macOS 11.0 Big Sur 于 2020 年 6 月 22 日开始内测,兼容 2013 年上半年发布的 MacBook Air,截至本文写就仍处于公测阶段。

通过这张时间表可以发现,过去 6 年的每个 macOS 大版本都会兼容至少 7 年以前发布的设备。因此就算苹果从 2021 年开始再也不发布搭载 Intel 处理器的 Mac,macOS 可能也需要到 2025 年才会终止对 Intel 处理器的支持。

本文最后更新于 天前,文中所描述的信息可能已发生改变

参考资料

[1]

从 PowerPC 架构转变为 Intel 架构: https://www.apple.com/newsroom/2005/06/06Apple-to-Use-Intel-Microprocessors-Beginning-in-2006/

[2]

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

[3]

HardMac 网站收到匿名开发者发来的两段视频: https://web.archive.org/web/20051018182314/http://hardmac.com/news/2005-08-10/

[4]

在 InsanelyMac 上仍然可以找到当时的帖子: https://www.insanelymac.com/forum/topic/9071-1044-security-broken/?page=1

[5]

Mfiki: http://mifki.com/

[6]

KALYWAY: https://www.insanelymac.com/forum/topic/77069-kalyway-1051-dvd-release-the-official/

[7]

iPC: http://ipcosx86.wikidot.com/

[8]

Pystar 公司赢得苹果第一轮的版权诉讼: http://www.computerworld.com/s/article/9127579/Mac_clone_maker_wins_legal_round_against_Apple

[9]

NullCPUPowerManagement: http://tgwbd.org/darwin/extensions.html#NullCPUPowerManagement

[10]

Netkas: http://netkas.org/

[11]

变色龙的一个分支 Chimera: https://tonymacx86.blogspot.com/2011/04/chimera-unified-chameleon-bootloader.html


原文链接:https://blog.skk.moe/post/history-osx86/


往期推荐

记一次订单号的重复事故

实例告诉你如何把 if-else 重构成高质量代码!

盘点提高国内访问 GitHub 的速度的 9 种方案

这个需求很简单,明天上线没问题吧?要不要怼回去?

最最最全面的Java异常面试及解答

Spring Boot 多版本更新,紧急修复 RFD 安全漏洞


我们在星球聊了很多深度话题,你不来看看?

我的星球是否适合你?

点击阅读原文看看我们都聊过啥?


浏览 196
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报