在 Android 10 和 11 中,第一個階段 ramdisk 包含第一個階段 init 二進位檔 (會依照 fstab 項目指定執行早期掛接) 和供應商 fstab 檔案。(如同 Android 9 以下版本,system.img
包含 $TARGET_ROOT_OUT
的內容)。
對於具有啟動 RAM 磁碟 (非 A/B) 的裝置,第一階段初始化是位於
/init
的靜態可執行檔。這些裝置會將system.img
掛載為/system
,然後執行切換根目錄作業,將/system
的掛載點移至/
。掛載完成後,系統會釋放 RAMDISK 的內容。對於使用復原功能做為 RAM 磁碟的裝置,第一階段初始化作業位於復原 RAM 磁碟中的
/init
。這些裝置會先將根層級切換為/first_stage_ramdisk
,以移除環境中的復原元件,然後執行與具有開機磁碟磁碟相同相同的步驟 (也就是說,將system.img
掛接為/system
、切換根層級以將掛接位置移至/
,以及在掛接後釋出 RAM 內容)。如果androidboot.force_normal_boot=1
出現在核心指令列中 (或 Android 12 以上版本的 Bootconfig),裝置就會正常啟動,而不是啟動進入復原模式。
第一階段 init 完成後,會使用 selinux_setup
引數執行 /system/bin/init
,在系統上編譯並載入 SELinux。最後,init 會再次使用 second_stage
引數執行 /system/bin/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) |
---|---|
包含一般啟動核心和復原 RAM 磁碟區 (BOARD_USES_RECOVERY_AS_BOOT := true )。復原 RAM 磁碟區僅用於啟動至復原模式。 |
包含一般啟動核心和復原 RAM 磁碟區 (BOARD_USES_RECOVERY_AS_BOOT := true )。復原 RAM 磁碟區用於啟動復原和 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)
...