忘记的 CPU(M4 上的 Linux)
黑客们正在努力让 Linux 跑在 Apple 新的 M4 Mac 上,并挖出了一些怪异之处,例如某条 CPU 指令现在会为了省电而擦除寄存器,破坏了先前的内核假设。评论者在 Apple 高效、紧密整合的硬件吸引力,与其封闭生态之间权衡,争论是否应该购买一家被视为敌视或漠视开放系统的公司的机器。讨论中也有人对 AI 辅助逆向工程和 Gravity Linux 之类的分支感兴趣,同时更广泛地争论精力是否应转而用于改进 x86‑64 或开放的 RISC-V 平台。
Apple 的开放性与 Apple Silicon 上的 Linux
- 争论焦点在于 Apple 是“敌视”开放系统,还是仅仅漠不关心、只专注于自己的技术栈。
- 有人认为 Mac 未来不可能被彻底锁死在 bootloader 上,因为 Apple 把它们当作内部开发机器使用;也有人认为未来很可能会把替代操作系统挡在外面。
- 还有人指出,Apple 几乎不为其他操作系统提供任何官方支持或文档;一切(例如 Asahi)都得靠逆向工程。
Asahi 与 Gravity Linux 的现状
- 一种观点认为:Asahi 对新硬件实际上已经“死了”(最近约两代 Mac 都无法启动),而当前支持也缺少睡眠/休眠之类的基本功能,因此更像一个面向未来的复古计算项目。
- 也有人提到 Gravity Linux,这是一个由 AI 辅助的 Asahi 分支,目标是 M4 及之后的机型,并引用了相关媒体报道。
Mac 硬件与其他笔记本
- 许多人称赞 Apple Silicon 笔记本:续航极佳、发热和噪音低、每瓦性能强,触控板也非常好。
- 有人形容 Intel 时代的 MacBook 又吵又热、性价比差;也有人担心 Apple 可能会倒退,但用户现在可选的替代品更少了。
- 反方观点则指出:一些较新的 M 系列 Pro 在持续负载下也会变热变吵,尤其是没有像无风扇 Air 那样进行降频时。
服务器、Apple Silicon 与战略
- 反复出现的论点是:Apple 是一家垂直整合公司,它想卖的是集成产品,而不是 CPU 或开放硬件。
- 有人认为 Apple 可以从服务器/AI 芯片中获利;也有人反驳说:
- 他们已经把能生产的芯片都卖光了。
- 之前的 Xserve 计划失败了。
- 服务器买家期望模块化、可维护、相对开放的硬件/软件,这与 Apple 的设计和商业模式相冲突。
- 还有人提到未来 Apple 服务器芯片的传闻,但也承认这并未得到证实。
AI 辅助逆向工程
- 有人说 M4/M6 的移植工作是由 AI 辅助完成的。
- 这里存在张力:一方希望借助 AI 更快推进,“先把 Linux 跑起来”;另一方则强调手工 RE 本身的黑客乐趣,并反感把 AI 当作所有难题的默认答案。
触控板与协议
- 有一种说法认为,第三方触控板在 macOS 上表现差,是因为 Apple 的手势/触控板协议是私有的,迫使这些设备只能模拟鼠标。
- 也有人反驳:
- macOS 的输入事件很容易伪造;协议并不是主要障碍。
- 差异更多在于 Apple 的硬件、触觉反馈和调校,而不是封闭 API。
- 还有人坚持认为,昂贵的 Windows 笔记本如今也有相当不错的触控板;也有人对此提出质疑,并进一步询问其 Linux 兼容性。
操作系统体验:macOS、Windows、Linux
- 一些开发者喜欢 macOS 作为桌面操作系统,但不喜欢 Apple 笔记本上的键盘/触控板布局以及各种 UX 小毛病。
- 对“企业版 Windows”的批评很强烈:繁重的管理、安全工具、云集成,以及 Acrobat/Defender 带来的额外负担,使系统变慢且令人沮丧。
- 也有人回应说,很多问题是企业策略/配置导致的,而非 Windows 本身固有问题。另有人指出,企业级间谍软件也会让 macOS 同样变差。
- 一个反复出现的观点是:个人 Mac 很讨喜;任何操作系统的企业机器通常都很糟糕。
自由软件、硬件选择与生态系统
- 有人认为购买高度一体化的 Apple 硬件,会损害自由软件的长期健康;自由软件历史上是在文档完备、通用的 PC 生态中发展起来的。
- 他们敦促开发者/重度用户优先选择更开放的 x86-64 或 RISC-V 平台,即使这意味着一定的性能或成本代价。
- 反方观点指出:Microsoft 也有悠久的锁定历史(OEM 协议、专有驱动、ACPI 诡异行为、Secure Boot),所以它并不是 Apple 的“开放”对照物。
- 还有人强调,Linux-on-Mac 的需求很小众;迎合它并不会实质性扩大 Apple 的市场,反而会带来支持负担。
讨论到的技术根因
- 文中一个关键细节被再次提及:
- 较早期的 Apple Silicon 允许配置 ARM
WFI(wait-for-interrupt)指令,以保留或清除寄存器。 - Linux 假定寄存器会在
WFI之间被保留。 - 在 M4 上,这种可配置性被移除,
WFI为了节省电力会始终清除寄存器,打破了这一假设并导致微妙的 bug。
- 较早期的 Apple Silicon 允许配置 ARM