Разметка памяти Андроид. Разделы Nand flash

93
views

ПРИМЕЧАНИЕ:
Эта информация, будет полезной, и предназначена только для тех кто любит современные гаджеты и хочет понимать как устроена структура памяти в современных смартфонах.
Я не несу ответственности за любой ущерб, причиненный вам или вашему устройству в результате опытов с полученной информацией.


1. Разметка памяти Android

EMMC\UFS\ — является твердотельная Flash память, NAND + блоки RAM памяти+ NAND контроллер памяти. 

RAW NAND, как его называют, представляет собой чистый чип Flash-памяти, зависящий от процессора, который будет распределять, так сказать, данные данные по нужным местам (блокам). 
Но для того, чтобы использовать flash-память так же, как традиционный жесткий диск, NAND flash оснастили микроконтроллером – eMMC чип памяти .

eMMC — можно разметить также как жесткий диск ПК и традиционно были разделены по схеме совместимой с BIOS загрузочной записи (MBR) ,в которой первый сектор диска содержит информацию о разделах, называемых таблицей разделов. Ограниченный размер загрузочного сектора (512 байт)ограничивает до 4 (основных) разделов, перечисленных в MBR. Расширенный раздел был использован для 4+ разделов.
Таблица разделов GUID (GPT) была представлена ​​в загрузочной системе UEFI, которая не зависит от первого загрузочного сектора и, следовательно, может содержать до 128 разделов.

Устройства Android используют GPT разметку (исключением будуn  некоторые модели LG, встречались устройства MBR разметкой). 

2. Коротко о главном. Разделы Nand Flash

Содержимое разделов Android можночастично или полностью изменить, перешить образ системы( .img .bin или .zip файл ). 
 Обычно на устройстве Android существуетот 20 до 40 или более разделов.
На большинстве устройств / system и / data самые большиеи занимают почти 90% Nand Flash .

3.SoC/ CHIPSET / ПРОЦЕССОРЫ,

SoC — является первым компонентом, который начинает свою работу когда мы запускаем ПК или смартфон, который инициализирует другие устройства и загружает загрузчики в память для старта ОС. Это интегрированный чип, содержащий несколько устройств: CPU, GPU, устройство связи и т.д.
Эти устройства загружаются пошаговыми загрузчиками.

MODEM или RADIO — радио в телефоне
Также называется основной полосой, он отвечает за сигналы и на старых устройствах может управлять Wi-Fi , Bluetooth и GPS (набольшинстве новых устройств они обрабатываются ядром и ПЗУ). Обновления зависят от страны и могут улучшать или уменьшать производительность батареи, уровень сигнала сети и возможности роуминга. 
Это не раздел для Android. Он привязан к оборудованию телефона, но в ядре есть код, позволяющий системе Android взаимодействовать с оборудованием.
Прошивка модема — это мини-ОС для чипа сотовой радиосвязи, имеющая собственный процессор. 
Микросхема для WiFi , GPS и Bluetooth часто имеет встроенное программное обеспечение, как и ядро ​​графического процессора. Эти файлы прошивки обычно находятся внутри раздела SYSTEM или VENDOR. Микропрограмма модема является особенной, поскольку она имеет собственный отдельный процессор, поэтому микропрограмма не входит в образ системы в своем собственном разделе.
Интерфейсный уровень RIL / Radio
Это не отдельный раздел, а часть ПЗУ, он похож на драйвер для радио. Для каждой версии Baseband есть соответствующий RIL, и вы можете прошить его, чтобы он соответствовал вашей Baseband после перепрограммирования ROM. Несоответствие RIL и Baseband может варьироваться от отсутствия ошибок, незначительного разряда батареи, потери роуминга или даже отсутствия подключения к сотовойм сети. 

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

RPM (управлениересурсами / питанием) или Primary /PrimitiveBootLoader(PBL) -управляет питанием радио, модема и т. Д.

DSP (процессорцифровых сигналов) — от Qualcomm для обеспечения таких вещей, как плавное воспроизведениевидео ( процессор мультимедиа и датчиков в реальном времени )

HYP (гипервизор) — монитор виртуальной машины для включения платформы виртуальной машины.

4. Загрузчики устройств

Загрузчики  в поэтапно передают заряд ядру после загрузки в ОЗУ. Восновном это автономные исполняемые файлы ELF, поскольку на этом этапе файловая система не загружается и может работать только исполняемый код. Все это компоненты с закрытым исходным кодом наустройстве Android, предоставляемые поставщиками SoC — встроенные или в виде двоичных объектов.

SBL -Вторичный загрузчик, загружаемый SoC , загружает ABOOT в память, а также обеспечивает (аварийный) режим загрузки (EDL) на многих устройствах, протокол обновления прошивки.

ABOOT ( файл bootloader.img или aboot.mbn в FactoryFirmware) — Приложения Bootloader — это основной загрузчик, отвечающий за загрузку ядра или восстановление, а также fastboot -протокол обновления прошивки -.

Kernelflinger — аналогичный загрузчик на устройствах Intel.

5. Разделы AOSP (android)

BOOT — ядро и initramfs (современная форма из ramdisk и ramfs / tmpfs )
Ядро — это слой кода, который позволяет ОС и приложениям взаимодействовать с оборудованием вашего телефона. Степень доступа к аппаратным функциям вашего телефона зависит от качества кода в ядре. Несколько улучшений кода ядра дают нам дополнительные возможности нашего оборудования, чего нет у стандартного ядра. При прошивке пользовательского ПЗУ вы автоматически получаете ядро. Но вы также можете прошить автономное ядро ​​поверх существующего, эффективно перезаписав его. В наши дни разница в пользовательских ядрах заключается не столько в новых функциях, сколько в альтернативных конфигурациях. Выбор собственного ядра — это, в основном, выбор того, который лучше всего работает с вашим ПЗУ .

System — ПЗУ / ОС
Содержит системные приложения и библиотеки с исходнымкодом AOSP. Во времянормальной работы этот раздел монтируется только для чтения; егосодержимое изменяется только во время обновления OTA или при перепрошивке новойОС. БольшинствоПЗУ по умолчанию не разрешают доступ с правами администратора (праваадминистратора в Windows). Таким образом, «root» необходим для изменения содержимого этого раздела. Этофактический пользовательский интерфейс, который мы используем на нашемтелефоне, т.е. системные приложения установлены в этом разделе в каталоге /system / app. Другимважным каталогом является / system / bin, который содержит исполняемые двоичныефайлы для выполнения каждого действия ОС в фоновом режиме (в качестве демонов)или пользователем в сценариях оболочки (bash) или CLI (интерфейс команднойстроки). Этособственные двоичные файлы (в основном разработанные на C / C ++), в отличие отприложений Android, которые разрабатываются на Java. Минимальнаяформа команд Linux также включена в AOSP как набор инструментов или toybox (илипользователь может добавить busybox илиотдельные статические двоичные файлы). Каталог / system / lib содержит нативные библиотеки(обычно используемые приложениями) с такими же расширениями .so. длл на винде.

Vendor
Этот раздел заменен ярлыком (фактически символической ссылкой) на каталог / system /vendor. Он содержит системные приложения и библиотеки, которые не имеют исходного кода, доступного в AOSP, но добавлены поставщиками (OEM). Во время нормальной работы этот раздел монтируется только для чтения; его содержимое изменяется только во время обновления OTA. Он также содержит образы прошивки SoC, то есть аппаратно-зависимые библиотеки и двоичные файлы (OpenGL, ISP …).
Собственные двоичные объекты ( HAL ) обычнонаходятся в (/ system) / vendor как общие библиотеки (.so файлы), которые загружаются связывателями Android, когда процессы вызывают аппаратный компонент. HAL(уровень аппаратной абстракции) — это альтернатива традиционным системным вызовам Linux для драйверов в пользователь скомпространстве, и этосвоего рода стандартизация Google для OEM-производителей / поставщиков оборудования, хотя и оставленная обычным Linux.

User data
Пользовательские приложения устанавливаются в разные папки в / data. Данные приложений (пользователь и система) хранятся в / data / data. Персональные данные пользователя и данные некоторых приложений хранятся в / data / media. / data /media также эмулируется как внутренняя SDCard в /storage / emulated и символическая ссылка в / sdcard . Персонализированныеи настройки приложений также хранятся в этом разделе. 
Папка /data / dalvik содержит, простыми словами, извлеченные приложения для ускорения процесса загрузки. Java-байт-код приложений Android преобразуется в исполняемый код (. Odex ) виртуальной машиной Dalvik ,отдельный экземпляр которого запускается zygote ( демоном инициализации Android ) для каждого приложения.
Этот раздел обычно не затрагивается процессом обновления OTA. Factory Reset стирает этот раздел, обычно исключая / data / media, т.е. личные данные.
Когда вы делаете сброс к заводским настройкам (AKA: стирание, полный сброс, сброс к заводским настройкам и т. Д.), Вы стираете разделы / data и /cache. Обратите внимание, что возврат к заводским настройкам НЕ возвращает ваш телефон в исходное состояние с точки зрения операционной системы. Обновления ОС останутся, потому что ОС находится в / system, и это не затрагивается во время сброса настроек. Так что это не сброс к заводским настройкам. Это заводской сброс данных на самом деле.

Recovery — Содержит альтернативный загрузочный раздел и программу восстановления, которая позволяет устройству загружаться в консоль восстановления для выполнения расширенных операций восстановления и обслуживания. Он содержит вторую полную систему Linux, то есть независимую ОС, включая приложение с пользовательским интерфейсом, ядро ​​и специальный двоичный файл восстановления, который считывает пакет и использует его содержимое для обновления, например, для прошивки или очистки самого себя или любого другого раздела, особенно во время обновлений OTA.

Recovery также является наиболее распространенным методом прошивки пользовательских ПЗУ.

CACHE — кэшированные (часто используемые) данные обиспользовании ОС и содержат пакет обновлений прошивки, загруженный с сервера вовремя обновлений OTA. Область временного хранения используется несколькими приложениями,ожидая, что файлы могут исчезнуть в любое время. Основное использование — восстановление иOTA-обновления. Recovery last_log также записывается в этот раздел.

6. Другие разделы Nand Flash

CUST — также CUSTOM или PRELOAD на некоторых устройствах, используется стандартным ПЗУ, содержит некоторые предварительно загруженные системные приложения и региональные настройки, которые устанавливаются при первой загрузке.

MISC — также FOTA на старых устройствах. Это крошечный раздел, используемый программой восстановления для хранения некоторойинформации о том, что он делает, в случае, если устройство перезагружается вовремя применения пакета OTA.
Это селектор режима загрузки, используемый для передачи данных между различными этапами цепочки загрузки (загрузка в режим восстановления, быстрая загрузка и т. Д.). например, если он пуст (все ноль), система загружается нормально. Если он содержит селектор режима восстановления,система загружается в режим восстановления.
Он также может нести некоторую необходимую информацию в виде переключателей для управления задачами, связанными с оборудованием и его настройками, такими как информация CID (идентификатор оператора или региона) и конфигурация USB и т. Д.

PERSIST — содержит данные, которые не должны изменяться после сборки устройства,например, файлы, относящиеся к DRM, reg- файл датчика (sns.reg) и данные калибровки чипов; Wi-Fi , Bluetooth , камераи т. д.
Некоторые установщики пакетов, такие как OpenGapps, также используют этот раздел для чтения файла конфигурации.

EFS, MODEMST1, MODEMST2, FSG, BACKUP
Все они связаны сIMEI; уникальныйномер, используемый сетями GSM для идентификации и отслеживания мобильноготелефона.
EFS может содержать информацию об оборудовании, такую ​​как файлыконфигурации, MAC- адреса WiFi / BlueTooth , IMEI(или ESN для устройства на основе CDMA) и т. Д.
EFS и MODEMST1 могут быть одним разделом на некоторых телефонах.
FSG ( FileSystem Goldencopy) и BACKUP являются резервными копиями MODEMST1 и MODEMST2 соответственно. Если MODEMST1 или MODEMST2 будут удалены (например, с помощью неправильной прошивки) и телефон обнаружит неверный раздел, FSG и BACKUP будут восстановлены.
MODEMST1 и MODEMST2 также содержат файлы прошивки модема.
PARAM — хранит ряд параметров, переменных и настроек оборудования. Онсодержит информацию о резервном копировании разделов MODEMST или нет. Также настройки отладки, подсчет количества пользовательских ПЗУ, текущий процесс загрузки и т. Д.

OEM — подобный VENDOR, он включает небольшую настройку (модификации) OEM(производителя оригинального оборудования, то есть производителя оборудованияили бренда мобильного телефона) для оригинального Android (AOSP) во время обновлений OTA, таких как настраиваемые значения свойств системы и т. Д.
PAD -относится к OEM
OTA, FOTA — обновления OTA
DDR — ОЗУ сдвойной скоростью передачи данных
FSC — модем файловойсистемы файлов cookie
SSD — SecureSoftware Download, файловая система на основе памяти для безопасного хранения,хранит некоторые зашифрованные ключи RSA.
DEVINFO — информация об устройстве, включая: is_unlocked ( aboot ), is_tampered , is_verified , charger_screen_enabled , display_panel , bootloader_version , radio_version и т. Д. Содержимое этого раздела отображается с помощью » fastboot Команда oem device-info»в удобочитаемом формате. Перед загрузкой boot.img или recovery.img загрузчик проверяет заблокированное состояние этого раздела.
CONFIG / FRP / PDB — сохраняет состояние Factory Reset Protection (FRP), «Разрешить разблокировку загрузчика (OEM)» (Параметры разработчика), запрашивает уже информацию об учетной записи
DEVCFG — используется TZ для обновлений
LKSECAPP — «LK (Little Kernel) Security App», связано с RPM, онлайнпроверкой / обновлением TZ
LIMITS — Драйвер Qualcomm Limits Management Hardware ( LMh ) в SBLзаписывает данные в этот раздел, чтобы использовать их для последующихперезагрузок.
SYSCFG — Qualcomm CPR (Core Power Reduction) регулятор для улучшения производительности и энергосбережения процессора приложений за счет контроля напряжения
DIP, MDTP — проверка загрузки, использование технологии Qualcomm SafeSwitch для блокировки и отслеживания кражи телефонов.
CMNLIB, KEYMASTER — проверка загрузки.

SEC -содержит настройки предохранителей, в основном для безопасной загрузки (подписи загрузчиков) и настройки oem
KEYSTORE — относится к / dataFull Encryption (FDE)
MCFG — (Framework Configuration Modem) — на устройствах с двумя SIM-картами загружает файлы MBN (двоичные файлы модема) в зависимости от SIM-карты / носителя
SPLASH — заставка или логот загрузки, которые появляются при загрузке устройства (на этапе ABOOT).
CHGLOGO — логотип зарядки экрана , который появляется , когда зарядное устройство подключено к выключенному устройству.
MSADP, SPDP, DPO — связанная область с политиками отладки.
GROW — пустая область flash памяти, для будущих расширений.