Ramdisk 分區

在 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

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

系統.img

記憶體磁碟
(Android 8.x 及更低版本)
系統為 root
(安卓9)
記憶體磁碟
(安卓 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 裝置的分區佈局差異。

啟動映像

系統為 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)
    ...