在 IOS 上利用虚拟机软件运行 windows 或 linux 实际上并不是什么新鲜事,早在 2017 年,少数派就有 文章 进行了介绍。但在那时,这么做仅仅是为了怀旧、玩玩游戏。而现在,苹果赋予 iPad 的生产力元素越来越多,运行在 iOS/iPadOS 上的虚拟机则就有了更大的意义。
UTM 就是一款开源的虚拟机软件,它将 QEMU 移植到了 iOS 上,通过完整地模拟整个计算机硬件系统,可以让我们在 iOS 设备上运行 Windows、Linux 和 Android。甚至,Twitter 上还有用户展示了在 iPad 上通过 UTM 运行老版本的 macOS,进而利用 Xcode 来进行 iOS 的开发工作的梦幻操作。
在 iPad 上进行 iOS 开发
如果你有自己安装 ipa 文件的惯用方法,可跳过此段,直接进入创建虚拟机部分。或者你也可以先阅读体验部分,再来看看有没有必要安装 UTM。
鉴于其特殊性,UTM 无缘 App Store。因此,我们需要下载 ipa 文件,手动进行安装。UTM 官方推荐使用 AltStore 进行安装。ipa 文件可类比到 Android 下的 apk 文件,是 iOS 的应用安装包。不同的是,ipa 文件需要我们通过苹果开发者账户签名之后才可以安装到 iOS 设备上。正常情况下,这一过程应该通过 Xcode 完成。AltStore 则简化了这一过程,可以不用通过 Xcode 就可安装 ipa 文件,并提供管理上的便利。
首先,我们前往 GitHub 获取 UTM 最新的 ipa 文件,以及前往 AltStore 官方网站 获取 AltStore 的电脑端依赖软件 AltServer 相应平台的安装包。然后,在电脑上安装 AltServer,安装好后在 AltServer 中登录我们的 Apple ID 并菜单中安装邮箱插件。
接着,运行对应的邮件应用 1,邮件应用须登录了我们 Apple ID 的绑定邮箱,在设置中启用 AltServer 插件。最后,将 iOS 设备用数据线连接到电脑上,在 AltServer 的菜单中向目标设备安装 AltStore。静候片刻,AltStore 就会出现在 iOS 设备的主屏幕上。
安装 AltStore 后,保持电脑端的邮件应用和 AltServer 运行并确保 iOS 设备与电脑处于同一局域网。再将 UTM 的 ipa 文件传输到 iOS 设备上,启动 AltStore,在底部导航栏中选择 My Apps,轻触左上角的加号,选择 UTM 的 ipa 文件。很快,UTM 就会出现在我们的主屏幕上了。
回到 AltStore 的 My Apps 页面,我们会发现应用后都注明了该应用会在 7 天后失效,这是由于我们的 Apple ID 并没有购买苹果 99 美元每年的付费开发者账号,我们需要每 7 天重新对应用进行签名。在应用即将失效前一天,AltStore 会发送通知提醒我们,我们可以在电脑端启动 AltServer 和邮件应用,并点击 AltStore 的 My Apps 页面中的 Refresh All 字样来手动重新签名。
UTM 的交互界面友好,并且提供了中文支持。但是必须注意,由于一个 iOS 的系统漏洞,在退出 UTM 时必须使用主界面左上角的叉按钮或者虚拟机运行时工具栏上的关闭按钮,不可以直接在 App 切换器里上滑 UTM 卡片来强制关闭。否则,UTM 可能无法启动或者导致死机,需要重启设备才能恢复正常。
在创建虚拟机前,我们需要先下载好欲安装的系统镜像,并导入到 iOS 设备上。轻触主界面右上角的加号按钮,可以调出创建虚拟机界面。我们可以看到,UTM 支持虚拟化多种架构和 CPU,但是如果你不知道这些选项的实际意义,请保留默认的架构和 CPU。
iOS 的机制会强制关闭任何占用内存超过 40% 的应用,所以内存的设置需要谨慎。UTM 官方推荐我们将虚拟机内存设置为设备可用内存的 25%,这是因为 UTM 应用程序本身运行就需要占用内存,并且在虚拟机运行时,为提高运行效率,UTM 还会产生默认值为虚拟机内存四分之一的 JIT 缓存 2。
如果你不清楚设备的可用内存,可以在虚拟创建完毕后,进入虚拟机的配置界面,在「CPU 和内存」选项中 UTM 会为我们列出设备的可用内存,再行设置。在监测到设置的内存过大时,UTM 会向我们发出警告,并且如果虚拟机正在运行中,UTM 会保存一份虚拟机当前状态的快照,以免产生问题。
接下来,我们需要加载镜像。这里的镜像实际上指的是虚拟机的硬盘。我们点开「加载镜像」选项,再轻触右上角的加号,继续点开「文件路径」,又有加号,轻触它就是了。
第一次,我们选择「创建」,不用管拓展名,随便给镜像取个名字,再设置大小,如果要安装 Windows,至少需要 10 GB 的硬盘大小,类比到一台真实的计算机,这一步相当于将硬盘用数据线连接到电脑上。
接下来,我们返回去选中我们刚才创建的镜像,确保镜像类型为 disk,类比到一台真实的计算机,这一步相当于对硬盘进行挂载。最后返回一次,我们的镜像就创建完了。我们可以创建多个镜像,类比到一台真实的计算机,就相当于多个物理硬盘。
接下来,我们重复刚才的动作。只是这次,我们选择「导入」我们导入的系统安装镜像,并将镜像类型改为 CD/DVD 镜像,这就相当于插入了系统安装盘。
UTM 会将我们的虚拟机以 .utm 文件的形式保存在「文件」应用中的 UTM 文件夹下,我们也可以通过将 .utm 文件传输到 UTM 文件夹中来快速导入别人 创建好的虚拟机。我们创建了镜像后 UTM 不会马上在设备上占用这么多空间,而 .utm 文件的大小会在使用的过程中逐步增长,直到达到我们设置的镜像大小。
接下来,返回 UTM 主界面,启动虚拟机,我们就会引来经典的系统安装向导。且听小娜吟诗,待其消停后,我们可以看到虚拟机的系统桌面,此时点击工具栏 3上的暂停按钮,UTM 会为我们保存一个虚拟机当前状态的快照。
然后再点击工具栏上的关闭按钮,回到 iOS 系统桌面重新打开 UTM,轻触虚拟机卡片下的 按钮,进入虚拟机「配置」中的「驱动器」,删除导入的系统安装镜像。
UTM 主界面
为了完整发挥虚拟机的性能,我们可以在虚拟机系统内安装一些工具,但这并不是必须的。
以上工具的安装包都可以 在此 获得,值得注意的是,直接下载 Guest 客户端即可,UTM 已经内置了服务端。以上工具仅在少数系统,如 Windows 和 Debian 上工作。
至此,我们的虚拟机就已经完全配置完成了。
使用 UTM 在 iPad Pro 上安装的 Windows 7
我安装 UTM 的设备是 iPad Pro 11 吋第二代的蜂窝数据版本,A12X 的处理器,储存空间是 256 GB,UTM 显示我设备的可用内存是 3057 MB。在清空后台后,我给每个虚拟机分配了 1024 MB 内存,没有触发报警和强制关闭。
说到虚拟机,大家最关心的莫过于性能。在上文中也有提及,UTM 实现虚拟机的方法是模拟整个计算机硬件系统,加之苹果并没用提供 A 系列芯片的虚拟化接口,导致整个虚拟机的运行效率差强人意。我安装 Windows 10 和 Android 9 都失败了,二者都可以正确安装,但是无法进入桌面。最后我安装成功的是 Windows 7 和 Android 4.4.4。在 Android 4.4.4 中,我使用了 Geekbench 3 进行了跑分,结果供大家参考。
Android 4.4.4 Geekbench 3 跑分结果
这个跑分大概是什么水平呢?我去大概翻找了一下历年来的 Android 旗舰,其中跑分最接近的是 2011 年发布的三星 Galaxy S II。当然这只是旗舰机,在后几年发布的非旗舰平板中,例如 2015 年发布的华为 T1-701U,和这个跑分也比较接近。
这个跑分如此低,有一个重要的原因,是 UTM 不支持虚拟多核处理器,虽然提供了相关的设置,但官方说尽量不要尝试更改。在运行 Android 4 的过程中,帧率很低,一些拖动操作也十分不跟手。
在 Windows 7 的体验过程中,IE 浏览器是可以正常使用的。众所周知,IE 浏览器的最大意义就是拿来下载其他浏览器。于是我尝试安装 Chrome,在运行安装的过程中,UTM 崩溃并导致了我的 iPad 死机。不过在运行 Windows 7 的过程中,并没有肉眼可见的卡顿,操作也十分流畅。或许 UTM 对 Windows 的支持更加友好。
UTM 在输入上有着十分完美的体验。UTM 支持两种方式的输入,一种是「触屏模式」将触控屏幕模拟为触控板,一种是「平板模式」,顾名思义,效果就像直接在平板上运行的系统一样。这里面可圈可点是平板模式,在平板模式下,可以完美触控 Android 4,直接就像使用一台 Android 平板那么简单,我相信如果我安装了 Android 2,没有流畅度的困扰,使用体验可能真的和真正的 Android 平板不相上下。
Windows 7 下,可完美使用 Windows 的「笔和触控」相关功能。在性能更好的 iPad 设备上,如果可以成功安装 Windows 10 的话,应该可以完美使用 Windows 10 平板模式的相关功能,可惜流畅度估计还是不行(Surface 用户长吁一气)。
我将 Magic Mouse 用蓝牙连接到了我的 iPad,令我十分惊喜,可以直接用 Magic Mouse 操控虚拟机中的鼠标,辅以 iPad 上连接到键盘式智能双面夹,体验和一台真正的电脑别无二致。但是仍然有两个点是很遗憾的:
依我愚见,生产是一个开放创造力的过程,而生产力设备,则应给我们提供开放创造力的条件,给我们提供尽可能多的可能性,以供我们的创造力恣意发挥。一个优秀的生产力设备,应该在「可能性」与「易用性」中达到一个平衡点。UTM 的出现,无疑扩大了 iPad 的可能性,拓展了其生产力。
针对 Linux 系统,UTM 提供了命令行模式,可以让我们使用 UTM 内建的终端连接到虚拟机,发送命令,进行操作。UTM 也给虚拟机提供了健全的网络设置。这也就是说我们可以在 UTM 上运行 Linux,作为一个小型的服务器。这对一部分开发人员,可能是有一些用处的。在 Windows 上,我们也可以运行 office 套件,来达成一些办公需求。也别忘了本文的开头,在 iPad 上进行 iOS 开发已经成为现实。
今年的 WWDC,宣告了 arm 处理器的 Mac 的信息。这又扩大了 UTM 的意义。x86 和 arm 是两个截然不同的平台,在 arm Mac 上,Parallels Desktop 这类 Mac 老牌虚拟机软件能不能工作,也许是个问题。此时,UTM 就占据了优势。根据 UTM 官方的消息,UTM 2.0 正在开发过程中,已经完成的有 UI 优化和对 macOS Big Sur 的支持。
有关 UTM for macOS Big Sur 的消息
UTM 的出现,拓展了 iPad 的生产力新可能;说不定在 ARM Mac 上,苹果能放开一些虚拟化的接口,那时完善了易用性的 UTM,说不定真可以掀起一番浪花。
虽然本文注重 UTM 在 iPad 上的体验,但 UTM 在 iphone 上也是可以正常运行的。如果你对 UTM 感兴趣,可以前往其 官方网站 更进一步地了解 UTM,其源代码亦在 GitHub 开源。