Android 台灣中文網

標題: Systemless 的原理說明 [打印本頁]

作者: smr15239    時間: 2016-7-2 05:32
標題: Systemless 的原理說明
systemless 的最高指導原則就是所有相關的檔案都放在 /system 分割區以外,原本不在 /system 分割區的很好處理,改程式換個路徑即可。那原本就在 /system 分割區的比如 /system/bin/app_process32、/system/bin/dex2oat .. 該怎麼處理呢?這時就得靠 mount 幫忙,主要有兩個部分:一個是 loopback device,另一個是 bind mount。

首先為了管理方便以及後續功能上的需要,systemless 的作法會把所有用到的檔案放在一個映像檔中,比如 /data/su.img,格式為 ext4,在開機的時候透過 /dev/block/loop* 把這個檔案當成磁碟掛載起來,這就是 loopback device 的作用。接下來利用 bind mount 的特性:將原本 a 路徑的內容換成 b 路徑的檔案。(實際用途沒這麼狹隘,有興趣可以 google 一下) 因此原先在 /system 下的檔案就被 loopback device 上的檔案『暫時取代』,也就達到不需修改 /system 而執行不同檔案的需求。

所以要達成 systemless,有幾個地方要動到:
1. 程式本身的路徑要重新指定。
2. SELinux 的 context 要重設或加入新項目。
3. 開機要掛載 loopback device 並設定 bind mount。

以 ZenFone 2 來說還要額外 update boot.img 最後面的 signature。

至於目前有沒有教材?還是看 SuperSU 的 update-binary 學習學習吧 XD

以上資訊轉截自Zentalk 開發者交流區版主






歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1