Разделы Ramdisk

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

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

Ramdisk
(Android 8.x и более ранние версии)
System as root
(Android 9)
Ramdisk
(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)

В следующих разделах подробно описаны различия в макетах разделов для устройств 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)
    ...