Ramdisk 分區

在 Android 10 和 Android 11 中, 第一階段 ramdisk 包含第一個階段 init 二進位檔 (會按指定執行提前掛接) 根據 fstab 項目) 和供應商 fstab 檔案。(如同 Android 9 以下版本, system.img 包含 $TARGET_ROOT_OUT 的內容)。

  • 對於搭載開機磁碟 (非 A/B) 的裝置,第一階段 init 會是靜態值 執行檔位於 /init這些裝置將 system.img 掛接為 /system。 然後執行切換根作業,將掛接在 /system 的位置移至 /。 掛接完成後,ramdisk 的內容就會釋出。

  • 如果是將復原做為 ramdisk 使用的裝置,第一階段 init 位於 復原 ramdisk 中的 /init。這些裝置會先將根層級切換為 /first_stage_ramdisk:從環境移除復原元件。 然後繼續執行與具有開機磁碟磁碟 (即掛接) 的裝置相同 以 /system 的身分執行 system.img,切換根層級將掛接位置移至 /,並釋出 掛接後 ramdisk 內容)。如果 androidboot.force_normal_boot=1 是 顯示於核心指令列 (或 Android 的 bootconfig 中) 12 以上版本),裝置可正常啟動 (進到 Android) 而不要啟動復原模式

第一階段 init 會使用 /system/bin/initselinux_setup 引數,用於編譯 SELinux 並載入到系統上。最後 init 會使用 second_stage 引數再次執行 /system/bin/init。在此 就會執行 init 的主要階段,並使用 init.rc 指令碼。

以下各節詳細說明非 A/B 版本的分區版面配置差異 。

分區版面配置 (非 A/B 裝置)

以下各節詳細說明非 A/B 版本的分區版面配置差異 。

Boot.img

Ramdisk
(Android 8.x 以下版本)
系統根層級
(Android 9)
Ramdisk
(Android 10 和 11 頁)

包含核心和 ramdisk.img

ramdisk.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    
只包含一般啟動核心。

包含核心和 ramdisk.img

ramdisk.img
  -/
    - init
    - vendor fstab files
    - system/ (mount point)
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    

復原.img

包含復原核心和復原核心 ramdisk.img

system.img

Ramdisk
(Android 8.x 以下版本)
系統根層級
(Android 9)
Ramdisk
(Android 10 和 11 頁)

包含 system.img

system.img
  -/
    - bin/
    - etc
    - vendor -> /vendor
    - ...
   

包含 $TARGET_SYSTEM_OUT 的合併內容以及 $TARGET_ROOT_OUT

system.img
  -/
    - init.rc
    - init
    - etc -> /system/etc
    - system/
      - bin/
      - etc/
      - vendor -> /vendor
      - ...
    - vendor/ (mount point)
    - odm/ (mount point)
    ...
    

包含 $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)
    ...
    

分區版面配置 (A/B 裝置)

以下各節詳細說明 A/B 裝置的分區版面配置差異 包括 Android 10 前後的比較

Boot.img

系統根層級
(Android 9)
Ramdisk
(Android 10 和 11 頁)
包含一般啟動核心和復原記憶體磁碟 (BOARD_USES_RECOVERY_AS_BOOT := true)。

Recovery-ramdisk 僅用於啟動復原程序。
包含一般啟動核心和復原記憶體磁碟 (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)
    ...