当前位置: 首页 > news >正文

苹果硅芯片 Mac 虚拟化:独特优势与使用限制并存,性能与应用难题待解

苹果硅芯片 Mac 上虚拟化:独特优势与使用限制并存

在苹果硅芯片 Mac 登场前,用户借助 VMware 和 Parallels 等第三方虚拟化软件,能运行不同版本的 macOS、Linux 或 Windows 系统。这些软件可让不同操作系统的虚拟机在 macOS 中运行英特尔处理器代码。为向 Arm 处理器过渡,苹果在技术筹备时决定将虚拟化功能集成进 macOS,这是新 Mac 硬件支持虚拟化的唯一可行办法,目的是让旧版 macOS 及 Linux 和 Arm 版 Windows 等操作系统在虚拟机中运行。

这和在苹果硅芯片 Mac 上运行不同处理器(如英特尔)的操作系统这一难题不同。Rosetta 2 能翻译英特尔应用程序代码,却无法处理操作系统,因为操作系统需软件模拟器,这由 UTM 等工具实现。

管理程序

在 macOS 等主操作系统运行现代虚拟化软件,需具备“管理程序”(hypervisor)。2014 年的 OS X 10.10 系统中,苹果就把它加入 macOS。和英特尔处理器一样,Arm CPU 也为管理程序提供硬件支持。所以,苹果硅芯片 Mac 实现虚拟化的剩余工作主要集中在设备支持方面。英特尔 Mac 相对简单,因其主要用 PC 硬件组件,但苹果新 Mac 并非如此。

Virtio 驱动程序

苹果硅芯片里的硬件设备和英特尔 Mac 中的同类设备(若有)不同。即便苹果完整记录设备信息供外部使用,第三方要实现和英特尔 Mac 相同的设备支持,工程工作量也太大。所以,仅靠管理程序让其他方构建完整虚拟化软件不可行,也难以达到苹果和用户期望的高性能。于是,苹果选择将设备支持以 Virtio 驱动程序形式集成到 macOS 中。

Virtio 是 Rusty Russell 最初开发的标准,用于为 I/O 设备提供抽象层。比如,客户操作系统调用打开文件时,请求先传给前端的 Virtio 存储设备半虚拟化驱动程序,再由其传给与存储设备交互的 Virtio 后端驱动程序。虽看似不如传统虚拟化方式高效,但实际上可能高效得多。

其显著优势是,创建虚拟化应用程序只需配置并打开所需的 Virtio 设备,让客户操作系统、Virtio 和主机系统协同工作即可。这正是应用程序使用苹果虚拟化框架所做的事。

苹果选 Virtio 受以下事实影响:Linux 对 Virtio 支持良好,而当时 macOS 没有。所以,在 Monterey 系统发布前几年,苹果工程师着手在 macOS 中构建 Virtio 支持,这也解释了为何 macOS 轻量级虚拟化仅在 Monterey 及更高版本的主机系统和客户操作系统中可用。在 macOS(包括主机和客户操作系统)中实现的 Virtio 还扩展了对键盘和指向设备、共享剪贴板以及支持 Metal 和 GPU 的高性能图形的支持。

在 Virtio 模型中,提供这些支持是操作系统的任务,而非虚拟化软件的任务。对 VMware 和 Parallels 等供应商来说,这既降低了开发成本,也降低了产品商业价值,因为它们无法通过技术手段提供更好或更快的图形支持,这些支持由客户和主机操作系统通过 Virtio 或类似技术提供。这让苹果能掌控苹果硅芯片上虚拟化所支持的硬件和功能。

性能

另一方面,它保证了虚拟机的最佳性能。虚拟机的 CPU 和 GPU 代码可像在主机上一样直接在硬件上运行,且 Virtio 设备性能几乎与主机相当。在主机和客户操作系统均为 macOS Monterey 的情况下,用 Geekbench 6.3.0 进行的可比基准测试结果如下:

  • CPU 单核:虚拟机 3,643,主机 3,892
  • CPU 多核:虚拟机 12,454,主机 22,706(受可用核心数量限制)
  • GPU Metal:虚拟机 102,282,主机 110,960,虚拟机作为苹果半虚拟化设备。

后续版本的 macOS 在此基础上有所改进。值得注意的是,分配给虚拟机的虚拟核心主要是性能核心,所以虚拟机中运行的线程(通常在效率核心上运行)通常比在主机上运行得快得多。

最初,虚拟机主存储在其磁盘映像中的性能不佳,但最近有了显著改善,即便在虚拟机中启用了 FileVault 也是如此。

Rosetta 2

虽 Rosetta 2 不能用于翻译客户操作系统,但仍可在 macOS 虚拟机中使用,以翻译并运行与 macOS 10.15 Catalina 兼容的 64 位英特尔代码应用程序。不过,它和苹果硅芯片上的任何版本的 macOS 一样,存在相同局限性,即无法处理旧版或 32 位应用程序。当苹果在 macOS 28 中停止对 Rosetta 的全面支持时,这一功能将尤为有用。即便主机无法运行,装有旧版本 macOS 的虚拟机仍可翻译并运行兼容的 64 位英特尔代码。

主要限制

直到 Sequoia 系统发布,虚拟机才支持 iCloud 和 iCloud Drive 访问,且现在要求主机和客户操作系统都必须运行 macOS 15.0 或更高版本。由于支持这些功能的虚拟机在结构上与早期虚拟机不同,这意味着从早期 macOS 升级而来的虚拟机仍无法支持 iCloud 或 iCloud Drive。

苹果硅芯片上 macOS 虚拟化的最大限制是无法运行许多来自 App Store 的应用程序。虽有些应用程序能正常运行,但任何需检查 App Store 凭证的应用程序都会失败,因为虚拟机无法登录 App Store。这似乎是苹果授权限制的结果,除非苹果重新考虑并重新设计其应用商店政策,否则这种情况不太可能改变。

一些次要功能也存在问题。例如,虚拟机的网络连接始终被视为以太网连接,即便它们可使用主机的 Wi-Fi 进行连接,也不支持 Wi-Fi 连接。音频支持也很奇怪,似乎仅部分可用。虽 Sequoia 系统支持存储设备,但早期的 macOS 仅限于虚拟机的磁盘映像和共享文件夹。

许多人不知道,苹果的 macOS 许可证在第 2B(iii) 节中确实涵盖了其在虚拟机中的使用,规定任何时候在 Mac 上最多只能同时运行两个 macOS 虚拟机。这一限制由 macOS 强制执行,尝试启动第三个虚拟机将被阻止。需注意的是,该许可证还将虚拟化的用途限制为“(a) 软件开发;(b) 软件开发期间的测试;(c) 使用 macOS Server;或 (d) 个人非商业用途”。值得一提的是,苹果于 2022 年 4 月 21 日停止了对 macOS Server 的支持,并且 Monterey 之后的任何 macOS 版本都不支持该服务器。

使用场景

以下是一些可使用 macOS 虚拟机的场景示例:

  • 在无法运行 Sonoma 系统的 M4 和 M5 Mac 上运行与 Sonoma 兼容但与 Sequoia 不兼容的应用程序。
  • 在自定义环境中运行应用程序,例如使用不同的地区和语言设置。
  • 在安全的环境中检查和访问潜在的恶意文档或应用程序。
  • 测试与多个版本和本地化的 macOS 的兼容性。
  • 在隔离环境中处理高度敏感的数据。
  • 同时访问不同的 iCloud 账户。
  • 运行 macOS 27 的测试版。

总结

苹果硅芯片上的 macOS 虚拟机具有以下特点:

  • 可在任何型号上运行 Monterey 及更高版本,但不能运行 Big Sur 或英特尔版 macOS。
  • 可运行大多数下一版本 macOS 的测试版。
  • 可使用 Rosetta 2 运行英特尔应用程序。
  • 提供接近正常的 CPU 和 GPU 性能,并支持 FileVault。
  • 只有当主机和客户操作系统都运行 Sequoia 或更高版本时,才能访问 iCloud 和 iCloud Drive。
  • 但无法运行大多数 App Store 应用程序。
http://www.jsqmd.com/news/733478/

相关文章:

  • 数学老师都在用的GeoGebra 6,从下载到上手画图,10分钟搞定动态几何
  • 别把 FlashQLA 当成所有 Qwen 推理的通用加速包:我 clone 到 RTX 3090 后,先卡住的是这 3 个边界
  • 基于MCP协议构建AI助手与教务系统的自动化连接器
  • Spacedesk旧版已失效?别急,手把手教你用最新版把安卓平板变成Windows 11副屏
  • 手把手教你用STM32F103实现UDS Bootloader:从内存分配到刷写流程的保姆级配置
  • vCenter Web界面打不开?别慌,跟着官方工程师的排错脚本走一遍(附证书检查脚本)
  • 2026年音乐节派对必备:哪些闪耀老爹鞋能让你C位出道?
  • ESP8266/ESP32上传程序总超时?别急着换板子,先检查这6个地方(附串口驱动修复方法)
  • 从‘开环’到‘闭环’:反馈如何让不完美的运放变得好用(以LM358为例)
  • 对比直接使用厂商 API 通过聚合平台管理多模型成本更透明
  • 树莓派4B散热改造:从官方套件到第三方风扇,手把手教你选装与避坑
  • 幽冥大陆(一百15)酒店门锁总卡写入故障处理——东方仙盟筑基期
  • BetterGI:3大智能模块提升原神80%日常效率的自动化工具
  • YOLOv5 INT8量化效果实测:4MB小模型,速度与精度如何取舍?
  • Python 爬虫高级实战:全站深度爬虫与链接去重策略
  • Taotoken的API Key管理与审计日志功能保障企业调用安全
  • 别先把 torch.compile 写进训练模板:我把 6 类 graph break 跑完后,更建议先过这份排查清单
  • 国央企如何提升科技创新与产业升级的协同化水平?
  • 从物理盘到加密文件:用LUKS和cryptsetup在Debian上创建一个可移动的加密‘保险箱’文件
  • 告别Keil/IAR!用STM32CubeMX + Segger Embedded Studio在Linux/Mac上玩转STM32(保姆级教程)
  • 别再只会git merge了!用rebase和squash让你的提交历史像教科书一样清晰
  • 像素均值流技术:单步高质量图像生成新突破
  • 别再死记硬背了!用这5个Mathf函数搞定Unity角色平滑移动(附完整代码)
  • 利用 Taotoken 实现智能体对不同模型 API 密钥的集中管控
  • 深入STM32G431 GPIO:从推挽/开漏原理到蓝桥杯板载LED锁存器电路分析与代码实现
  • Java编程语言特性和优势
  • 2901. 最长相邻不相等子序列 II
  • 深度解析:这款开源小说阅读器如何革新你的数字阅读体验?
  • vscode 必备插件
  • ABAQUS材料密度里的‘坑’:温度相关、分布定义与单位制换算避坑指南