Android Recovery服務流程分析
Recovery服務內容
recovery服務內容主要分三類:
- Factory reset恢復出廠設置
- OTA install 即update.zip包升級
- ENCRYPTED FILE SYSTEMENABLE/DISABLE,使能/關閉加密文件系統
本節主要分析OTA升級流程。
Recovery啓動過程
前面已經講到在正常模式下通過reboot recovery讓設備重啓。實際上是對BCB區域寫入recovery模式標誌,用來告訴bootloader接下來加載那一部分image:boot.img還是recovery.img。這時會選擇加載recovery.img它和正常img類似,也包含了內核和根文件系統。
bootloader如何加載recovery流程參考鏈接
然後啓動文件系統,在進入文件系統後會執行/init,init的配置文件就是/init.rc。這個配置文件來自bootable/recovery/etc/init.rc。查看這個文件我們可以看到它做的事情:
①設置環境變量。
②建立etc連接。
③新建目錄,備用。
④掛載/tmp爲內存文件系統tmpfs
⑤啓動recovery(/sbin/recovery)服務。
⑥啓動adbd服務(用於調試)。
這裏最重要的就是啓動recovery服務了。源碼位置在:
AOSP/bootable/recovery/recovery.cpp