Ramdisk 分區

在 Android 10 和 11 中,第一階段的 RAM 磁碟包含第一階段的初始化二進位檔 (會執行 fstab 項目指定的早期掛載作業) 和供應商 fstab 檔案。(如同 Android 9 以下版本,system.img 包含 $TARGET_ROOT_OUT 的內容)。

  • 對於具有啟動 RAM 磁碟 (非 A/B) 的裝置,第一階段初始化是位於 /init 的靜態可執行檔。這些裝置會將 system.img 掛載為 /system,然後執行切換根目錄作業,將 /system 的掛載點移至 /。掛載完成後,系統會釋放 RAMDISK 的內容。

  • 如果裝置使用復原功能做為 RAM 磁碟,第一階段初始化作業會位於復原 RAM 磁碟中的 /init。這些裝置會先將根目錄切換至 /first_stage_ramdisk,以便從環境中移除復原元件,然後與具有啟動 RAM 磁碟的裝置一樣繼續進行 (也就是將 system.img 掛載為 /system、切換根目錄以將該掛載點移至 /,並在掛載後釋放 RAM 磁碟內容)。如果核心指令列 (或 Android 12 以上版本的 bootconfig) 中出現 androidboot.force_normal_boot=1,裝置就會正常啟動 (進入 Android),而不會啟動至復原模式。

第一階段初始化完成後,系統會使用 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

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)
    ...
    

recovery.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 裝置)

以下各節將詳細說明 Android 10 之前和之後 A/B 裝置的分區版面配置差異。

boot.img

系統為根目錄
(Android 9)
Ramdisk
(Android 10 和 11)
包含一般啟動核心和復原 RAM 磁碟區 (BOARD_USES_RECOVERY_AS_BOOT := true)。

Recovery-ramdisk 僅用於啟動至復原模式。
包含一般啟動核心和復原 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)
    ...