Разделы RAM-диска

В Android 10 и 11 виртуальный диск первого этапа содержит двоичный файл инициализации первого этапа (который выполняет раннее монтирование, как указано в записях fstab) и файлы fstab поставщика. (Как и в Android 9 и ниже, system.img содержит содержимое $TARGET_ROOT_OUT .)

  • Для устройств с загрузочным RAM-диском (не A/B) первый этап инициализации представляет собой статический исполняемый файл, расположенный в /init . Эти устройства монтируют system.img как /system , а затем выполняют корневую операцию переключения, чтобы переместить монтирование в /system в / . Содержимое виртуального диска освобождается после завершения монтирования.

  • Для устройств, использующих восстановление в качестве виртуального диска, первый этап инициализации находится в /init на виртуальном диске восстановления. Эти устройства сначала переключают root на /first_stage_ramdisk , чтобы удалить компоненты восстановления из среды, затем действуют так же, как и устройства с загрузочным ramdisk (то есть монтируют system.img как /system , переключают root для перемещения этого монтирования на / , и свободное содержимое RAM-диска после монтажа). Если androidboot.force_normal_boot=1 присутствует в командной строке ядра (или bootconfig, начиная с Android 12 и выше), устройства загружаются в обычном режиме (в Android) вместо загрузки в режиме восстановления.

После завершения первой стадии инициализации выполняется /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

Рамдиск
(Android 8.x и ниже)
Система как корень
(Андроид 9)
Рамдиск
(Андроид 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

Рамдиск
(Android 8.x и ниже)
Система как корень
(Андроид 9)
Рамдиск
(Андроид 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

Система как корень
(Андроид 9)
Рамдиск
(Андроид 10 и 11)
Содержит обычное загрузочное ядро ​​и виртуальный диск восстановления ( BOARD_USES_RECOVERY_AS_BOOT := true ).

Recovery-ramdisk используется только для загрузки в рекавери.
Содержит обычное загрузочное ядро ​​и виртуальный диск восстановления ( BOARD_USES_RECOVERY_AS_BOOT := true ).

Recovery-ramdisk используется для загрузки как в рекавери, так и в 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)
    ...