為什麼Android都能直接跑Cyberpunk 2077了(詳見 Mobox),iOS還只能玩遠端串流呢?
Fine, I’ll do it myself.
在iPad跑UTM虛擬機,再於裡面裝Steam理論上是可行的!
經過這幾天的嘗試,結果我只得到…美少女遊戲。
1. 打造隨時啟用JIT的工具#
首先要從JIT開始說起。最近有個叫做SideJITServer專案釋出,它讓非Mac電腦的用戶也能夠給iOS啟用JIT。
「JIT」是越獄以外提昇UTM虛擬機性能的唯一手段,因為新型iPad幾乎不可能安裝TrollStore或者搞checkra1n越獄,所以JIT這種合法手段便是我們的救贖。
如果沒有JIT,UTM就會變成UTM SE那樣一條蟲,除了MS-DOS以外什麼系統都跑不了。
但是JIT也有侷限性,它只支援側載版的UTM IPA,並連著電腦啟動,且UTM APP一關閉就會消失。
啊啊,SideJITServer要連著電腦啟動好麻煩,所以拿出了樹莓派,裝好SideJITServer套件後,它就變成了隨時能給iPad啟動JIT的觸媒。
- 相關文章: 使用樹莓派給iPad啟用JIT加速
只要Type-C一插上去,嘩~馬上湧出魔力供給。
有了JIT,跑不那麼吃重的作業系統就夠了。
2. Linux還是Windows?#
我曾經試過 UTM跑Windows虛擬機,可是最多最多就到Windows 7了,Tiny 11 (Windows 11精簡版) 在JIT加持下能3分鐘內開機,但那又怎麼樣呢?進入桌面後依然卡爆。
果然還是得用Linux吧。Debian在JIT加持下開機只要30秒。XFCE桌面開機佔用600MB RAM,足夠留空間給Steam遊戲跑了。
於是我改用類似Android Termux的作法,就是配個Linux環境,再透過Wine玩Steam遊戲。但是iOS沒有Termux這種介於Linux與原生Android之間的神器,只有UTM。
- 相關文章: UTM APP使用教學
系統架構部分要選ARM還是x86呢?好消息是,Apple M系列晶片撐得住x86_64架構的Debian虛擬機,所以我不用裝ARM64架構Debian虛擬機來虐自己。Steam目前僅支援x86電腦, ARM架構用Box64轉譯Wine實在太不穩啦!
只要起個跟一般電腦無異的x86架構Debian虛擬機,分配至少3GB RAM,就能直接安裝x86版本的Steam客戶端了,它還能夠吃到GPU加速。
- 相關文章: Linux版Steam客戶端安裝
3. 啟用UTM的GPU加速#
無意間發現了UTM的Linux虛擬機支援GPU加速。
背後是透過virtio-gpu半虛擬化GPU實現的,可用Metal或OpenGL作為後端。
- 相關文章: UTM的virtio-gpu設定方法
無論是x86還是ARM架構虛擬機都能用VirGL吃到OpenGL加速,這樣Steam遊戲執行起來會順一點。
4. 來玩Steam遊戲吧#
啟動後等待Steam自身的依賴套件裝完。
Steam Client WebHelper如果崩潰,停用GPU加速通常就能解決。
然後就下載遊戲吧…要玩哪個大作呢…不對,考慮到虛擬機的性能,即使有GPU加速也只能玩Galgame。
為什麼呢?GPU加速起來了,剩下的問題就是CPU了。要知道JIT的速度依然比不上越獄提供的Hypervisor,因此拖累了整體性能。
不嚴謹的對比:我之前做了 有JIT和沒JIT的測試,並執行Unixbench測試虛擬機的CPU性能,結果是有JIT相比無JIT的情況下性能提昇了8倍。但就算是這樣,Apple M2在虛擬機跑出來的分數竟然只有Qualcomm SD210水準。由此可知沒有Hypervisor,虛擬機的性能損耗依然嚴重。
所以光一個簡單的小遊戲就佔滿全部CPU了。
實際演示影片
唯一欣慰的就是Linux虛擬機沒有Windows 11那麼吃資源,iPad不會跑到燒起來。
結論,目標達成了一半:Steam開起來了,可是遊戲沒有效能可言。
順帶一提,跑Steam遊戲的副產品,就是Wine了,只要安裝 x86版的Wine即可安裝exe。在這裡可用比Windows虛擬機開銷還小的方式,跑Windows軟體。