Переразметка памяти андроид для чего

Мобильные устройства изнутри. Изменение разметки памяти планшета

Изменение разметки памяти планшета

1.Введение.

Как-то попался мне в руки планшет YB1-X90L от Lenovo, выполненный на чипе от Intel:

Рис.1. Планшет YB1-X90

Я попытался выполнить над ним некоторые, в принципе, я бы сказал, стандартные модификации для мобильного устройства (МУ), попавшего в руки разработчика:

  • разблокировать загрузчик;
  • установить custom recovery;
  • получить ROOT;
  • посмотреть разметку памяти;
  • ну и общие исследования возможностей работы.

Все пункты плана были успешно выполнены. Одним из незапланированных пунктов стало исследование раздела разметки, который я назвал GPT-разделом Intel-типа.

Тем не менее, на многих сайтах очень популярна тема по изменению разметки МУ, выполненной по GPT-схеме, тем более, если это GPT-раздел Intel-типа. Получается, что этот вопрос, несмотря на теоретические выкладки, так и остается до сих пор не закрытым… Вот я и решил воспользоваться моментом, что у меня на руках имеется свободное МУ, которое можно немного «помучать», и провести натурные испытания своих теоретических познаний. Короче, я задумал изменить разметку памяти…

Перед началом выполнения работ я снял все, что можно по существующей разметке: файлы partitions, dev/block/by-name/ и образ GPT-раздела.

  • планшет, имеющий стоковую прошивку;
  • образ GPT-раздела Intel-типа;
  • файл partitions, снятый с реально работающего МУ.

Что надо: для своих экспериментов мне понадобился отдельный раздел памяти размером 512Мб.

Соответственно, для его размещения нужно где-то в памяти планшета найти эти мегабайты…

2.Планирование изменений разметки памяти.

Давайте внимательно рассмотрим файл partitions:

«Кандидатами» на «урезание» из-за своих размеров могут быть, например, три раздела: android_country (mmcblk0p11), android_data (mmcblk0p14) и android_system (mmcblk0p13). Они, как правило, имеют размер раздела гораздо больше, чем образ, заливаемый в них, что и позволило бы мне беспрепятственно выделить память под новый раздел. Однако не забывайте, что изменение размеров разделов, соответственно и смещений расположения разделов, потребует возни с восстановлением данных этих разделов, т.е. их резервного сохранения и последующего восстановления… Поэтому проще «откусить» свободное место от раздела data, т.к. он расположен последним. Это позволит нам избежать выполнения пересчета размеров затронутых разделов памяти и восстанавливать придется только один раздел.

Таким образом, нам нужно только добавить новый раздел между разделом android_system и разделом android_data. Этот раздел назовем win_tools, а размер зададим 512Мб. Все параметры нового раздела сведены в таблицу:

3.Внесение изменений в прошивку планшета.

Нам повезло, т.к. если бы GPT-раздел был стандартным, то пришлось бы изменять оба раздела: основной и резервный. А так только меняем один GPT-раздел Intel-типа. Приступаем…

3.1.Внесение изменений в GPT-файл.

Сначала внесем изменения непосредственно в GPT-файл, хранящий образ GPT-раздела прошивки планшета. Для этого берем из стоковой прошивки файл gpt.bin и:

    Загружаем его в hex-редактор:

Находим запись о разделе android_system и копируем ее полностью в качестве шаблона нового раздела:

Переходим на начало записи о следующем разделе, т.е. android_data, и вставляем шаблон:

Новая запись должна содержать описание нового раздела, возьмем значения параметров описания из табл.1 и заполним поля Size (было 0x00000F00, станет 0x00000200), Label (было android_system, станет win_tools) нового раздела. Все внесенные изменения отмечены красным цветом на рисунке:

Переходим на заголовок GPT-раздела и внесем изменения в поле Number (Число записей о разделах) (смещение 0х08 заголовка). В поле было число 0х000E (14 разделов), мы запишем туда число 0x000F (станет 15 разделов), на рисунке ниже оно выделено красным цветом:

  • Сохраняем обновленный файл GPT-раздела Intel-типа.
  • Все, раздел разметки изменили, теперь нужно его поместить в планшет.

    3.2.Прошивка GPT-файла в МУ.

    Т.к. мы решили переместить начало раздела android_data, то, чтобы потом найти данные там сохраненные, выполним backup раздела. После этого можно смело менять разметку памяти…

    Прошивка любых образов разделов, снятие/установка блокировки загрузчика и т.п. действия выполняются при помощи флешера фирмы Intel PhoneFlashTools. Причем использовать нужно тот, версия которого поддерживает Ваше МУ. Исследуемый планшет нужно «препарировать» версией 5.3.2.0. Дополнительным условием для успешного проведения операции является наличие json-файла, управляющего процессом выполнения. С версией флешера разобраться легко, а вот json_файл пришлось писать самому, т.к. изменять разметку, похоже, еще никто не пробовал.

    ВНИМАНИЕ! Перед выполнением любых работ по изменению разметки памяти ОБЯЗАТЕЛЬНО выполните резервное копирование всех разделов памяти.

    Дело в том, что переразметка физически затрагивает только один раздел — раздел разметки. Все Ваши данные, система, IMEI сохраняются на прежних местах. Только МЕНЯЮТСЯ указатели на эти места, которые и хранятся в разделе разметки. Это приводит к тому, что Вы средствами МУ (операционной системой) просто не сможете попасть в места хранения информации.

    4.Проверка результатов проделанной работы.

    После выполнения работ я снял всю информацию по новой разметке: файлы partitions и образ нового GPT-раздела.

    Читайте также:  Почему андроид воспроизводит только звук

    Посмотрим содержимое partitions:

    Теперь можно сравнить, что было и что стало, с разметкой:

    Видно, что раздел mmcblk0p14 размером 24986624 переместился на строчку ниже, уменьшился до размера 24462336 и стал теперь разделом mmcblk0p15, а на его месте появился новый раздел mmcblk0p14 размером 524288.

    Ну и сравним содержимое образов GPT-разделов до и после переразметки. Вот заголовок стокового GPT-раздела:

    Вот записи о промежутке разделов system — data этого же образа:

    А вот заголовок GPT-раздела после переразметки:

    Вот записи о том же промежутке разделов system — data GPT-раздела после переразметки:

    Все говорит за то, что раздел действительно существует, кстати, а вот список разделов, снятый из папки /dev/block/by-name при помощи Total Commander:


    Рис.9. Список образов разделов МУ

    5.Заключение.

    Те, кто внимательно почитали публикацию, поняли, что вносить изменения чисто в разметку памяти совсем несложно, а если учесть, что для этих целей существуют и специализированные редакторы…

    Гораздо больше проблем возникает при занесении этой разметки внутрь МУ, хотя это уже материал для другой публикации…

    Источник

    ciases / Переразметка памяти на смартфоне.md

    Инструкция по увеличению, уменьшению и восстановлению внутренней памяти и USERDATA — Пример Для Аппарата 1/4.

    Перезагружаемся в рековери. Размонтируем все что есть: twrp > монтирование > отключаем все. Далее в Расширенные > Терминал . На текущей директории Выбрать(Select) . Попадаем в командную строку. Смотрим информацию по разделам командой (0 — ноль):

    После команды, появится таблица и идем в самый низ, находим цифры 26 и 27 . 26 раздел с именем userdata , если вы запароли только внутренню память, то за это отвечает 27 раздел, его может не быть вообще или быть, но без метки ‘grow’ , если просто нет метки, то из-за этого внутренняя память может не монтироваться (для этого нужно ввести команду: parted /dev/block/mmcblk0 name 27 ‘grow’ и перезагрузиться рековери и выбрать внутреннюю память в разделе инсталл,после перезагрузки она определится).

    2. Удаление разделов

    Перед удалением разделов, посмотрите начальные значения в мегабайтах для 26 и 27 разделов . Они указаны как данные с которых берется начало ,например: 1347 3959 — первое значение, начало — в мегабайтах, а второе конец. Так как у меня аппарат 1/4, то поэтому у меня конец в 3959 — что равно 4гб общей памяти. У меня был только 26 раздел, из — за чего и пропала внутренняя память, а 27 не было, он пропал. Поэтому я решил делать переразметку.

    Удаление разделов (это необратимые действия. После них разделы для системы будут потеряны): Вводим команды:

    Все разделов нет. Они удалены. Делаем проверку таблицы снова и для этого вводим команду:

    В таблице должно бить 25 наименования после удаления, то есть последняя цифра в нумераци должна быть 25.

    3. Создаем раздел userdata (внутренняя память)

    Вводим начальные и конечные данным в мегабайтах. Если хотите добавить больше места на внутренню память для программ и музыки, например, у меня раздел 26 начинался на 1347, а конечный я указал 2000(мегабайт). Таким образом, 27 раздел нужо будет записывать с конца 26. То есть 27 -тот где будут проги и музыка ,будет начинаться с 2000 и заканчиваться 3959. То есть для своих данных я освободил 1.8 гб.

    Команда для создания 26 раздела — UserData:

    Цифры, вписываете свои-из своей таблицы,которые нужно было переписать на листик или в блокнот на комп.

    Выдаем имя новому разделу

    Проверяем разделы после выполнения:

    Должен появиться 26 ой раздел в ext2 c конечным разделом — в моем примере конечный обьем 2000мб. Если появился то идем дальше.

    4. Создаем раздел для данных (внешняя память)

    Здесь мы создаем 27 раздел — для данных, музы и т д. Команда создания почти такая же что и в предыдущем шаге. Вместо 100% можно указать конечный размер 3959 в мегабайтах.

    Далее присваиваем имя или имя для 27 раздела, чтобы оно отображался как внутрення память для программ и монтировался в компьютере.

    Проверяем разделы после выполнения:

    Должен появиться раздел 27 с вашими введенными данными. М моем случае, он начинается на 2000мб и заканчивается на 3959мб.

    После этого или делаем перезагрузку в рековери снова,чтобы обновить данные и ставим прошивку или же ставим ее сразу. Если Интернал Сторедж-Врунтренняя память для программ и ваших данных не отображается, проверьте есть ли в 27 разделе метка grow , у 26 раздела это метка userdata . Если у 27 раздела нет метки, делаем ее так:

    Потом перезагружаемся в рековери, выбираем внутреннюю память, если до этого грузились с юсб или сд карты.

    Если после всего все работает ,но внутренней памяти нет-для программ, игр и т д. Тогда проделайте еще раз:

    Внимание,начальные и конечные данные указывайте свои,вместо конечных данных, можно ставить просто 100% Потом перезагружаемся снова в рековери,выбираем раздел интернал сторедж и вместо нуля при выборе, там поменяются данные на ваши, которые вы указали при переразметки.

    Источник

    Переразметка памяти андроид для чего

    Разметка памяти мобильных устройств. Теория и практика

    Читайте также:  Messenger facebook для андроида

    В этой теме будут затронуты следующие вопросы:

    • строение файлов разметки памяти, таких как 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-файл.

    Введение.
    Для работы операционной системы (ОС) необходимо создать таблицу размещения ее частей. Эта таблица находится в MBR (Master Boot Record — главная загрузочная запись), которая физически располагается в начале памяти.
    MBR содержит саму таблицу размещения разделов, сигнатуру файла (т.е. признак Boot Record) и исполнимый код, используемый некоторыми ОС для загрузки.

    Структура MBR и EBR файлов.

    MBR имеет размер 512 байт, т.е. один физический сектор и имеет следующую структуру:

    Каждая запись таблицы разделов имеет длину 16 байт, а содержимое зависит от используемой ОС. Для мобильных устройств формат записи таблицы разделов имеет следующий вид:

    Структура записи таблицы разделов
    ——————————————
    Смещение Длина Описание
    ——————————————
    00h-03h 4 Неиспользуется (всегда 0х0)
    04h 1 Код типа раздела
    05h-07h 3 Неиспользуется (всегда 0х0)
    08h 4 Смещение раздела (в секторах по 512 байт)
    0Ch 4 Количество секторов раздела (длина раздела)
    ——————————————

    Смещение раздела указывается от первого сектора описываемой этой таблицей области памяти. Т.е. если в поле смещения раздела указано значение 0х400, а сама таблица (MBR) расположена в памяти, начиная с адреса 0х00600000 (это указывается в scatter-файле), то этот раздел физически будет расположен в памяти с адреса

    0х00600000
    + 0х00080000 (0х400*0х200=0х00080000)
    —————
    0х00680000

    Код типа раздела описывает его содержимое. Так, если раздел не содержит информации, т.е. пуст, то его код устанавливается в 0х00.
    Если разделов больше 4 и в одну таблицу MBR они не помещаются, то заводится дополнительная таблица — расширительная. Она называется EBR1 (Extended Boot Record). Код такого раздела 0х05. Коды часто используемых разделов приведены в таблице.
    Раздел, содержащий EBR1 имеет точно такую же структуру, только отсутствует исполнимый код. Если количество разделов не помещается и в дополнительную таблицу, то одна из записей будет содержать описание следующей таблицы, имеющей название EBR2. И так далее по мере надобности.

    Работа с MBR и EBR файлами.
    В файлы, содержащие таблицы MBR и EBR, вносятся изменения после корректировки scatter-файла. Зная первоначальные размер и смещение раздела, его можно найти в таблице BR.
    Затем новые значения этих параметров переводятся из байт в сектора, разделив на 512 (0х200), и вписываются в соответствующие поля таблицы.

    В связи с большим объемом материала примеры я решил вынести в отдельный пост.

    Сообщение отредактировал vin2809 — 12.02.14, 20:39

    Введение.
    Разметка памяти, т.е. разбивка на разделы, в устройствах на чипах МТК производится при помощи файла, который называется «scatter file».
    Он используется программами-прошивальщиками, т.н. флешерами (от английского «flasher») при прошивке полного образа памяти или отдельных ее частей, называемых разделами.
    Структура scatter file содержит описание всех существующих разделов памяти, независимо от того, что они будут содержать в работающем устройстве.

    Строение scatter file.
    Существует две версии структуры scatter-файла. Рассмотрим первую версию, используемую в большинстве мобильных устройств на чипах MTхх.
    Полное описание раздела памяти представляет собой набор строк вида:

    [__NODL_]name offset [length]
    <
    >, где

    • __NODL_ — «No download» признак того, что раздел будет пропущен флешером, и для его работы не требуется файл для прошивки. Такой раздел можно вообще исключить из scatter file;
    • name — название раздела;
    • offset — смещение раздела от начала памяти в 16-ричном виде, байт;
    • length — длина раздела в 16-ричном виде, байт.

    Квадратные скобки означают необязательный параметр.
    Чаще всего используется сокращенная запись вида:

    • — partition_index — индексный номер раздела, например, SYS1;
    • — partition_name — имя раздела, например, MBR;
    • — file_name — имя файла, содержащего образ раздела, или NONE;
    • — is_download — признак загружаемости раздела (что-то типа __NODL_);
    • — type — тип раздела. Указывает на содержимое раздела. Может принимать следующие значения:

    EXT4_IMG — раздел содержит часть файловой системы EXT4;
    NORMAL_ROM — раздел содержит сохраненный образ или отдельный файл;
    SV5_BL_BIN — раздел содержит «сырой код» (Raw Code), т.е. исполнимый код;

    • — linear_start_addr — начальный адрес размещения раздела в файле прошивки, байт;
    • — physical_start_addr — начальный адрес размещения раздела в памяти устройства (физический адрес), байт;
    • — partition_size — размер раздела, байт;
    • — region — размещение раздела. Может принимать следующие значения:

    EMMC_BOOT_1 —
    EMMC_USER —

    • — storage — HW_STORAGE_EMMC
    • — boundary_check — признак необходимости отметки границы раздела (во внутренней БД или PMT);
    • — is_reserved — признак необходимости резервного копирования;
    • — operation_type — тип операции. Может принимать следующие значения:

    BINREGION — область «сырого кода»;
    BOOTLOADERS — загрузчик;
    INVISIBLE — невидимый раздел;
    PROTECTED — защищенный раздел;
    RESERVED — зарезервирован;
    UPDATE — обновляемый раздел.

    • — reserve

    Пример полного scatter-файла второй версии, приведен в файле «Scatter_v2.txt».

    Работа со scatter file.
    Любой флешер использует scatter file только для ПОЛНОЙ разметки памяти.
    Если Вы прошиваете один или несколько разделов, то флешер размещение разделов берет из внутренней «базы данных» — файла PMT (Partitions Map Table). Он считывает значение смещения для раздела (физический адрес) и копирует,т.е. «прошивает» образ раздела в память, начиная с этого физического адреса.
    Т.к. scatter file содержит перечень и физические адреса размещения всех разделов памяти, то изменив его можно произвести переразметку этой памяти. Для этого необходимо изменить значения смещений необходимых разделов.
    Например, в разделе USRDATA располагаются данные программ пользователя: логи работы и ошибок, данные о рекордах игр и т.д. Поэтому этот раздел чаще других переполняется, что приводит к появлению сообщений вида «Память переполнена».
    В типовом scatter file он имеет смещение 0x34f80000 и размер 0x74f80000-0x34f80000=0х40000000(или 1073741824=1Гб). Увеличим его, например, на 256Мб(268435456). Тогда размер раздела станет 1073741824+268435456=1342177280(или 0х50000000 в hex). Т.е. мы добавили в раздел еще 0х10000000 байт. Тогда смещение следующего раздела передвинется на эту же величину:
    было — 0х74f80000
    стало — 0х84f80000
    Если сделать так со смещениями ВСЕХ последующих разделов, то они ВСЕ передвинутся и на эту величину увеличится ОБЩИЙ размер памяти, занимаемой прошивкой. А это недопустимо. Поэтому нужно уменьшить размер какого-либо последующего раздела. У нас это раздел пользователя (FAT).
    Изменить его размер мы не можем, т.к. он расположен до конца существующей памяти. Он просто автоматически укоротится.
    Казалось бы и все, но укорачивать разделы можно до определенного предела (до «нуля»). Поэтому, если смещение последнего раздела переходит верхнюю границу памяти, то придется откатывать назад все изменения или уменьшать размер «прибавки» раздела.

    Пример scatter-файла
    Scatter_v2.rar ( 1 КБ )

    Сообщение отредактировал vin2809 — 27.02.14, 15:26

    Источник

    Читайте также:  Погода yowindow для android
    Оцените статью