Процесс загрузки Android-устройства (подготовка прошивки)

Стандартный процесс загрузки ОС Android выглядит так (из документации):

  1. BootROM (запускается с кнопки «вкл»)
  2. Загрузчик
  3. ядро
  4. инициализация/монтирование
  5. Zygote+Dalvik ВМ
  6. Системные службы

Но у меня есть трудности с пониманием процесса загрузки, подготовки к перепрошивке (как я встретил его при перепрошивке прошивок мобильных телефонов Galaxy Tab и MTK)

Не могли бы вы помочь мне найти положение этих инструментов на этой диаграмме:

1) Код, который показывает логотип (или заряд батареи в процентах при включенном кабеле питания) и реагирует на USB (когда телефон выключен, но батарея внутри)? Где это ? Он должен быть расположен перед Boot ROM - но как вы его называете?

2) кто отвечает ручкой "вкл + громкость вниз" для перехода в меню "загрузка" ? BootRom или загрузчик?

3) "прелоадер" как он там позиционируется? (Я не уверен, что понимаю, что такое прелоадер).

4) тврп? фастбут? odin3 они заменяют Dalvik или его запускают? twrp сам по себе выглядит как полноценная ОС.

Ответы (1)

Процесс загрузки устройств Android до уровня ядра сильно зависит от поставщика, конкретного устройства и содержит в основном закрытый исходный код. Вы можете увидеть явные отклонения в используемых терминах и различия в их реализации. Здесь я даю простое понимание.

  1. Когда зарядное устройство вставлено, устройство загружается очень похоже на нажатие кнопки питания, за исключением того, что загружается очень ограниченная ОС.

    Устройство загружается нормально до initстадии (данной в пункте 4). init, вместо запуска служб из /systemразделов /vendorи запускает процесс: /sbin/charger*который не является частью AOSP. Двоичный файл зарядного устройства обычно имеет закрытый исходный код и различается для разных устройств. Он может загружать некоторые изображения / анимации, хранящиеся в некоторых разделах, специально предназначенных для этой цели.

    Кроме того, некоторые OEM-производители позволяют включать/выключать off-mode-chargeуправление fastbootповедением устройства, т. е. следует ли включать устройство при подключении питания или нет. Но это также не стандартная функция и зависит от устройства.

  2. Загрузчики (SBL / ABOOT или эквивалентные) обрабатывают кнопки питания и громкости, нажатые для запуска (аварийный режим), режим загрузки, режим SPL, fastbootрежим и т. Д., Восстановление или обычное ядро.
  3. Preloader — это стадия загрузчика (SBL/SPL) перед окончательным загрузчиком (UBOOT/LK/ABOOT)
  4. Вот цепочка загрузки:
    • BootROM
    • Первичный/вторичный BooLoader или PreLoader
    • Окончательный загрузчик (который предоставляет odin/ fastboot)
    • Ядро/Рекавери (TWRP)
    • Init (первый процесс пользовательского пространства и отвечает за все остальные процессы, а также монтирует файловые системы)
    • Службы или процессы запускаются /systemи /vendorразбиваются init(Zygote/Dalvik — один из них).

Так odin(специфично для Samsung) и fastbootпредставляют собой два независимых протокола для связи с устройством через USB для форматирования разделов, прошивки заводской прошивки, (раз) блокировки загрузчика и т. д. Хотя TWRPэто минимальная ОС, которая загружается вместо обычной boot.img(обычно с использованием того же ядра) в случае, если Android не может загрузиться или требует обновления OTA или некоторых модификаций / обслуживания.

Ни один из них не может быть связан с Dalvik, они зависят от аппаратного обеспечения и выполняются на этапе до ядра или ядра. Хотя zygote— часть AOSP — это процесс полностью пользовательского пространства, который создает виртуальную машину Dalvik для каждого приложения.


Подробнее: Процесс загрузки: Android и Linux