close

整理 | 鄭麗媛
出品 | CSDN(ID:CSDNnews)

還記得在今年年初盤點「Bug 連連」的 Android 12 時,XDA Developers的前主編 Mishaal Rahman 曾預言:「Android 12 的 Bug 修復對谷歌而言已壓力不小,由此可能導致下一版本的開發周期遭到縮減,從而引發惡性循環。」

結果不到一個月,Mishaal Rahman 就被「打臉」了:2月10日,谷歌正式發布了 Android 13 首個開發者預覽版。

不可否認的是,在感受過「Android 歷史上最大設計變更」的 Android 12 後,首個 Android 13 預覽版似乎處在一種「珠玉在前,瓦石難當」的尷尬處境:在看過谷歌的介紹後,許多人吐槽 Android 13 「平淡無奇」、「雞肋平庸」。

Android 和 Web 開發人員 @kdrag0n 發現了隱藏在 Android 13 預覽版中的閃光點:谷歌 Pixel 6 等設備在安裝 Android 13 預覽版後,可實現完全虛擬化!

這意味着,現在我們可以在 Pixel 6 或其他基於 Tensor 處理器的設備上,以接近原生的速度運行幾乎任意操作系統,包括 Windows 11、Ubuntu 或 Arch Linux Arm 等 Linux 發行版。

將 KVM 引入 Android

早在 2 個月之前,Mishaal Rahman 就曾「谷歌將如何在 Android 13 中使用虛擬化」這一話題進行過分析,他堅定認為:「谷歌多年碎片化戰爭的下一個戰場是虛擬化。」

說起 Android 的虛擬化,Android 系統團隊的 Will Deacon 將之稱為「碎片化的狂野西部」。因為不論虛擬機是否存在於設備上,它們的作用通常都不是用來運行其他操作系統,而是用於試圖增強內核安全或在 Android 操作系統之外運行雜項代碼(例如 DRM、密碼學和其他閉源二進制文件的第三方代碼)。

但在谷歌看來,「在 Android 操作系統之外運行雜項代碼」這一點存在重大隱患:

從上面這張 ARMv8/v9 異常模型中可以看出,虛擬機程序運行在 EL2 層,而在 ARM 命名法中,數字越大,特權級別越高,即 EL2 比行在 EL0、EL1 的代碼權限更高。這也就意味着,許多閉源二進制文件的第三方代碼的運行權限,比操作系統和內核還高。這顯然是個安全隱患,因為在較高 EL 上運行的代碼可訪問低級別的所有寄存器。

為解決這一安全問題,谷歌一直在尋求一個通用的虛擬化解決方案,以實現解除第三方代碼的特權,並將該代碼與 Android 和其他第三方程序隔離開來。關於這點,KVM 是個不錯的選擇。

KVM,全名 Kernel-based Virtual Machine,是一個開源的系統虛擬化模塊,自 Linux 2.6.20 之後,便廣泛集成在各個主流 Linux 發行版中,主要使用 Linux 自身的調度器進行管理。而 Android 同樣也基於 Linux 內核構建,所以谷歌自然而然會選擇將 KVM 部署為通用虛擬機管理程序。但谷歌並非照搬全收,它實際上是在擴展具有額外安全功能的 KVM,即 pKVM:受保護的 KVM。

當時,Mishaal Rahman 就已預測了 Android 13 可能出現的變化:「目前,市場上沒有任何 Android 設備配備虛擬化模塊,包括谷歌自己的 Pixel 6 也沒有,但這將隨着即將發布的 Android 13 版本而改變。」他補充道,據他了解,谷歌有計劃在 Android 13 中引入 pKVM 和虛擬機框架的第一個版本。

Mishaal Rahman 預測成功

這次,Mishaal Rahman 的預測成功了:通過加入全新虛擬化框架的 Android 13 預覽版,@kdrag0n 完成了在 Pixel 6 中運行 Windows 11 及部分 Linux 發行版的嘗試。

@kdrag0n 表示:「在 Pixel 6 + Android 13 DP1 上,擁有 KVM 管理程序(接近本機性能)的成熟虛擬機。」Ta 還分享道,目前在設備上可獲得完整的 EL2,而「pKVM」是可選項,可在每個 VM 的基礎上啟用,但對於未受保護的 VM,似乎可使用完整的 KVM 功能。

為證明其運行成功,@kdrag0n 在推特上發布了一則各種 Linux 發行版作為 VM 在 Pixel 6 上啟動的視頻,其中包括 Ubuntu 21.10、Arch Linux Arm、Void Linux 和 Alpine Linux,甚至還有一段在 Arch 上為 arm64 編譯 Linux 5.17-rc3 allnoconfig 的錄屏。

此後,@kdrag0n 又通過 Android 13 虛擬化,讓 Pixel 6 得以運行 Windows 11 並對此進行了優化:「稍微提高了性能,Windows VM 現在真的可以使用了,儘管不支持硬件 GPU 加速,但 CPU、I/O 和內存壓力已緩和許多。」

不僅如此,@kdrag0n 還成功通過 Pixel 6 的 Windows 虛擬機,連接到電腦上(為進行鍵盤輸入),十分順暢地玩起了 1993 年的老遊戲《毀滅戰士》。

但 @kdrag0n 也補充道,這是 Windows on ARM,而非 x86,並且不支持嵌套虛擬化,所以也不支持 WSA。儘管這遠非完美的體驗,也不如本地安裝操作系統那樣流暢,但能夠良好運行已然不易。

相信等到 Android 13 正式版支持 pKVM 時,其虛擬機體驗將再度完善,屆時各類操作系統在 Android 手機上的表現也值得期待。

參考鏈接:

https://blog.esper.io/android-dessert-bites-5-virtualization-in-android-13-351789/

https://www.cnx-software.com/2022/02/14/android-13-virtualization-lets-pixel-6-run-windows-11-linux-distributions/

https://twitter.com/kdrag0n/status/1492754683445669893

《新程序員003》正式上市,50餘位技術專家共同創作,雲原生和數字化的開發者們的一本技術精選圖書。內容既有發展趨勢及方法論結構,華為、阿里、字節跳動、網易、快手、微軟、亞馬遜、英特爾、西門子、施耐德等30多家知名公司雲原生和數字化一手實戰經驗!

☞微信試行1065工作制,18點強制下班;傳蘋果不再開發屏下指紋識別;AMD首席獨立GPU架構師跳槽回到英特爾|極客頭條
☞曾被「霸凌」的兩個孩子:電動汽車與分布式數據庫
☞Unix 操作系統背後的女程序員 Lorinda Cherry 去世,享年 78 歲

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()