在 Android 10 和 11 中,第一階段 ramdisk 包含第一階段 init 二進位(執行 fstab 條目指定的早期安裝)和供應商 fstab 檔案。 (與 Android 9 及更低版本一樣, system.img
包含$TARGET_ROOT_OUT
的內容。)
對於具有 boot-ramdisk(非 A/B)的設備,第一階段 init 是位於
/init
的靜態可執行檔。這些裝置將system.img
掛載為/system
,然後執行切換 root 操作以將/system
處的掛載移至/
。安裝完成後,ramdisk 的內容將會被釋放。對於使用恢復作為 ramdisk 的設備,第一階段 init 位於恢復 ramdisk 內的
/init
處。這些裝置首先將 root 切換到/first_stage_ramdisk
以從環境中刪除復原元件,然後與具有 boot-ramdisk 的裝置執行相同的操作(即,將system.img
掛載為/system
,切換 root 將該掛載移至/
,然後安裝後釋放 ramdisk 內容)。如果核心命令列(或 Android 12 以上的 bootconfig)中存在androidboot.force_normal_boot=1
,裝置將正常啟動(進入 Android),而不是啟動進入復原模式。
第一階段 init 完成後,它會使用selinux_setup
參數執行/system/bin/init
來編譯 SELinux 並將其載入到系統上。最後,init 使用second_stage
參數再次執行/system/bin/init
。此時,init 的主要階段運行並使用init.rc
腳本繼續啟動程序。
以下部分詳細介紹了 Android 10 之前和之後非 A/B 裝置的分區佈局差異。
分區佈局(非 A/B 設備)
以下部分詳細介紹了 Android 10 之前和之後非 A/B 裝置的分區佈局差異。
啟動映像
記憶體磁碟 (Android 8.x 及更低版本) | 系統為 root (安卓9) | 記憶體磁碟 (安卓 10 和 11) |
---|---|---|
包含一個核心和一個 ramdisk.img -/ - init.rc - init - etc -> /system/etc - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... | 僅包含正常啟動核心。 | 包含核心和 ramdisk.img -/ - init - vendor fstab files - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... |
恢復.img
包含恢復核心和恢復ramdisk.img
系統.img
記憶體磁碟 (Android 8.x 及更低版本) | 系統為 root (安卓9) | 記憶體磁碟 (安卓 10 和 11) |
---|---|---|
包含一個 system.img -/ - bin/ - etc - vendor -> /vendor - ... | 包含 system.img -/ - init.rc - init - etc -> /system/etc - system/ - bin/ - etc/ - vendor -> /vendor - ... - vendor/ (mount point) - odm/ (mount point) ... | 包含 system.img -/ - init.rc - init -> /system/bin/init - etc -> /system/etc - system/ - bin/ - etc/ - vendor -> /vendor - ... - vendor/ (mount point) - odm/ (mount point) ... |
分區佈局(A/B 設備)
以下部分詳細介紹了 Android 10 之前和之後 A/B 裝置的分區佈局差異。
啟動映像
系統為 root (安卓9) | 記憶體磁碟 (安卓 10 和 11) |
---|---|
包含正常啟動核心和復原 ramdisk ( BOARD_USES_RECOVERY_AS_BOOT := true )。Recovery-ramdisk 僅用於啟動復原。 | 包含正常啟動核心和復原 ramdisk ( BOARD_USES_RECOVERY_AS_BOOT := true )。Recovery-ramdisk 用於啟動復原和 Android。 ramdisk.img -/ - init -> /system/bin/init - first_stage_ramdisk - vendor fstab files - etc -> /system/etc - system/ (mount point) - vendor/ (mount point) - odm/ (mount point) ... |
系統.img
包含$TARGET_SYSTEM_OUT
和$TARGET_ROOT_OUT
的合併內容。
system.img
-/
- init.rc
- init -> /system/bin/init
- etc -> /system/etc
- system/
- bin/
- etc/
- vendor -> /vendor
- ...
- vendor/ (mount point)
- odm/ (mount point)
...