綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[工具分享] Systemless 的原理說明

[複製連結] 查看: 554|回覆: 0|好評: 0
跳轉到指定樓層
樓主
smr15239 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2016-7-2 05:32

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
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 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報