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