А как Android находит ядро и ramdisk?

Хоть я и задавал этот вопрос ранее, но спрошу ещё раз. Как Android находит ramdisk и ядро?

Нет, понятно, что это все расположено по определенному адресу, в конкретном разделе. Но как fastboot находит в boot.img ядро и ramdisk, и передаёт этот ramdisk ядру? Неужели в загрузчике указаны необходимые байты, смещения, для поиска zImage и initrd.gz? Не говоря о том, что вместо стандартного boot.img/recovery.img там может быть UEFI-загрузочный образ (вспоминаю пресловутый Qualcomm SDM845 с Windows 11 на борту. Но там вроде бы вместо fastboot используется UEFI). А вот Qualcomm SDM <820, хотя имеют xbl UEFI, но он запускает fastboot. И уже fastboot загружает ядро. И тут-то вопрос: как уже этот fastboot находит ядро и ramdisk?

Просто, приведу в пример BIOS. Как он находит MBR-загрузчик? Он смотрит первые 512 байт на диске, проверяет последние два байта на этом секторе, они должны быть равны 55AA. Если это так, то эти 512 байт загружаются в память и им передаётся управление. А как fastboot находит и передаёт управление ядру и, более того, вытаскивает и передаёт ядру ramdisk? В fastboot жёстко зашиты адреса ramdisk и zImage? Смещения прописаны в boot.img?

Я об этом думаю с точки зрения разработки под ARM. Ведь на 95% телефонов и многих ARM-платах примерно так и загружается устройство: первичный загрузчик (aboot, например) находит ядро и ramdisk по определенному адресу, и передаёт ядру ramdisk и управление. Я хочу узнать: а как находится этот адрес, как выгружается ядро в память, как ему отдается ramdisk? По каким конкретным признакам загрузчик определяет ядро, ramdisk и как выгружает все это в память и передаёт управление?


Ответы (1 шт):

Автор решения: Герман Борисов

Журнал "Хакер" в этой статье https://xakep.ru/2014/05/21/excurse-in-android-architecture/ пишет, что адреса разделов, необходимых для начальной загрузки устройств на Android вкомпиливаются в сам aboot. Это можно делать, так как подобные устройства не подразумевают возможность физического извлечения основного раздела из устройства. Флешка припаяна на ту же плату, что и процессор. В отличии от PC, где основной носитель съёмный.

→ Ссылка