未来通车之后

一台 2020 年的苹果过渡机 DTK,为什么六年后还能开机,却不敢重装。

目录6 节
  1. 试车
  2. 限载
  3. 撤场
  4. 被取消
  5. 两头不靠
  6. 流水向前

Lost in Transition

为未来开路的它,如今被困在过去。

这台电脑上一次差点死掉,只花了五十块钱就救了回来。换壳后,它能通电,接上显示器却始终没有画面。我一度以为是接显示器时烧了主板,拆开检查,最后发现只是电源接口附近有一处虚焊。补上焊锡,再次开机,桌面重新亮起。

它是苹果 2020 年借给开发者的过渡机,全名 Developer Transition Kit,简称 DTK。开发者付 500 美元加入过渡计划,得到一段限期使用权,机器始终归苹果,用完要还。随机器附带的卡片上写着:「Mac 的未来,由你来写。」(The future of Mac is yours to write.)

六年后,它停在 macOS Big Sur 11.2.3,还能进入桌面,我却不敢抹掉重装。以前重装系统是一种清理,到了这台机器上,不重装反而成了维护。这篇要讲的,就是一台 Mac 怎么从「能用」走到「不敢动」。

试车

苹果上一次发这种机器,是 2005 年 Mac 从 PowerPC 换到 Intel 的时候。一颗 Pentium 4 装进 Power Mac G5 的机箱,开发者另付 999 美元,2006 年年底前归还。当时的苹果 CEO 在台上说,这只是开发平台,永远不会当产品卖,「我们不想让它们满天飞」。那台机器多焊了一颗安全芯片,想把 Mac 系统锁在苹果认可的硬件上,可锁焊在机器里,总有人能撬开。黑苹果就是从那台机器开始的。

2020 年这台,拆开来有种缝合怪的感觉:存储芯片和 2020 款 iPad Pro 同款,外壳、电源和风扇与 2018 款 Mac mini 通用,接口却少了雷雳,只有普通的 USB-C。处理器是 iPad Pro 用的 A12Z。固件里还留着别的设计,有带屏幕和键盘的,也有被指向苹果造车项目的芯片。发到开发者手里的 Mac mini,只是唯一驶出工地的一辆。

芯片上的丝印,比 2020 年 6 月的发布会还早了半年多。同样是 A12Z,装进 iPad 就跑 iPadOS,装进这台 Mac 就跑 macOS,决定它跑什么的是主板和固件。

所以今年 3 月 MacBook Neo 发布,我并不意外。不少报道说它是第一台用上 iPhone 芯片的 Mac,这话没错;可第一台用上 iPhone、iPad 这一系芯片的 Mac,六年前就有了,只是从来没卖过。

限载

苹果给开发者的说明,第一件事就是叮嘱:别拿它测性能,也别测能耗。

后面的限制一条比一条具体。Intel 程序要靠一层叫 Rosetta 2 的翻译,才能在苹果自己的芯片上运行,这台机器上的翻译只用得上一半的核心。内存的管理单位也变了,老程序习惯按 4 KB 一页来用内存,这台机器一页是 16 KB,把 4 KB 写死的程序一打开就出错。系统坏了,它不能自己重装,要用线接到另一台 Mac 上才能救。维持时钟的纽扣电池只能撑半年左右,要拆机才能换,协议偏偏又不许开发者自己拆开。

这些限制放在一辆工程车上都说得通,它只需要载开发者先过一趟桥,半年以后的事本来不归它管。后来的 M1 把这些限制一一抹平,只有停在施工那年的机器,还把它们留在身上。

2020 年 11 月,第一批 M1 Mac 上市。大桥通车,工程车开始撤场。

撤场

2021 年 2 月,苹果要求开发者在 3 月底前归还机器。说好用一年,不到一年就来收。补偿一开始是 200 美元抵扣额,只能买 M1 机型,社区骂得很凶,没过几天苹果改口到 500 美元,也放宽到其他产品。大多数人寄回去了,但不是所有人都寄了。4 月的 Big Sur 11.3 不再支持 DTK,11.2.3(20D91)成了它最后一个正式版本。

寄回去的机器交给回收商销毁:有的在芯片旁边钻孔,有的剪断主板边缘的线路,存储芯片也被拆走。按条款,它们一台也不该留下。这些板子出厂时,芯片里就烧定了不同的标记:内部调试用的,修好了也装不上正式系统;正式发给开发者的,才有机会救回来。

一位海外维修玩家在 2024 年修过一张边缘被剪断的板子。剪口把好几层线路压到一起,短路了,他只能一点点锉掉变形的部分,再补上新的存储芯片。电路通了,板子还是卡在开机循环里:苹果的存储芯片要和板上的无线模块配对,新换的那颗得重新写好,才肯往下走。

焊点、剪口、配对,这些都还在主板上,烙铁够得着。接下来的问题,烙铁够不着。

被取消

2024 年底,社区里陆续有人抹掉 DTK 之后卡在循环里:系统装得进去,界面写着已激活,重启又回到恢复模式,一遍又一遍。

我一开始以为是激活锁,后来才弄明白,那是两回事。激活锁是防盗用的,跟着主人的 Apple ID 走;这里卡住的,是机器自己的身份。在苹果芯片的 Mac 上,每次彻底抹掉重装,机器都要重新生成一套身份密钥,再联网找苹果领一张证书,新装的系统拿到证书才能启动。这张证书和这颗芯片一一对应,别的机器的借不来。接另一台 Mac 刷系统这一步,至今还走得通,卡住的是后面那张证书,所以能刷进去,也不等于能激活。

2005 年那批机器,锁焊在主板里,后来才有人撬得开,十多年前我在上网本上装黑苹果,走的也是这条路。这一次,放不放行,由苹果的服务器说了算。

那阵子我还担心这是一场乌龙,可验证一次的代价太大,还活着的 DTK 本来就不多。后来我这台给了答案:它最后一次激活是 2024 年 7 月,今年 4 月我又去请求了一次,服务器回的是 400,请求不被接受。是苹果有意不再放行,还是那头早已没人值守,外面的人说不清。对这台机器来说结果一样,服务器认出了它,然后拒绝了。系统里还有一张旧证书,有效期到 2027 年 1 月,到期会怎样,我不知道,只能先记下来。

修到能开机以后,我第一件事是把整块硬盘原样复制了一份。它不认雷电硬盘盒,只好换一个普通的 USB-C 移动硬盘。真搞炸了,至少还有一次回头的机会;可身份密钥存在安全芯片里,不在硬盘上,复制不走。装双系统、装 Linux,理论上都能试,可每一步都要改动它的启动设置,万一哪一步需要重新找苹果服务器,它就可能再也回不来。这个险,没必要冒。

今天还能开机,已经够悬了。

两头不靠

只要不去动它,它仍然像一台正常的 Mac。Safari 能开网页,终端和 Xcode 也能用,甚至能直接侧载 iPad 的 app。

毛病都藏在日常里。新款妙控键盘连不上蓝牙,老款 Lightning 的反而没问题;显示器偶尔不亮,重新插拔一次线就好,别慌;Final Cut Pro 一打开就卡死,剪映和 OBS 都趴窝。

最意外的一次,是朋友发来一个在 M1 上构建的 app。iPad 的软件都装得上,我想着大家都是 ARM 芯片,这个应该也能直接运行,结果双击就退出,终端里只剩一句 illegal instruction:非法指令。

Apple 芯片不是一句 ARM 就能概括的。同样说 ARM 这门语言,M1 会的一些新词,A12Z 没学过(它停在更早的 ARMv8.3)。后来的开发工具默认按 M1 的词汇来写,程序里只要出现一个 A12Z 不认识的词,就会当场停下。把同一个项目改成照顾 A12Z 重新编译(-mcpu=apple-a12),又能正常运行。

DTK 就这样成了夹心层:为 M1 写的软件,有些话它听不懂;为 Intel 写的软件,又卡在 4 KB 内存页和打了折的翻译上。这些事分开看都合理,摞在同一台机器上,就把它一点点挤出了能用的范围。

连翻译层自己也要下桥了。今年 9 月推送的 macOS 27,是第一个只支持苹果芯片的 macOS,也是最后一个完整带着 Rosetta 2 的版本;到了 macOS 28,它只为一部分旧游戏留下。macOS 27 的名字叫 Golden Gate,金门大桥。巧的是,Big Sur 开发时的内部代号,也叫 GoldenGate。同一个名字,六年前用在开头,今年用在了结尾。

第一批 M1 Mac 当然比 DTK 正常得多,可 Rosetta 的退场日程已经作用在每一台 Mac 上,按系统版本走,不按硬件走。DTK 只是早一点到了这一步。

流水向前

既然现成的软件不再回来,我就反过来为它写。

7 月 10 日,我把自己的桌面装上去。朋友那个 app 双击就退出,是因为后来的工具按 M1 来写;我的桌面第一次启动,也停在同一处:架构不对(Wrong architecture)。浏览器还停在 2020 年(Safari 14.0),后来网页上的一些写法(public class fields、对话框、flex gap),它同样读不懂。我没有把整座桥改窄,只在旁边留了一条便道,编译时对准这颗 A12,不写成 M1(-mcpu=apple-a12,不要写成 apple-m1)。当天晚上,桌面亮了。「关于本机」里仍写着 Apple Development Platform。

8 月 7 日仓库搬家,这条便道没有跟着走。没有人写下「停止支持」,开关还留在壳上。主路自己往前,不再为了这一台,把后来的写法退回去(样式包在 @layer 里,Safari 14.0 会整层丢掉;正式包要 Node 24,七月靠的是 Node 18)。

2020 年,开发者赶在大桥通车之前,替一台还没上市的 Mac 写软件。现在,我赶在它还能开机的时候,替一台留在过去的 Mac 写软件。卡片上那句话,当年指向对岸,六年后指向脚下。

我不会把它当作主力电脑,也不准备把它只放进柜子里。隔一段时间开一次机,更新备份,把它的硬件信息、日志和固件版本存下来。离那张旧证书到期,只剩几个月了。

大桥已经通车,工程车停在雾中。趁它还能进入桌面,我继续让它工作,把仍然能验证的东西一条条记下来:哪一版固件,哪一次请求,回的是 400。

演示磁盘

这篇文章配有演示磁盘,可以在 AI System 6 里打开。

打开演示磁盘