Разделы памяти Android


В этой статье я расскажу основные разделы памяти AOSP для MTK и QCOM устройств.

В отличие от ОС на компьютерах, смартфоны не имеют динамической разметки накопителя. Вместо этого вы найдете множество каких-то непонятных разделов с непонятными названиями. Давайте разбираться.

Как посмотреть разделы памяти

Два варианта прсмотра смонтированных (не всех) разделов накопителя на своем телефоне:

  • Установить Device Info HW и посмотреть разделы

  • Скачать Termux и ввести команду mount

  • Для просмотра всех разделов нужны или root-права, или терминал в TWRP. Так же вводите команду mount в терминале (Termux или терминал TWRP) и смотрите разделы.

    Загрузчики

    Загрузчик ОС предназначен для того, чтобы непосредственно загружать эту ОС. О том, как Android запускается, вы узнаете в моих следующих статьях.

    Как нам известно, Android имеет несколько альтернативных режимов загрузки. Подробнее о них вы узнаете в моей следующей статье.

    ABOOT (UBOOT на МТК) — первичный загрузчик. В этом разделе содержится низкоуровневое ПО для обработки нажатий кнопок питания и громкости. Каждая комбинация клавиш соответствует своему режиму загрузки.

    SBL — вторичный загрузчик. Его код выполняется после aboot и в зависимости от режима загрузки загружает или ядро — boot.img, или recovery boot, или fastboot.

    Основные разделы

    Для начала стоит отметить, что в Интернете информация про основные разделы накопителя давно устарела: после Project Treble добавился раздел vendor, а позже была выпущена arm64_ab архитектура с принципиально новой таблицей разделов и монтированием системного раздела в корень (SAR, System As Root). А еще позже производители обновили A-only — добавили еще один раздел и обновили рекавери. В этой статье я расскажу про все основные виды разметки памяти.

    BOOT — ядро Android.

    VENDOR — раздел, содержащий много бинарников и драйверов для всего и вся. Ранее все эти бинарники находились в системном разделе, с приходом Project Treble их отделили в отдельный раздел.

    PRODUCT — новый раздел (его добавили в конце 2019 года), содержащий предустановленные приложения и сервисы.

    SYSTEM — главный системный раздел. В нем содержатся фреймворки, множество файлов-пропов, fstab, оверлеи, RRO, ПО для работы с бинарниками из vendor. Ранее в этом разделе хранили еще и приложения (хранят и сейчас, но только самые важные).

    USERDATA — раздел данных пользователя, вмещает в себя еще три раздела — DATA (этот раздел есть везде, он хранит данные приложений), CACHE (кэш системы и приложений) и STORAGE (раздел, где вы храните свои фотографии и файлы, доступ в проводнике).

    Зная эти разделы, можно посмотреть на разметку памяти в целом.

    До прихода Android 8.1 и Project Treble таблица разделов выглядела так:

    Blobs-in-system разметка

    Затем Project Treble принес нам новый раздел — vendor. Наша схема немного усложнилась:

    Treble-compatible разметка

    С приходом Treble мир увидел еще одну архитектуру — arm64_ab и новую усложненную разметку. Теперь низкоуровневый раздел recovery находится прямо в boot. Раздел cache убрали (вместо него оставили урезанный fota), а остальные системные разделы дублировали. Такая разметка явно занимает больше памяти, и на storage остается меньше места.

    Но весь подвох в том, что с такой архитектурой Android-устройства могут обновляться в фоне! Вы скачиваете обновление и продолжаете использовать свой телефон, а затем просто перезагружаетесь в новую систему, которая установилась на разделы-дубликаты. А в случае неудачного обновления вы загрузитесь в первую половину разделов.

    AB разметка

    Разметку старой архитектуры arm64_a не забросили. Производители добавили раздел product и примонтировали system в корень — system_root:

    System-as-root разметкаSoС-специфичные разделы

    MODEM (RADIO на MTK) — модем телефона (baseband). Этот раздел отвечает за сигналы и на старых устройствах может управлять Wi-Fi, Bluetooth и GPS (на большинстве новых устройств они обрабатываются ядром). Модем — это мини-ОС для чипа сотовой радиосвязи, имеющего собственный процессор. Раздел модема особенный, потому что для работы кода modem в телефонах стоит собственный отдельный процессор, поэтому модем не входит в образ системы в ее собственном разделе.

    RIL (Radio Interface Layer) — низкоуровневый раздел-прослойка между ядром ОС и baseband. Задача RIL — преобразовать все телефонные запросы из среды телефонии Android и сопоставить их с соответствующими AT-командами модема и обратно. Набор команд AT используется для связи с модемом, то есть процессором основной полосы частот (BP), который должен иметь процессор на устройствах Android в дополнение к обычному процессору, то есть процессору приложений (AP).

    TZ (TrustZone) — раздел, использующийся на ARM-архитектурах для дополнительных функций безопасности. Он объединяет ключ шифрования пользователя с аппаратным ключом, сгенерированным процессором шифрования, чтобы затруднить нарушение безопасности.

    RPM (Resource & Power Management), который запускает выполнение Primary / Primitive BootLoader (PBL) в BootROM — контролирует питание радио, модема и т. Д.

    DSP (Digital Signal Processor) — раздел на Qualcomm-устройствах для помощи в таких вещах, как плавное воспроизведение видео (процессор мультимедиа и датчиков в реальном времени).

    HYP (HyperVisor) — гипервизор. Нужен для поддержки виртуализации.

    PERSIST — хранит драйвера датчиков Wi-Fi, Bluetooth, LTE/CDMA/GSM и Hotspot.

    RECOVERY — раздел с меню восстановления.

    OEM — раздел, включающий в себя небольшие настройки производителя оригинального оборудования и бренда мобильных телефонов) во время обновлений по воздуху.

    FOTA — раздел, куда скачиваются OTA обновления. Но в большинстве случаев вместо fota эти обновления загружаются в раздел cache.

    FSC — файлы cookie файловой системы модема.

    SSD (Secure Software Download) — раздел памяти для хранения некоторых зашифрованных ключей. Эти ключи проверяются при скачивании обновлений ОС.

    RSADEVINFO — информация об устройстве, включая:

    is_unlocked
    is_tampered
    is_verified
    charger_screen_enabled
    display_panel
    bootloader_version
    radio_version

    Содержимое этого раздела отображается командой fastboot oem device-info. Перед загрузкой загрузчик проверяет данные именно этого раздела.

    FRP (Factory Reset Protection) — Специальный раздел, созданный для сохранения информации об аккаунтах производителей смартфона (Например, Mi Account на Xiaomi). Хитрость заключается в том, что при сброче настроек FRP не стирается, поэтому избавиться от входа в ми аккаунт на украденном сяоми у вас не получится.

    DEVCFG — используется TZ для обновлений.

    LKSECAPP — онлайн-проверка и обновление компонентов RPM.

    TZLIMITS — драйвер Qualcomm Limits Management Hardware. Хранит метаданные для вторичного загрузчика SBL.

    SYSCFG — Регулятор Qualcomm Core Power Reduction для повышения производительности и энергосбережения процессора приложений за счет управления напряжением.

    DIP, MDTP — проверка загрузки. Данный раздел реализует технологию Qualcomm SafeSwitch для блокировки и отслеживания украденных телефонов.

    CMNLIB, KEYMASTER, SEC — верификация загрузки по хэшу. Если хэш ОС не совпадает с хэшем, пописанным в keymaster, ваш телефон не загрузит ОС. Это главная причина, почему нельзя прошить кастомную прошивку на заблокированный загрузчик.

    OEMKEYSTORE — относится к data Full Disc Encryption (FDE).

    MCFG (Modem Configuration) — на устройствах с двумя SIM-картами загружает файлы MBN (двоичные файлы модема).

    SPLASH — заставка или загрузочный логотип, который появляется при загрузке устройства на этапе ABOOT. После него уже подгружается бутанимация «Powered by Android».

    CHGLOGO — тот самый экран зарядки разряженного телефона.

    MSADP, APDP, DPO — политика отладки.

    EFS — раздел, содержащий информацию про IMEI, SN и IMEI SV.

    Оставить комментарий

    Интересное