- Что такое переразметка памяти андроид
- Мобильные устройства изнутри. Разметка памяти, структура файлов описания и разметки памяти
- 1. Введение
- 2. Что такое разметка памяти?
- 3. Схемы разметки памяти
- 3.1.Mbr-схема разметки памяти
- 3.2. Gpt-схема разметки памяти
- 4. Таблицы описания разделов памяти
- 4.1. Parameter-файл
- 4.1.1. Описание параметров файла PARAMETER
- 4.1.2. Параметр CMDLINE и его возможности
- 4.2. Rawprogram0-файл
- 4.3. Ota-файл
- 4.4. Scatter-файл
- 4.4.1. Версия 1
- 4.4.2. Версия 2
- 5.Файлы разметки памяти.
- 5.1. Mbr-файл
- 5.2. Ebr-файл
- 5.3. Gpt-файл
- 5.4. Parameter-файл
- 5.5. Pmt-файл
- 5.6. Pit-файл
Что такое переразметка памяти андроид
Разметка памяти мобильных устройств. Теория и практика
В этой теме будут затронуты следующие вопросы:
- строение файлов разметки памяти, таких как scatter, MBR, EBR, GPT, EFI, parameter и др.;
- предложены средства (приложения) для изменения разметки памяти;
- даны практические рекомендации по осуществлению операций по переразбивке (переразметке) памяти мобильных устройств.
Для начала стоит начать с материала под спойлером «Полезная информация«, а затем, наполнившись знаниями, приступить и к практике, используя приложения, представленные ниже:
Требования:
- операционная система Windows 7 или выше;
- установленный пакет .NET 4.0.
Возможности:
- позволяет изменять размер ЛЮБОГО раздела памяти с автоматическим пересчетом параметров всех разделов;
- позволяет удалять любой раздел полностью;
- восстанавливать PMT-файл по имеющемуся scatter-файлу;
- восстанавливать scatter-файл по имеющемуся PMT-файлу;
- автоматически формирует файлы разметки памяти (scatter, MBR+EBR);
- устанавливает верхнюю границу памяти 3 способами ;
- размеры памяти привязаны к размеру блока, размер которого можно выбрать ;
- работает с нестандартными scatter-файлами;
- мультиязычность. Поддерживается два языка: русский и английский.
Свежая версия
Архив содержит папку с ресурсами русского языка, распаковать ВСЮ структуру вместе.ScatterEditor_v1.06.zip ( 43.32 КБ )
ИнструкцияИнструкция пользователя ScatterEditor_v1.06.zip ( 1.36 МБ )
Требования:
- операционная система Windows 7 или выше;
- установленный пакет .NET 4.0.
Возможности:
- поддерживает файлы новой структуры;
- позволяет изменять размер ЛЮБОГО раздела памяти с автоматическим пересчетом параметров всех разделов;
- позволяет удалять разделы;
- автоматически формирует файлы разметки памяти (scatter, MBR+EBR);
- правильно устанавливает верхнюю границу памяти, которая просматривается через свойства аппарата;
- мультиязычность. Поддерживается два языка: русский и английский.
Свежая версия
Архив содержит папку с ресурсами русского языка, распаковать ВСЮ структуру вместе.Scatter2Editor_v207.7z ( 34.77 КБ )
Инструкция в pdf форматеИнструкция пользователя Scatter2Editor_v2.03.zip ( 1011.1 КБ )
Требования
- операционная система Windows 7 или выше;
- установленный пакет .NET 4.0.
Возможности
- позволяет редактировать размер и флаг ЛЮБОГО раздела;
- позволяет изменять параметры командной строки запуска;
- мультиязычная версия;
Свежая версияRK_ParamEd_v1.01.rar ( 20.43 КБ )
Инструкция пользователяRK_ParamEd_1.01. Users manual.rar ( 990.79 КБ )
- PartitionsA23 — разметка разделов на процессорах AllWinner — для чипов А23 и А33, A31s (возможно подойдёт и для других чипов)
Приложение для обработки файлов разметки схем DOS (MBR+EBR, partition.bin и т.п.) и GUID (файл GPT, EFI и т.п.).
Требования
- операционная система Windows 7 или выше;
- установленный пакет .NET 4.0.
Свежая версияPartitionsEditor_1.02.rar ( 122.15 КБ )
Инструкция пользователя
Скоро будет.
В теме нет куратора. По вопросам наполнения шапки обращайтесь к модераторам раздела через кнопку под сообщениями, на которые необходимо добавить ссылки.
Если в теме есть пользователь, желающий стать Куратором и соответствующий Требованиям для кандидатов, он может подать заявку в теме Хочу стать Куратором (предварительно изучив шапку темы и все материалы для кураторов).
Сообщение отредактировал derak1129 — 12.10.21, 06:08
Проверить успешность процесса переразмеки, можно только одним способом : посмотреть каким стал размер того раздела, манипуляции с которым Вы проводили в программе ScatterEditor .
Посмотреть размеры разделов телефона можно, например, через программку MTK Droid Tools Для этого подключите тел. к ПК, на котором уже установлены все необходимые драйвера, и запускаем прогу (через эту же прогу получаем временный Root-Shell , если его нет) затем жмем на кнопку «Карта блоков» . Появляется новое окошко, в котором и смотрим размеры разделов телефона.
Сообщение отредактировал SevenMaxs — 15.09.14, 17:14 ps: Могу помочь в создании топиков (в стиле Android update-script, лучшую инфу с форума собрал в одном месте). Prince_Saint Что такое MBR-файл. Введение. Структура MBR и EBR файлов. MBR имеет размер 512 байт, т.е. один физический сектор и имеет следующую структуру: Каждая запись таблицы разделов имеет длину 16 байт, а содержимое зависит от используемой ОС. Для мобильных устройств формат записи таблицы разделов имеет следующий вид: Структура записи таблицы разделов Смещение раздела указывается от первого сектора описываемой этой таблицей области памяти. Т.е. если в поле смещения раздела указано значение 0х400, а сама таблица (MBR) расположена в памяти, начиная с адреса 0х00600000 (это указывается в scatter-файле), то этот раздел физически будет расположен в памяти с адреса 0х00600000 Код типа раздела описывает его содержимое. Так, если раздел не содержит информации, т.е. пуст, то его код устанавливается в 0х00. Работа с MBR и EBR файлами. В связи с большим объемом материала примеры я решил вынести в отдельный пост. Сообщение отредактировал vin2809 — 12.02.14, 20:39 Введение. Строение scatter file. [__NODL_]name offset [length]
Квадратные скобки означают необязательный параметр.
EXT4_IMG — раздел содержит часть файловой системы EXT4;
EMMC_BOOT_1 —
BINREGION — область «сырого кода»;
Пример полного scatter-файла второй версии, приведен в файле «Scatter_v2.txt». Работа со scatter file. Пример scatter-файла Сообщение отредактировал vin2809 — 27.02.14, 15:26 Источник Мобильные устройства изнутри. Разметка памяти, структура файлов описания и разметки памяти1. ВведениеКак оказалось, разметка физической памяти мобильных устройств (МУ) это малоописанный раздел знаний, необходимых разработчику. Т.к. память существует во всех устройствах, созданных на основе микропроцессоров или микроконтроллеров, а их уже миллиарды, то это еще и очень-очень востребованный раздел знаний. Эта статья посвящена аспектам разметки памяти только МУ, т.к. именно здесь существует тесно свитый разными производителями клубок из файлов описания разметки при почти полном отсутствии теоретических данных о структуре самих этих файлов. Разметка физической памяти МУ формируется на основании таблиц или списков описаний параметров разделов памяти. Практически каждая фирма-производитель МУ имеет свою форму (структуру) этих таблиц. Тем не менее, все описания параметров разделов имеют много общего, что позволяет рассматривать их в едином контексте. На основе таблиц описаний затем формируются файлы разметки памяти, которые в виде образов разделов прошиваются непосредственно в память МУ. 2. Что такое разметка памяти?Подробнее, что представляет собой разметка памяти МУ и для чего это нужно, можно посмотреть, например, в [1]. Вот еще одна публикация, в которой доступно объясняется устройство памяти и ее разметка [2]. Если кратко, то разметка памяти, как процесс, выполняет распределение всего объема внутренней физической памяти МУ на отдельные разделы, которые могут иметь разное функциональное назначение, вплоть до разных файловых систем, и разные права доступа. Это позволяет выделить в памяти отдельно области для хранения данных и работы пользователя, отдельно для работы операционной системы, шифровать или форматировать разделы при необходимости и независимо друг от друга и т.д. При выполнении разметки разработчик МУ должен придерживаться некоторых правил, которые называются схемами разметки памяти. Схема разметки описывает размещение всех разделов физической памяти: их очередность, смещение и название, т.е. метку или имя раздела. Могут указываться и другие параметры: его размер, тип, регион, флаги и т.п. Для выполнения разметки памяти используют файлы двух видов: текстовые и бинарные (двоичные RAW-файлы). Текстовый файл представляет собой перечень (список) всех разделов памяти, каждая запись которого содержит описание основных параметров этих разделов. Он используется при выполнении нескольких операций:
Бинарный файл разметки содержит разметку памяти в структурированном виде, понятном для работы операционных систем (ОС). Он размещается в прошивке МУ и затем прошивается в раздел разметки непосредственно в физическую память. Процесс создания разметки памяти можно описать следующим алгоритмом:
Давайте рассмотрим схемы разметки памяти и строение таблиц описаний параметров подробнее. 3. Схемы разметки памятиЧаще всего применяются две схемы разметки памяти: Mbr и Gpt. При любой схеме разметки памяти первым по порядку разделом в пользовательском регионе МУ всегда должен быть раздел разметки (Mbr, Gpt, Parameter). 3.1.Mbr-схема разметки памятиСогласно Mbr-схеме память МУ представляется как последовательность разделов, дополненная главной загрузочной записью или Mbr (Master Boot Record), содержащей таблицу описания разделов. Mbr физически располагается в первом (нулевом) секторе памяти МУ:
Mbr содержит сигнатуру, т.е. признак Mbr, и непосредственно саму таблицу описания разделов. Внутреннее строение Mbr [3] позволяет разместить в ней только 4 записи о разделах, что является в современных условиях существенным недостатком. Если требуется разбить память на большее количество разделов, то используется дополнительная (расширенная) загрузочная запись Extended Boot Record (Ebr). При этом в Mbr вместо записи об одном из разделов помещается запись о дополнительном (extended) разделе, содержащем только Ebr. Сама Ebr устроена аналогично Mbr, и использовать ее нужно точно также. Т.е., если при заполнении таблицы Ebr опять не хватает места под записи о разделах, то создается следующая Ebr-таблица и т.д. Mbr и все Ebr могут помещаться в отдельные файлы-образы, которые размещаются и прошиваются в соответствующих отдельных разделах памяти. При этом все файлы, содержащие Ebr, имеют имена нумерованные последовательно: Ebr1, Ebr2,… При другом варианте Ebr помещаются в один файл-образ последовательно, тогда этот образ, соответственно, размещается в одном Ebr-разделе памяти. 3.2. Gpt-схема разметки памятиGpt-схема разметки (GUID Partition Table) является частью EFI (Extensible Firmware Interface) — стандарта, используемого вместо BIOS для разметки памяти и загрузки ее разделов. Переход на другой формат описания разделов позволил устранить самый существенный недостаток Mbr-схемы — малое число разделов, т.к. в таблице описания разделов Gpt можно разместить до 128 разделов. Структуру самих таблиц можно посмотреть в [4]. Согласно Gpt-схеме память МУ тоже представляет собой последовательность разделов, необходимых для работы МУ, дополненную спереди Gpt-таблицей описания разделов, называемой основной. При этом после всех разделов размещается дополнительная Gpt-таблица, называемая резервной. Такое расположение таблиц, теоретически, повышает надежность разметки, т.к. при сбое или порче основной Gpt-таблицы ОС может использовать для работы, или восстановления основной, резервную. 4. Таблицы описания разделов памятиТаблицы описания разделов памяти МУ содержат информацию о всех разделах, необходимую для создания разметки памяти. Каждая строка (запись) таблицы описывает один раздел и содержит, как правило, следующие параметры:
Т.к. эти таблицы используются производителями МУ при выполнении непосредственно прошивки образов разделов в память при помощи флешеров (программаторов), то записи могут содержать дополнительные параметры, требуемые для правильной настройки свойств разделов, например:
Физически таблицы описания разделов представляют собой текстовые файлы формата txt или xml. В моей практике встречались следующие их разновидности:
Давайте рассмотрим их строение подробнее. 4.1. Parameter-файлПрошивка МУ на чипе RK содержит текстовый файл PARAMETER, который предназначен для описания построения (настройки и загрузки) физической памяти блочного типа. Причем использовался он и на ОС LINUX. Оригинальный вид содержимого файла PARAMETER для МУ Cube u30gt-M приведен ниже:
4.1.1. Описание параметров файла PARAMETERФайл PARAMETER может содержать следующие параметры:
Самый большой интерес для разработчика представляет параметр CMDLINE. Он содержит набор значений ключей для настройки Вашего устройства. 4.1.2. Параметр CMDLINE и его возможностиФормат командной строки, т.е. CMDLINE, имеет следующий вид:
Вот список возможных ключей:
В свою очередь параметр mtdparts имеет следующее строение: mtddef — описание разметки памяти устройства блочного типа (БУ). Если МУ содержит несколько БУ, то может содержать и несколько описаний, которые располагаются последовательно без промежутка и разделяются символом «точка с запятой». Описание разметки памяти каждого БУ имеет следующее строение:
Каждая запись partdev содержит описание одного раздела памяти, за единицу измерения принят блок, размер которого составляет 0х200(512) байт, и имеет следующую структуру: Параметр part_size описывает размер раздела в блоках, выраженный в hex-системе счисления. Если вместо размера указан символ «минус» («-«), это означает максимально возможный размер, т.е. до физического конца памяти. Параметр part_offset представляет смещение раздела в блоках, выраженный в hex-системе счисления. Смещение всегда выравнивается на границу в 0х1000. Параметр label (имя раздела) это строковый идентификатор раздела, заключенный в круглые скобки, например, (boot). Параметр flag (флаг) может принимать только одно значение — «ro«, означающее, что раздел предназначен только для чтения. Отсутствие флага означает, что раздел доступен для чтения и записи. Несколько очень важных замечаний:
4.2. Rawprogram0-файлФайл rawprogram0.xml предназначен для описания разметки памяти МУ на основе чипов Qualcomm и имеет следующее строение: Рис.3. Вид файла rawprogram0.xml от Lenovo s90a Он содержит таблицу описания параметров разделов в виде xml-элементов типа program. Все разделы перечисляются строго в порядке их размещения в памяти МУ. Каждый xml-элемент может содержать следующие xml-атрибуты: SECTOR_SIZE_IN_BYTES — размер сектора в байтах; 4.3. Ota-файлЭто единственный файл описаний, который описывает строение файла прошивки, а не разметку памяти. Например, файл ota-обновления МУ на чипе МТ6582 фирмы MTK, имеет следующий вид: Он содержит описание тех разделов, чьи образы присутствуют в файле прошивки для ota-обновления, каждое из которых имеет следующее строение: label part_offset, где
Все образы в прошивке размещены строго последовательно без «дыр», поэтому размер каждого образа раздела part_size_n вычисляется по следующей формуле: part_size_1 = part_offset_2 — part_offset_1 4.4. Scatter-файлФайл scatter содержит описание разметки памяти МУ, построенных на основе чипов МТК. Существует три версии структуры этого файла, что связано с историческим развитием возможностей как самих чипов памяти, так и чипов процессоров фирмы MTK. 4.4.1. Версия 1Файл описаний разметки первой версии содержит список описаний каждого раздела памяти, и имеет следующий вид: Рис.5. Scatter-файл первой версии Каждый раздел памяти описывается следующей структурой:
Чаще всего используется сокращенная запись вида: Такое описание разделов памяти предполагает, что:
4.4.2. Версия 2Scatter-файл описаний разметки памяти второй версии содержит заголовок и непосредственно таблицу описаний каждого раздела памяти. Он имеет следующий вид: Рис.6. Scatter-файл второй версии Заголовок содержит параметры прошивки целиком и содержит следующие поля:
Каждый раздел памяти описывается следующим набором полей: partition_index — метка раздела;
linear_start_addr — смещение раздела в файле прошивки, байт;
storage — название хранилища размещения раздела;
При работе флешер из таблицы описания разделов выбирает параметры, основными являются Begin Address и Format Length. Для чипов МТ6572-МТ6577 в качестве значения Begin Address флешером используется значение поля linear_start_addr, отражающее истинное смещение раздела в памяти (представляющей один сплошной регион), т.к. чипы не умеют работать с регионами, а используемая память имела только один регион для размещения разделов. При этом значение поля «physical_start_addr» всегда равно нулю. Чипы МТ6582 уже умеют работать с регионами, но используемая память еще имеет только один регион. Поэтому в качестве значения Begin Address флешером уже используется значение поля physical_start_addr, отражающее смещение раздела в пределах регионов, создаваемых в памяти программно, а поле linear_start_addr содержит значения смещения от начала чипа памяти. В связи с тем, что, начиная с чипа МТ6592, МУ от МТК используют полноценную работу с регионами памяти, то для чипов МТ6592 и выше флешером в качестве значения Begin Address используется значение поля physical_start_addr. Значение поля Format Length флешер всегда получает из поля partition_size. 5.Файлы разметки памяти.Файлы разметки памяти содержат образ раздела разметки памяти МУ. Их структура зависит от схемы разметки (Gpt или Mbr) и от назначения, например, резервные файлы разметки Pmt или Gpt. Встречаются следующие виды файлов разметки:
5.1. Mbr-файлMbr-файл представляет собой образ раздела разметки памяти по Mbr-схеме, имеющий размер 1 сектор, т.е. 512 байт. Каждая запись параметров раздела содержит следующие поля, значения которых отличается от принятых в классической структуре Mbr: Поле IsBoot имеет размер 1 байт и используется для обозначения активности раздела, старший бит которого указывает на загрузочный раздел: Поле Type имеет размер 1 байт и используется производителями МУ для обозначения типа описываемого раздела. Обозначение типа раздела у разных производителей могут отличаться, но есть некоторые общепринятые значения: Поле Offset имеет размер 4 байта и содержит значение смещения раздела, выраженное в секторах. Поле Size имеет размер 4 байта и содержит значение размера раздела, выраженное тоже в секторах. По адресу 0x01FE расположена сигнатура Mbr-файла, имеющая значение 0xAA55. 5.2. Ebr-файлEbr-файл представляет собой образ расширенного раздела разметки памяти, выполненной по Mbr-схеме. Он имеет такое же строение и размер, как и Mbr-файл: Отличия заключаются в том, что в Ebr-файле признак активности всегда установлен в 0, да и этих файлов, при необходимости, может быть уже не один, а 63. Соответственно, для их размещения тоже понадобится создавать до 63 разделов, что приводит к расточительному расходованию памяти МУ. Если разделов памяти относительно немного, например, как в МУ Star Z2, то используются отдельные файлы Ebr1 и Ebr2, размещаемые в отдельных разделах. Но, если разделов много, например,, то все файлы Ebr можно сложить в один и разместить общий файл в одном разделе памяти. 5.3. Gpt-файлGpt-файл содержит образ разметки памяти по Gpt-схеме. Чаще всего МУ имеют стандартную структуру Gpt-схемы, поэтому, фактически, в прошивке имеется два Gpt-файла: основной, называемый pgpt (primary) или gpt_main, и вторичный (резервный), называемый sgpt (secondary) или gpt_backup. Основной Gpt-файл располагается в памяти МУ, начиная с нулевого сектора, занимает 34 сектора и имеет следующее строение:
Резервный Gpt-файл занимает 33 сектора и располагается в памяти МУ, вплотную к концу памяти, так, что последний сектор Gpt-файла располагается в физически последнем секторе памяти. Он имеет следующее строение:
5.4. Parameter-файлParameter-файл, т.е. образ раздела, содержащего разметку памяти, содержит только сам текстовый файл PARAMETER, причем независимо от размеров этого раздела. Вот как Parameter-файл выглядит, например, внутри прошивки для устройства U30GT-H фирмы RK [6]: 5.5. Pmt-файлPmt-файл представляет собой образ резервного раздела разметки памяти, используемой разработчиками МУ фирмы МТК, и имеет размер 4096 байт. Образ раздела PMT состоит из двух таблиц описания разделов памяти. В начале расположена базовая, а следом за ней резервная или зеркальная (mirror) таблица описания разделов. Каждая из таблиц состоит из:
Рис.10.Сигнатура базовой таблицы А для резервной таблицы эта строка имеет вид «MPT1»: Рис.12.Сигнатура конца базовой таблицы Для резервной таблицы эта строка имеет вид «‘MPT1’\х01\х00\х03\х01»: Структура каждой записи имеет размер 0х58 (88) байт состоит из 4 полей и имеет следующий вид: 5.6. Pit-файлPit-файл (Partition Information Table) представляет собой образ раздела разметки памяти, используемой разработчиками МУ фирмы Samsung, и имеет размер 4096 байт. Информация по строению образа взята из [7, 8]. Pit-файл состоит из заголовка и таблицы описаний параметров разделов. Заголовок имеет размер 28 байт и содержит следующие поля: Следом располагается таблица описаний параметров разделов, состоящая из записей о разделах. Признак конца таблицы — пустая запись. Каждая запись содержит следующие поля: Поле binary содержит тип операционной системы. Допустимы следующие значения: Поле device содержит тип устройства. Допустимы следующие значения: Поле id содержит порядковый номер раздела в прошивке. Поле flags содержит флаги раздела. Может принимать значения: Поле update содержит флаги раздела при обновлении. Может принимать значения: Поле part_off содержит смещение раздела в памяти, выраженное в блоках. Поле part_len содержит размер раздела в памяти, выраженный в блоках. Поле offset содержит смещение файла-образа в прошивке, выраженное в блоках. Поле file_size содержит размер файла-образа, выраженный в блоках. Поле label имеет длину 32 байта и содержит метку раздела памяти, завершенную нулем (0х00). Поле file_name содержит имя файла-образа раздела прошивки, завершенное нулем (0х00). Поле fota_name содержит имя файла-образа раздела прошивки FOTA-обновления, завершенное нулем (0х00). Источник |