super.fex boot-resource.fex boot_package.fex boot0_sdcard.fex cardscript.fex cardtool.fex split_xxxx.fex fes1.fex 2. Назначение файлов в образе прошивки На приведенном ниже списке использован принцип "цветовой дифференциации штанов" (цветом выделены разные категории файлов). № Имя файла - размер Как используются файлы imagewty-образа прошивки Android Все файлы, содержащиеся в архиве прошивки Андроид, можно условно разделить на несколько категорий: 1. Файлы , которые представляют образы разделов (или частей разделов) карты памяти (или другого загрузочного носителя). Эти файлы при программировании ("прошивании") карты памяти записываются в соответствующие (иногда одноименные) разделы. К таким файлам относятся: Примечание. Размеры файлов boot.fex и recovery.fex совпадают с размерами одноименных разделов (по 32 Мбайт), поэтому эти файлы являются raw-копиями разделов. Размеры остальных файлов меньше размеров разделов, в которые они записываются. 2. Файлы , содержимое которых записывается в неразмеченную область карты по заданному смещению. К ним относятся: В устройствах со встроенной eMMC-памятью (ТВ-боксах) boot0_sdcard.fex используется аналогичным образом. Примечание 1. Файл boot0_nand.fex - загрузчик для загрузки из nand-памяти в имеющих её устройствах. В OpiZero2 и ТВ-боксах на H616 boot0_nand.fex вообще не используется . Примечание 2. Реальная таблица разделов, создаваемая на карте, отличается от файла sunxi_gpt.fex из образа. Фактически, она создается при программировании прошивальщиком PhoenixCard на основе файлов sunxi_mbr.fex и dlinfo.fex. Однако, как показала практика, наличие файла sunxi_gpt.fex в imagewty-образе всё же необходимо для нормальной работы PhoenixCard. Возможно, его присутствие свидетельствует о использовании GPT-таблицы, а не MBR, ну или это какой-то атавизм. Заметим, что содержащуюся в этих файлах информацию не удастся изменить непосредственно на устройстве с помощью инструментов, работающих с разделами (поскольку раздел отсутствует). Например, в режиме fastboot (командой fastboot flash PARTITION [FILENAME]), или с помощью PhoenixSuit в режиме выбора конкретного раздела. Это означает, в частности, что такими способами невозможно изменить дерево устройств DTB непосредственно на устройстве, т.к. оно хранится в пакете boot_package.fex. Возможно, это сделано для защиты от окирпичивания устройств с nand-памятью, не позволяя испортить оба вторичных загрузчика (eGON и U-Boot) некорректным использованием стандартных инструментов или в процессе OTA-обновления (актуально для ТВ-боксов) 3. Файлы , содержимое которых на карту не записывается, однако требуется для функционирования утилит PhoenixCard и PhoenixSuite: 4. Файлы , содержимое которых на карту не записывается и не требуется для функционирования утилиты PhoenixCard, однако могут использоваться другими служебными программами или как справочные (помещены в файл образа по принципу "всё свое ношу с собой") : 5. Файлы контрольных сумм Файлы с префиксом V размером 4 байта (т.е. кроме трех файлов Vbmeta) содержат контрольные суммы (32-разрядные числа) и генерируются утилитой FileAddSum.exe из одноименных файлов. Эти файлы могут быть использованы распаковщиком архива или утилитами-прошивальщиками для контроля целостности файлов, входящих в состав образа прошивки (например, при их пересылке по USB). Непосредственно в загрузочный носитель (на SD-карту) файлы контрольных сумм не записываются. Список файлов контрольных сумм: ВНИМАНИЕ ! При упаковке утилитой imgrepacker.exe файлов из папки IMG.DUMP в архив imagewty-образа контрольные суммы вычисляются заново, поэтому эти файлы обновляются в самой папке и такими попадают в архив образа. При этом время создания файла устанавливается равным моменту запуска упаковщика, а содержимое (4 байта КС) изменяется для модифицированных файлов. 6. Пустые файлы Можно предположить, что присутствие в imagewty-образе файлов с такими именами проверяется (или проверялось в предыдущих моделях и версиях) какими-то из служебных программ, которые не могут нормально работать при отсутствии этих файлов. Хотя в данном конкретном случае (OpiZero2) содержимое этих файлов, которое просто повторяет имя файла, не имет никакого значения. toc0.fex и toc1.fex - здесь это файлы-заглушки. Toc0 - это формат вторичного загрузчика как альтернатива формату eGON загрузчика Boot0. Этот формат используется в режиме безопасной загрузки в тех устройствах, у которых установлен бит безопасности, т.е. прошит однократно в eFUSE. Цитата из https://linux-sunxi.org/TOC0: Задача преобразования eGON.BT0 в TOC0 может быть делегирована интеллектуальному инструменту для прошивания. Например, sunxi-fel может проверить, установлен ли безопасный загрузочный бит в LCJS, и автоматически выполнить преобразование в формат TOC0 при прошивке SPI NOR . В качестве дополнительной меры безопасности также лучше, если инструмент может проверить, что устройство не заблокировано, чтобы принимать только определенный ключ. Сборка U-Boot может создавать образы в обоих форматах, но интеллектуальный инструмент для прошивания может взаимозаменяемо использовать любой из них, если преобразование является простым (таким образом устраняется возможная ошибка пользователя). Отметим, что в образе Android для устройстве OpiZero2, а также в прошивках большинства ТВ-боксов на H616 эти файлы toc0.fex и toc1.fex пустые, однако имеются ТВ-боксы (например, T95 и STUOTOP ST1 ), в проошивках которых оба эти файла используются по назначению: Кстати, это обстоятельство является причиной многих проблем для пользователей таких ТВ-боксах, возникающих при обновлении или замене прошивок. Временные файлы утилиты PhoenixCard
Для понимания смысла и предназначения файлов imagewty-образа посмотрим внимательно на работу PhoenixCard. Оказывается, что при запуске этой программы в момент выбора в её пользовательском интерфейсе конкретного файла образа прошивки происходят интересные вещи. А именно, в рабочей папке PhoenixCard создаются временные файлы, которые как-то используются самой программой в процессе записи карты, а по завершении работы удаляются. Вот список и происхождение этих временных файлов. Содержимое файла конфигурации config.cfg: [system] ver = 0x100 [usb] pid = 0x1234 vid = 0x1234 [card] main = 12345678 sub = 1234567890cardtl [script] main = 12345678 sub = 1234567890script [mbr] main = 12345678 sub = 1234567890___mbr [gpt] main = 12345678 sub = 1234567890___gpt [dlinfo] main = 12345678 sub = 1234567890dlinfo [Img File] path=E:/Android_v11.img В процессе изучения структуры образа прошивки была собрана некая информация по отдельным файлам, входящим в состав imagewty-образа, которая приведена по ссылкам ниже ( тут только некоторые, но далеко не все файлы образа). На самом деле, описание части из этих файлов может не иметь особого практического смысла (для целей создания raw-образа), какая-то информация опубликована здесь исключительно в познавательных целях. А также по принципу "не пропадать же добру", возможно, однажды где-то пригодится... Не исключено, что приведенная информация будет дополняться или корректироваться при дальнейшей работе над образом прошивки.
|