在 Android 10 和 11 中,第一階段 RAM 磁碟包含第一階段 init 二進位檔 (會根據 fstab 項目指定的內容執行早期掛接作業) 和供應商 fstab 檔案。(如同 Android 9 以下版本,system.img 包含 $TARGET_ROOT_OUT 的內容)。
對於具有開機 RAM 磁碟 (非 A/B) 的裝置,第一階段 init 是位於
/init的靜態可執行檔。這些裝置會將system.img掛接為/system, 然後執行切換根目錄作業,將/system的掛接點移至/。 掛接完成後,ramdisk 的內容就會釋出。如果裝置使用復原做為 ramdisk,第一階段 init 位於復原 ramdisk 內的
/init。這些裝置會先將根目錄切換為/first_stage_ramdisk,從環境中移除還原元件,然後按照與使用啟動 ramdisk 的裝置相同的方式操作 (也就是將system.img掛接為/system、切換根目錄以將該掛接移至/,並在掛接後釋放 ramdisk 內容)。如果核心指令列 (或 Android 12 以上版本的 bootconfig) 中有androidboot.force_normal_boot=1,裝置會正常啟動 (進入 Android),而不是進入復原模式。
第一階段初始化完成後,系統會執行 /system/bin/init 並使用 selinux_setup 引數,將 SELinux 編譯並載入系統。最後,init 會使用 second_stage 引數再次執行 /system/bin/init。此時,init 的主要階段會執行,並使用 init.rc 指令碼繼續啟動程序。
以下各節將詳細說明 Android 10 前後,非 A/B 裝置的分割區配置差異。
分割區配置 (非 A/B 裝置)
以下各節將詳細說明 Android 10 前後,非 A/B 裝置的分割區配置差異。
boot.img
| Ramdisk (Android 8.x 以下版本) |
以系統為根目錄 (Android 9) |
Ramdisk (Android 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)
...
|
recovery.img
包含復原核心和復原 ramdisk.img
system.img
| Ramdisk (Android 8.x 以下版本) |
以系統為根目錄 (Android 9) |
Ramdisk (Android 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 裝置的分割區配置差異。
boot.img
| 以系統為根目錄 (Android 9) |
Ramdisk (Android 10 和 11) |
|---|---|
包含正常啟動核心和復原 ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true)。復原 ramdisk 只用於啟動復原模式。 |
包含一般開機核心和復原 ramdisk (BOARD_USES_RECOVERY_AS_BOOT := true)。復原 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)
...
|
system.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)
...