UTM 就是一款開源的虛擬機器軟體,它將 QEMU 移植到了 iOS 上,通過完整地模擬整個計算機硬體系統,可以讓我們在 iOS 裝置上執行 Windows、Linux 和 Android。甚至,Twitter 上還有使用者展示了在 iPad 上通過 UTM 執行老版本的 macOS,進而利用 Xcode 來進行 iOS 的開發工作的夢幻操作。
安裝 UTM 主程式如果你有自己安裝 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 中建立虛擬機器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,輕觸虛擬機器卡片下的 按鈕,進入虛擬機器「配置」中的「驅動器」,刪除匯入的系統安裝映象。
虛擬機器系統優化為了完整發揮虛擬機器的效能,我們可以在虛擬機器系統內安裝一些工具,但這並不是必須的。
QXL Driver:提供了更快的渲染速度,以及 retina 高清顯示支援。Spice WebDAV daemon:提供了虛擬機器和宿主機的檔案共享,使虛擬機器系統可讀改「檔案」應用中的 UTM 資料夾中除 .utm 檔案外的其它檔案。SPICE guest agent:提供了剪貼簿同步等實用性功能。以上工具的安裝包都可以 在此 獲得,值得注意的是,直接下載 Guest 客戶端即可,UTM 已經內建了服務端。以上工具僅在少數系統,如 Windows 和 Debian 上工作。
至此,我們的虛擬機器就已經完全配置完成了。
體驗我安裝 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 旗艦,其中跑分最接近的是 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 無法輸入 Apple Pencil 的壓力感測資料。我的鍵盤式智慧雙面夾是日語的 JIS 佈局,這似乎無法正確在虛擬機器中對映。可能性依我愚見,生產是一個開放創造力的過程,而生產力裝置,則應給我們提供開放創造力的條件,給我們提供儘可能多的可能性,以供我們的創造力恣意發揮。一個優秀的生產力裝置,應該在「可能性」與「易用性」中達到一個平衡點。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 的出現,拓展了 iPad 的生產力新可能;說不定在 ARM Mac 上,蘋果能放開一些虛擬化的介面,那時完善了易用性的 UTM,說不定真可以掀起一番浪花。
雖然本文注重 UTM 在 iPad 上的體驗,但 UTM 在 iPhone 上也是可以正常執行的。如果你對 UTM 感興趣,可以前往其 官方網站 更進一步地了解 UTM,其原始碼亦在 GitHub 開源。