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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

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

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

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

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

  2. Скачать 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 разметка
Blobs-in-system разметка

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

Treble-compatible разметка
Treble-compatible разметка

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

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

AB разметка
AB разметка

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

System-as-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.

Источник: https://habr.com/ru/post/545296/


Интересные статьи

Интересные статьи

Не знаю, как вам, но мне бывает очень стыдно, когда я передаю свое приложение на проверку тестировщику или клиенту и в приложении возникает сбой. Это весьма неприятный момент.«Живи так, к...
Для видеозвонков в Badoo мы используем стандарт WebRTC и кодек H.264. Если верить документации, этот кодек должен без проблем работать на любых устройствах Android начиная с Android 5.0. Но на пр...
Несмотря на то, что “в коробке” с Битриксом уже идут модули как для SOAP (модуль “Веб сервисы” в редакции “Бизнес” и старше), так и для REST (модуль “Rest API” во всех редакциях, начиная с...
Рассказ о том, как в Android'е передать информацию из фрагмента (Fragment) в активность (Activity). Информация будет полезной для новичков (джуниоров), осваивающих программирование для Android, и...
Как известно, некоторые авторы на YouTube крайне недовольны условиями, которые предлагает эта платформа. Аналогичное сражение сейчас ведут разработчики Android-приложений на платформе Google Play...