为什么 Apple Silicon 的虚拟机如此不同?

Apple 向基于 ARM 的 Silicon 迁移,重塑了 Mac 上的虚拟化方式:借助 Apple 的 Virtualization/Hypervisor 框架和 VirtIO,ARM macOS 与 Linux 虚拟机可以高速运行,但完整的 x86‑64 客户机仍依赖更慢的模拟。开发者报告称,在 ARM 虚拟机中通过 Rosetta 或 Windows-on-ARM 自身的翻译层运行 x86‑64 Linux 二进制文件效果不错(通常通过 Docker、OrbStack、Parallels 或 UTM 实现),但完整虚拟化的 x86 系统仍明显更慢,而且有时不稳定。该讨论还强调了平台限制与权衡——例如两台 macOS 虚拟机上限、缺少 32 位 ARM 虚拟化,以及 Apple 对嵌套虚拟化等功能的严格控制——并延伸到 iPad 与 Mac 的角色分工,以及本地与远程开发环境的未来等更广泛问题。

Apple Silicon 上的 x86‑64 现状

  • 在 Apple Silicon 上对 x86/x86‑64 操作系统进行完全虚拟化,依赖于模拟(例如纯 QEMU),并且一直被描述为“非常慢”。
  • 一个常见模式是:在虚拟机中运行 ARM64 操作系统(Linux 或 Windows),然后使用该操作系统自身的 x86 翻译(Linux/macOS 上的 Rosetta、Windows 的 x86 仿真)来运行单个应用。
  • 一些用户表示命令行工具和轻量办公的性能尚可;另一些人则遇到稳定性问题(例如 Elixir 构建段错误),除非应用特定的变通方案。

Linux 虚拟机和 Docker 中的 Rosetta 2

  • Apple 通过 Virtualization.framework 向 ARM64 Linux 客户机提供 Rosetta,使 ARM 虚拟机内的 x86‑64 二进制文件也能以较好性能运行。
  • Docker Desktop 以及 OrbStack、Lima/Colima 等工具利用这一点在 Apple Silicon 上运行 amd64 容器;性能通常接近,甚至有时优于高端 Intel 笔记本。
  • 针对 QEMU JIT 缺陷存在一些变通方案(例如为 Erlang/Elixir 设置构建标志)以避免崩溃。

VM 工具:Parallels、UTM、VMware 及其他

  • Parallels + Windows 11 ARM 被广泛称赞适合日常办公和开发;Windows 内置的 x86 仿真大多是“不可见的,而且就是能用”。
  • 对 Parallels 的抱怨包括广告/追加销售、订阅授权、Linux 桌面体验不佳(例如滚动)、以及隐私政策方面的担忧。
  • UTM(QEMU 前端)被认为可用,但在完整 x86 操作系统模拟时通常较慢;在运行 ARM 客户机并配合 Rosetta 时表现更好。
  • OrbStack 和 Lima 被强调为面向命令行的 Apple Silicon Linux 解决方案,常常取代 Docker Desktop。

VirtIO、Apple Virtualization,以及 macOS 虚拟机限制

  • 讨论提到 Apple 正在转向 VirtIO 和 Virtualization.framework;VirtIO 本身并非 ARM 或 Apple 专属,但 Apple 开始随 Apple Silicon 提供主机驱动。
  • Apple Silicon 上的 macOS 对同时运行的 macOS 虚拟机施加了硬性上限:技术上和合同上都只能同时运行两台;Linux 虚拟机不受此限制。
  • 有人反映 macOS 虚拟机无法登录 Apple ID,这使其不太适合一般桌面用途。

Windows、游戏,以及替代方案

  • 很多 Windows 游戏在 Parallels + Windows ARM 下运行得相当不错,但兼容性并不稳定,而且内核级反作弊仍然是主要障碍。
  • 对于游戏,一些评论者更偏好基于 Wine 的方案(CrossOver、Whisky、Game Porting Toolkit)或云游戏(例如 GeForce Now),而不是完整虚拟机。

更广泛的主题与抱怨

  • 几位评论者认为,对于重度 x86 工作负载,远程 x86 服务器/工作站比本地模拟更实用。
  • 尽管硬件支持存在,人们仍对 macOS 客户机缺少嵌套虚拟化感到不满,也对 Apple 围绕虚拟机的许可/战略限制感到不满。