В Android 10 и 11 ramdisk первого этапа содержит двоичный файл init первого этапа (который выполняет раннее монтирование, как указано в записях fstab) и файлы fstab поставщика. (Как и в Android 9 и более ранних версиях, system.img содержит содержимое $TARGET_ROOT_OUT.)
На устройствах с загрузочным RAM-диском (не A/B) init первого этапа – это статический исполняемый файл, расположенный в каталоге
/init. Эти устройства монтируютsystem.imgкак/system, а затем выполняют операцию переключения корня, чтобы переместить точку монтирования из/systemв/. Содержимое виртуального диска освобождается после завершения монтирования.Для устройств, использующих восстановление в качестве виртуального диска, инициализация первого этапа находится в
/initв виртуальном диске восстановления. Сначала эти устройства переключают корневой каталог на/first_stage_ramdisk, чтобы удалить из среды компоненты восстановления, а затем действуют так же, как устройства с RAM-диском загрузки (то есть монтируютsystem.imgкак/system, переключают корневой каталог, чтобы перенести эту точку монтирования в/, и освобождают содержимое RAM-диска после монтирования). Если в командной строке ядра (или bootconfig в Android 12 и более поздних версий) присутствуетandroidboot.force_normal_boot=1, устройства загружаются в обычном режиме (в Android), а не в режиме восстановления.
После завершения первого этапа init выполняет /system/bin/init с аргументом selinux_setup, чтобы скомпилировать и загрузить SELinux в систему. Наконец, init снова выполняет /system/bin/init с аргументом second_stage. На этом этапе выполняется основная фаза инициализации и процесс загрузки продолжается с использованием скриптов init.rc.
В следующих разделах описаны различия в макетах разделов для устройств без системы A/B до и после Android 10.
Разметка разделов (для устройств, не поддерживающих A/B-обновления)
В следующих разделах описаны различия в макетах разделов для устройств без системы A/B до и после Android 10.
boot.img
| Ramdisk (Android 8.x и более ранние версии) |
System as root (Android 9) |
Ramdisk (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
| Ramdisk (Android 8.x и более ранние версии) |
System as root (Android 9) |
Ramdisk (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)
В следующих разделах подробно описаны различия в макетах разделов для устройств A/B до и после Android 10.
boot.img
| Система как root (Android 9) |
Ramdisk (Android 10 и 11) |
|---|---|
Содержит ядро для обычной загрузки и ramdisk для восстановления (BOARD_USES_RECOVERY_AS_BOOT := true).Ramdisk для восстановления используется только для загрузки в режиме восстановления. |
Содержит ядро обычной загрузки и виртуальный диск восстановления (BOARD_USES_RECOVERY_AS_BOOT := true). Виртуальный диск восстановления используется для загрузки в режиме восстановления и в 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)
...