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