【CSDN 編者按】MicroDroid 本質(zhì)上還是一個(gè) Android 系統(tǒng),換句話說(shuō),甚至不能將 MicroDroid 作為一個(gè)單獨(dú)的系統(tǒng)來(lái)使用,谷歌如今為現(xiàn)有的Android 系統(tǒng)開(kāi)發(fā)基于虛擬機(jī)技術(shù)的安全功能,MicroDroid 是為此而生的。
近日有消息稱,谷歌正在研發(fā)一個(gè)新版本的 Android 系統(tǒng),名為 MicroDroid 。這個(gè)新版本的 Android 首次官方露面是在谷歌提交的開(kāi)發(fā)說(shuō)明上,谷歌將其稱為“基于 Android 的最小 Linux 映像”。
據(jù) MicroDroid 的描述說(shuō)明顯示,MicroDroid 將在虛擬機(jī)中使用,并且被稱為“通用的 Android 系統(tǒng)鏡像(GSI)的精簡(jiǎn)版”,GSI 已經(jīng)是開(kāi)源 Android 的一個(gè)鏡像,而 MicroDroid 則是一個(gè)比通用的 Android 系統(tǒng)更精簡(jiǎn)的版本。
MicroDroid 有什么用?
剛才說(shuō)到,GSI 已經(jīng)是一個(gè)開(kāi)源的 Android 的基礎(chǔ)版本,但 MicroDroid 相對(duì)更精簡(jiǎn)。根據(jù) XDA Developers 的分析,谷歌的目標(biāo)或許是在 Android 旁側(cè)運(yùn)行的虛擬機(jī),如 DRM 相關(guān)的應(yīng)用。MicroDroid 內(nèi)部擁有少量組件,如 init 和 binder 服務(wù),以便與底層 Android 主機(jī)進(jìn)通信。
通過(guò) MicroDroid,我們可以設(shè)想在 Android 的同時(shí)運(yùn)行一個(gè)小型的虛擬機(jī),MicroDroid 是任意設(shè)備可運(yùn)行的,方便開(kāi)發(fā)者虛擬化一個(gè)單獨(dú)的 Android 應(yīng)用程序,而不是提供一個(gè)完整的輔助桌面環(huán)境。這使得在云端運(yùn)行安全應(yīng)用、在操作系統(tǒng)迭代之間切換安全配件文件的能力變得更簡(jiǎn)單。
同時(shí),也可以與市場(chǎng)上較新的芯片(如驍龍 888)中的虛擬化功能相結(jié)合。而高通方面則表示,允許隔離應(yīng)用程序和同一設(shè)備上的操作系統(tǒng)之間的數(shù)據(jù),也可以在隔離的操作系統(tǒng)之間即時(shí)更改,并且適應(yīng)性很好。
圖片來(lái)源:高通
圖為驍龍 888 上的上的新型 Type-1 虛擬機(jī)管理程序,Hypervisor 在隔離的操作系統(tǒng)之間進(jìn)行即時(shí)切換
另外,據(jù) LWN 的 Jake Edge 介紹,為了提高安全性,谷歌正在致力于將名為“KVM”的 Linux 內(nèi)核虛擬化機(jī)制引入 ARM64 soc 驅(qū)動(dòng)的 Android 設(shè)備。
據(jù)稱,引入 KVM 支持可以“取消”運(yùn)行在 Armv8 的高度特權(quán)異常級(jí)別之一的第三方代碼的特權(quán)。例如用于 DRM 、密碼學(xué)和其他二進(jìn)制文件的第三方代碼,可以在 Android 操作系統(tǒng)相同級(jí)別的 VM 中運(yùn)行。

圖片來(lái)源:ARM
為了管理這些虛擬機(jī),谷歌正在適配 Chrome OS VMM ( crosvm ),這是用于在 Chrome OS 上運(yùn)行 Linux 應(yīng)用程序。同時(shí)也準(zhǔn)備在一個(gè)名為“虛擬化”的 APEX 新包中將 Cromsvm 包含進(jìn)去一同發(fā)布、并為 Android 的 Linux 內(nèi)核分支帶來(lái) ARM64 上的“受保護(hù)的 KVM ”項(xiàng)目。
Android 解決內(nèi)核碎片化問(wèn)題迫在眉睫
MicroDroid 的誕生或許要追溯到更早之前。目前,整個(gè) Android 系統(tǒng)的最新開(kāi)發(fā)是通用內(nèi)核映像( GKI ),其目的是減少 Android 內(nèi)核的碎片化。

GKI 架構(gòu)
在傳統(tǒng)上,每個(gè)手機(jī)都有自己的內(nèi)核版本,但卻是無(wú)法擴(kuò)展的,這一特性導(dǎo)致了碎片化。若是每次更新都要同時(shí)更新多個(gè)內(nèi)核版本(不同設(shè)備)的話,就會(huì)存在困難程度上升和費(fèi)用增加的問(wèn)題,進(jìn)而導(dǎo)致某些系統(tǒng)很難更新或無(wú)法更新。如果說(shuō)某些設(shè)備的內(nèi)核太老了,沒(méi)有最新版本所需要的功能,還會(huì)導(dǎo)致這些設(shè)備無(wú)法更新 Android 版本——在早期乃至近幾年的 Android 設(shè)備市場(chǎng)中,這種情況的確是常見(jiàn)的。
這種分裂的現(xiàn)狀還帶來(lái)了另一個(gè)問(wèn)題:對(duì)上游內(nèi)核的不利。相對(duì)來(lái)說(shuō),這個(gè)問(wèn)題目前沒(méi)有得到足夠的關(guān)注。主線內(nèi)核背后的思想是擁有正確的子系統(tǒng)和抽象,以便支持各式各樣的硬件,但這是不可能做到的。因?yàn)檫@些代碼都存儲(chǔ)在不同的內(nèi)核中,就像你走進(jìn)一片巨大的森林,目之所及的僅僅是你視線范圍的樹(shù)木,不可能看清楚森林里的每一棵樹(shù)上的每一片葉子,同理,除非開(kāi)發(fā)人員能夠看到所有不同硬件下所有不同的問(wèn)題和解決方案,否則對(duì)于內(nèi)核開(kāi)發(fā)人員來(lái)說(shuō),是無(wú)法想出一個(gè)適用于所有人的抽象。

Android 內(nèi)核層次結(jié)構(gòu)導(dǎo)致碎片化
GKI 用于解決 Android 內(nèi)核碎片化問(wèn)題,而 MicroDroid 則是谷歌在 Android 硬件上支持虛擬化道路上的重要一步。
Android 虛擬化管理混亂
如今 Android 上的管理程序情況還是很混亂的。如果你認(rèn)為內(nèi)核的碎片化問(wèn)題已經(jīng)“很糟糕了”,那現(xiàn)實(shí)的情況可能是已經(jīng)“非常非常糟糕了”。
就目前而言,所有的 Android 設(shè)備都在運(yùn)行的某些版本的 Linux ,但就管理程序而言,簡(jiǎn)直分裂得就像狂野的西部世界。有些設(shè)備根本沒(méi)有管理程序,這算情況好的了,但對(duì)于有管理程序的設(shè)備而言,他們的管理程序需要用于管理不同的事情。
3.1 安全增強(qiáng)
目的是保護(hù)內(nèi)核,但是其本身也存在問(wèn)題,因?yàn)榫徑獯胧┖芏鄷r(shí)候也是攻擊的入口。并且重點(diǎn)在于,虛擬機(jī)監(jiān)控程序使用更高的特權(quán)運(yùn)行,所以其中的錯(cuò)誤可能意味著這些假定的保護(hù)程序并不能真正地保護(hù)系統(tǒng)。
3.2 粗粒度內(nèi)存分區(qū)
這個(gè)在 Android 中的粗粒度內(nèi)存分區(qū)看起來(lái)有點(diǎn)像 IOMMU ,但實(shí)際上不是。它在引導(dǎo)時(shí)用于將物理內(nèi)存劃分為多個(gè)區(qū)域,這些區(qū)域可以交給各種設(shè)備進(jìn)行 DMA 或者其他用途。但在引導(dǎo)時(shí)間之后,Hypervisor(虛擬機(jī)監(jiān)視器)還有很多工作要做,所以這類型的使用顯得有些浪費(fèi)。
3.3 在Android以外運(yùn)行代碼
Armv8 有多個(gè)特權(quán)級(jí)別,稱為異常級(jí)別,從特權(quán)級(jí)別最高的固件( EL3 )到管理程序( EL2 )和操作系統(tǒng)( EL1 ),再到特權(quán)級(jí)別最低的用戶( EL0 )。Hypervisor 異常級(jí)別不是 EL3 級(jí)別,因此設(shè)備制造商在更新那里的代碼時(shí)不必?fù)?dān)心設(shè)備的砌墻問(wèn)題,同時(shí)它也不是 EL1 級(jí)別,運(yùn)行在那里的代碼不需要與任何其他東西集成。而這意味著,EL2 成為了某種“游樂(lè)場(chǎng)”,似乎不適合其他地方的代碼會(huì)被卡在那里,因?yàn)?EL2 擁有的特權(quán)可能比需要的多得多,這是很糟糕的現(xiàn)象。

特權(quán)和例外級(jí)別
在大多數(shù)情況下,甚至沒(méi)有任何虛擬機(jī),所以這些管理程序不會(huì)提供常見(jiàn)的服務(wù)。這種情況導(dǎo)致可信計(jì)算基礎(chǔ)( TCB )增加了,安全性和功能性因此而損失,安全性受到了阻礙。而且因?yàn)樵摷?jí)別的碎片化,更新設(shè)備變得更加困難。此外,由于無(wú)法從 Android 內(nèi)部訪問(wèn)硬件虛擬化特性,功能也相應(yīng)變得很缺乏。
實(shí)際上,受信任級(jí)別比不安全級(jí)別擁有更多特權(quán),因此,受信任的操作系統(tǒng)可以映射不受信任的管理程序內(nèi)存,且可以提供訪問(wèn),這樣一來(lái)受信任的應(yīng)用程序也可以訪問(wèn)它。這在 Android 生態(tài)中是有問(wèn)題的,其中一部分原因來(lái)自于運(yùn)行在可信端的 DRM 的第三方代碼、各種不透明的二進(jìn)制 blob 、加密代碼等等,這些代碼可能并不值得信任,而且它們也會(huì)受到碎片化問(wèn)題的困擾。
內(nèi)核的 Arm64 體系結(jié)構(gòu)的維護(hù)者之一、同時(shí)也是 KVM 引入 Android 系統(tǒng)的負(fù)責(zé)人威爾·迪肯( Will Deacon )認(rèn)為,“可信”一次在很大程度上是一個(gè)營(yíng)銷術(shù)語(yǔ),目的是讓人們覺(jué)得運(yùn)行在那里的代碼是安全可靠的。但“信任”還有另一種定義,即“期待、希望或假設(shè)”,這同樣適用于當(dāng)下。Android 系統(tǒng)必須希望在受信任端運(yùn)行的軟件沒(méi)有惡意的,否則一旦惡意軟件運(yùn)行在可信任端,Android 就束手無(wú)策了。
所以,Android 如今希望有一種方式來(lái)取消這個(gè)第三方代碼的特權(quán),需要一個(gè)可移植的環(huán)境,能夠以一種與 Android 系統(tǒng)隔離的方式來(lái)承載這些服務(wù),還能將這些第三方項(xiàng)目彼此隔離?;谶@些愿景,KVM 和 MicroDroid 就應(yīng)運(yùn)而生了,MicroDroid 在 KVM 的基礎(chǔ)上能保證更安全、更快捷、更開(kāi)放的方式去進(jìn)行隔離、迭代和運(yùn)行。
另外,也有業(yè)內(nèi)人士猜測(cè),MicroDroid 也可能和谷歌努力將 Crosvm 背后的想法擴(kuò)展到 Android 應(yīng)用程序有關(guān)。不過(guò)在官宣之前,我們也只能對(duì)現(xiàn)有的信息作出一些猜測(cè),MicroDroid 背后真正的意圖是什么,或許也要等待進(jìn)一步的消息。
責(zé)任編輯:xj
-
Android
+關(guān)注
關(guān)注
12文章
4035瀏覽量
134556 -
內(nèi)核
+關(guān)注
關(guān)注
4文章
1476瀏覽量
43099 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7443瀏覽量
129644
發(fā)布評(píng)論請(qǐng)先 登錄
為什么無(wú)法在 i.MX93 平臺(tái)上構(gòu)建映像?
32g3 有適用于 linux 的 vr5510 驅(qū)動(dòng)程序嗎?
IMX8MP 返回未簽名內(nèi)核映像的未找到 HAB 事件,為什么?
如何在 i.MX8MQ 上啟動(dòng)具有啟動(dòng)時(shí)間的最小映像?
是否需要 USB 串行連接才能啟動(dòng)到 Linux?
請(qǐng)問(wèn)如何確定我們是否安裝了最新的固件、映像、內(nèi)核?
無(wú)法獲得在 StarFive 上運(yùn)行的 StarFive Linux 映像的 55 或 69 版本,怎么解決?
Binder?驅(qū)動(dòng)深度解析:Android IPC?的核心底層實(shí)現(xiàn)
安裝官方 Ubuntu 23.10 映像時(shí)報(bào)錯(cuò),求解決
RK3576+Android15+Linux6.1調(diào)試EM05 4G模塊全記錄:從底層到上層的踩坑與破局
深入解析RK平臺(tái)Android/Linux Bootloader核心文件:android_bootloader.c
基于Android的最小Linux映像:MicroDroid
評(píng)論