RAM ディスク パーティション

Android 10 および 11 では、第 1 ステージの RAM ディスクには、第 1 ステージの init バイナリ(fstab エントリで指定された初期マウントを実行)と、ベンダーの fstab ファイルが含まれています(Android 9 以前では、system.img には $TARGET_ROOT_OUT のコンテンツが含まれています)。

  • 起動 RAM ディスク(非 A/B)を備えたデバイスの場合、第 1 ステージの init は、/init にある静的な実行可能ファイルです。これらのデバイスは、system.img/system としてマウントしてから、ルート切り替え操作を実行して /system のマウントを / に移動します。マウントが完了すると、RAM ディスクの内容は解放されます。

  • リカバリを RAM ディスクとして使用するデバイスの場合、第 1 ステージの init はリカバリ用の RAM ディスク内の /init にあります。これらのデバイスは、最初にルートを /first_stage_ramdisk に切り替えてリカバリ コンポーネントを環境から削除します。次に、起動 RAM ディスクを備えたデバイスと同じ手順を実行します(system.img/system としてマウントし、ルートを切り替えてそのマウントを / に移動して、マウント後に RAM ディスクの内容を解放します)。androidboot.force_normal_boot=1 がカーネル コマンドライン(Android 12 以降では bootconfig)に存在する場合、デバイスはリカバリモードではなく、通常どおり(Android で)起動します。

第 1 ステージの 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 デバイスの、パーティション レイアウトの違いについて説明します。

boot.img

RAM ディスク
(Android 8.x 以前)
System as root
(Android 9)
RAM ディスク
(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

RAM ディスク
(Android 8.x 以前)
System as root
(Android 9)
RAM ディスク
(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

System as root
(Android 9)
RAM ディスク
(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)
    ...