Делаем свою прошивку для HTC Diamond на примере кухни Bepe, модифицированной Mondy для Nataly 2.5 Rus

18.06.2009

Делаем свою прошивку на примере кухни Mondy для Nataly 2.5 Rus

Что представляет из себя файл прошивки (описание от Helge):

1. файл прошивки (файл с расширением .nbh) состоит из:
- заголовка,
- и файла содержащего ось (операционную систему) OS.NB

OS.NB в свою очередь состоит из:
- из заголовка
- OS.NB.payload (контейнера заполненного самой прошивкой)

В состав OS.NB.payload входят:
- xip.bin,
- imgfs.bin

XIP - это набор модулей составляющих ядро оси именно они делают всю основную работу. Когда видишь надпись "OC CE 5.2.20764 " - это и есть версия XIP.
Модули XIP-а деляться на две части, на модули общие для всех девайсов работающих на WM , и на так называемые девайсозависимые модули, то есть модули, работающие только с конкретной моделью. В кухне это соответственно пакеты MSXIPKernel и OEMXIPKernel

Еще в состав XIP-а входит загрузчик, сертификат, и еще кое что, но думаю, что если подробно про XIP, то это отдельная тема.

На разных моделях, девайсозависимые модули имеют разный размер, должны размещаться по разным адресам в памяти.
Портирование XIP-а заключаеться в том, чтобы отделить девайсозависимые модули, удалить их, на их место подставить свои, и согласовать адреса в памяти общих модулей со своими девайсозависимыми модулями.

2. Билд (build) и сборка, это одно и тоже, просто на раздных языках.
Ты уже видел, что кухня разбита на ОЕМ и SYS , так вот SYS - это грубо говоря и есть билд.

3. Билды разрабатывают в MS. К каждой новой прошивке, по заказу производителей, делаеться новый билд. По какому принципу они нумеруються, лучше спросить мелкомягких.

Как происходит загрузка устройства с WM (описание от Helge):
Давай посмотрим как ваще запускается девайс с WM.

Включаем девайс, однокилобайтный M-Systems IPL отображен в память по адресу 0, он стартует, делает минимум инициализации железа достаточный для загрузки SPL в RAM (иногда SPL называют EBOOT, бутлоадер и тп). SPL хранится в binary разделе DOC-чипа, IPL - вообще в отдельной области, которую лучше не трогать.

Далее SPL уже полностью инициализирует железо, проверяет надо ли войти в режим бутлоадера, и определяет какую из версий системы требуется загрузить (update loader или нормальную OS).

Update loader используется исключительно для установки обновлений ROM рекомендованным микрософтом способом (на уровне отдельных пакетов, а не всей прошивки, и почему-то этот режим НТС никогда не использовало).

Далее SPL распаковывает в RAM, по заданному разработчиками адресу, выбранную версию ядра, и прыгает туда. На этом моменте, кстати, мы теряем первые 4 мегабайта оперативки. Это нельзя называть XIP (eXecute-In-Place, хотя формат идентичен), тк исполнение происходит не in-place, а путем предварительной загрузки кода в RAM. Но это дает нам очевидный выигрыш в скорости.

Ну а далее уже процесс загрузки идет как обычно. NK грузит device.exe, filesys.exe и тп, инициализируется первая партия драйверов, в частности драйвер DOC, и уже из IMGFS подгружается основной реестр и остальная часть системы.

Так как на первой фазе используется другая копия реестра (boot.hv), и writeable копии реестра еще нету, то все хэндлы девайсов, проинициализированных на этой фазе остаются известны только ядру и в hklm\drivers\active не попадают.

Собственно, начинаем работать с кухней:

Качаем архив кухни: http://narod.ru/disk/9068767000/RU_B21051_NATALY_2.5.1_Kitchen.exe.html илиhttp://rapidshare.com/files/236504833/RU_B21051_NATALY_2.5.1_Kitchen.exe

Разархивируем в любую папку.
Структура каталогово такая:
_ADDS\
RU_KITCHEN\
TOOLSET\
UTILS\

Нас в первую очередь интересует папка RU_KITCHEN\ Заходим в нее:
EXT\
OEM\
ROM\
SYS\
TOOLS\
build_rom.bat
Cleanup.bat
DiamondCustomRUU.exe
oem2ext.exe

Видим папки и файлы.
1) В папке EXT находятся все пакеты (приложения), которые будут в прошивке

2) OEM содержит драйверы на прошиваемый девайс (HTC Diamond). Подходят только для брилианта.

3)Папка ROM состоит из:
XIP\
os.nb.payload
romhdr.bin

Последние два файла - заголовки для прошивки, а в XIP содержатся низкоуровневые программы.

4) Папка SYS содержит системные приложения Windows Mobile

5) Tools - сердце кухни. Состоит из распаковщика IMGFS и сборщика прошивки htcrt.exe

6) Скрипт build_rom.bat запускает процесс сборки прошивки

7) Скрипт Cleanup.bat - удаляет следы сборки и временные файлы

8) DiamondCustomRUU.exe - программа-прошивальщик

9) oem2ext.exe - на этот файл надо перетянуть папку OEM, если в ней лежат пакеты для "старой" кухни- и тогда они "перепрыгнут" в папку \EXT\Diamond, но уже в формате для "новой"=green>

Для особо нетерпеливых сделаем прошивку для которой и была написана сия кухня.
Запускаем build_rom.bat

На экране бушуют надписи в черных окошках, после чего взору предстает программа HTC ROM TOOL 1.1.4 c предложением что-нибудь нажать. Нажимаем "Build". Программа от нас еще чего-то хочет. Ага. Автоматически перешли на вторую вкладку. Выбираем устройство Diamond, надписи в окошечках ниже заполняются сами. Лучше не трогать :)
Справа под словом "Firmware content" (содержимое прошивки) в последнем пункте жмем на три точки и выбираем файл xxx.nb. Программа сразу предлагаем что-то сохранить - сохранить окончательный файл прошивки. Даем ему имя и жмем сохранить. Программа кое-что покажет и скажет ОК! Закрываем ее. Видим появление на свет нового файла - xxx.nbh - его-то мы и будем прошивать в телефон с помощью DiamondCustomRUU.exe. Дальше следуем так сказать инструкциям "мастера".

Если уже можем собирать прошивку, то можно для начала и пакет (программу) включить в прошивку. Для этого - качаем кабик (ххх.cab).

Дальше со слов ScorpionSPB и lucky3d:
"lucky3d" :" я пользую утилиту package-creator-v2.7 .. (если не найдешь напиши выложу).
в ней указываешь файл - получаешь на выходе пакет для прошивки. всё
=green>

в итоге ты получаешь в папке:
1. файлы из прошивки
2. rgu файл с реестром из твоего каба.
3. dsm файл - индетификатор файлов содержащихся в пакете. (В последней кухне от bepe они не нужны..я убиваю.. но можно и оставить)
3. файл initflashes.txt который описывает куда переместятся файлы после распаковки (по умолчанию они падают в Windows). если никуда - то его можно грохнуть. Файл должен быть в юникоде. Я пользуюсь утилитой InitFFBuilder.exe если надо править.
4. option.xml - содержит инфо о пакете используется в старой кухне от Bepe. (Я тоже грохаю)

вот и всё .. эту папку с пакетом кидай в OEM или SYS"

// Самому пока не очень понятно. Позже проделаю сам и постараюсь написать по-проще. И дополню, что куда копировать дальше.

Теперь - как разобрать прошивку :)

ВНИМАНИЕ:

Дополнение от ssergey
Сразу обратите внимание, что разобрать самодельную прошивку (например от mondi, aserg, korand) полноценно не возможно. И это не потому, что они такие злые волшебники, а просто суть кухни- при создании прошивки удаляются (точнее остаются в кухне, но не попадают в файл прошивки) ненужные уже больше файлы, которые содержат данные о пакетах- вот и при разборке все файлы распаковываются кучей.
Полноценно распаковать на пакеты можно только оф. прошивку от HTC
=green>

Видео-инструкция: http://www.bepe80.com/test/1/

Действия делать надо в проводнике Windows.

Качаем какую-нибудь прошивку RUU_signed.nbh. Данный файл состоит собственно из прошивки и заголовка прошивки.

Для извлечения прошивки потребуется утилита nbhtool.exe в папке \RU_B21051_NATALY_2.5.1_Kitchen\UTILS\. Копиреум ее в папку с прошивкой, запускаем.

Указывам путь к файлу nbh и жмем кнопку. Для любителей командной строки есть там же утилита nbhextact.exe

В итоге у нас есть файл ххх.nb

Этот файл перетаскиваем на файл Dump_800.bat в папке TOOLSET. Снова наслаждаемся диким количеством цифр и букв в черном окошке. Жмем любую клавишу и видим в папке с прошивкой появились файл ххх.nb.payload и папка IMGFS

В файле nb.payload содержится XIP - его будем извлевать:

Заходим в папку dump xip уровнем выше. И также наводим файл nb.payload на dumpxip.bat

Появилась папка XIP и файл romhdr.bin

Дальше из папки IMGFS будем делать пакеты программ:
Снова возвращаемся в папку TOOLSET и наводим взор на программу packagebuilder. Кроме взора на нее нужно навести папку IMGFS

Тут я остановился, т.к. никаких действий не происходит. Видимо это первое несоответствие видео и кухни.

Кажется я начал понимать: больше из папки IMGFS выжать ничего не получится.

Формат папки такой:
к примеру: папка acmdwrap.dll\ состоит из:

acmdwrap.dll
imageinfo.txt
S000
S001
S002
S003
imageinfo.bin

В кухне от Mondy похожая структура наблюдается в папке KITCHEN\SYS\OS.

 
Нажав на соответствующий значок, Вы можете добавить эту заметку к себе на страничку в социальной сети
 

Если же вы хотите первыми узнавать о выходе моих новых статей, то можете заполнить следующую форму, вписав туда адрес своего электронного ящика:

 

 

© 2016 Дневник хорошего человека
Рейтинг@Mail.ru