Модификация прошивок (краткое руководство)

Модификация прошивок (краткое руководство)

Postby Sekator500 » 05 Dec 2010, 15:42

Небольшое руководство как один из вариантов сборки разборки и адаптации прошивок. Данный метод предусматривает использование виртуальной машины, это удобно и быстро (хотя если уже есть линукс разумеется виртуалка не нужна)

Так же желательно иметь консольный кабель - это единственный способ отследить ошибки и проблемы при перепрошивке на самосборные (и не только) прошивки.


Ставим виртуальную систему и налаживаем простой обмен файлов

И так качаем и ставим VirtualBox http://www.virtualbox.org/
Далее устанавливаем туда линукс, можно взять любой дистрибутив который нравится, мой выбор пал на Mandriva 2010 в частности ftp://ftp.linux.kiev.ua/pub/Linux/Mandr ... 0-i586.iso При установке выделаем памяти 512-1024мб если есть столько разумеется, и размер диска в раене 10гиг можно и больше примерно пополам что в рут систему что в пользовательскую. Место понадобится и поскольку менять размер виртульной системы проблематично лучше заранее выделить побольше тем более что образ расширяется динамически.

После того как все установится можно использовать как графический интерфейс линукс так и консоль кому что ближе я лично использую конcоль поэтому при вводе логина жмем ctrl+alt и f1 попадаем в консоль и логинимся лучше все делать под пользователем root ибо нам неважно что мы тут натворим а развязанные руки будут очень кстати.

Первое что нужно сделать так это наладить какой-то обмен файлов между виртуалкой и реальной системой способов уйма мы же рассмотрим самый простой с учетом что основная система у нас виндовс. Делаем какую-нибудь папку в виндовсе скажем c:\incoming и шарим ее с полными правами. Далее в линуксе создаем папку например share команда mkdir /share и соединяем их командой mount -t cifs //192.168.56.1/incoming /share -o user=nick Где пользователь nick (естесвтено меняем на свой логин в виндовсе) и IP адрес 192.168.56.1 это адрес виртуального адаптера (по умолчанию он таким и будет)

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


Необходимые утилиты для сборки/разборки
Разархивируем все и копируем в /usr/bin предварительно положив этот файл в incoming командами:
Code: Select all
cp /share/tools.tar ./
tar xf tools.tar
rm -f tools.tar
mv mksquashfs mkyaffs2image unsquashfs unyaffs /usr/bin

tools.tar
(162 KiB) Downloaded 3666 times


Работаем с прошивкой

Разборка
Копируем install.img в папку incoming далее в линуксе создаем рабочую папку где захочется хоть в корне хоть в домашних директориях зависит от того где оно нам надо или даже где осталось больше свободного места посмотреть это можно командой df -m в примере рассмотрим вариант с папкой asus созданной в корне. Переходим в нашу папку cd /asus и выполняем следующие команды:
Code: Select all
cp /share/install.img ./
tar xf install.img
rm -f install.img

Получим разобранный образ, теперь извлекаем корневую систему она находится в папке package2 (конечно папка может называться как угодно, но как правило она там всего одна детально смотрите файл configuration.xml) имя файла по умолчанию squashfs1.img или yaffs2_1.img в зависимости от файловой системы. Переходим в папку package2 cd package2 и выполняем следующие команды:

Если у нас файловая система squashfs
Code: Select all
unsquashfs squashfs1.img
rm -f squashfs1.img

Получим папку squashfs-root

Если yaffs2 (учтите что в отличии от squashfs при разпакове дополнительная директория не создается и все валится туда где лежит образ поэтому лучше создать дополнительную папку например fs переметить туда образ и распаковать там)
Code: Select all
mkdir fs
mv yaffs2_1.img fs
cd fs
unyaffs yaffs2_1.img
rm -f yaffs2_1.img


Для удобства просмотра файлов можно использовать midnight commander команда mc


Сборка
Здесь тоже ничего сложного, для начала пакуем папку usr/local/etc корневой системы образа если конечно мы вносили туда какие-то изменения. Для этого переходим туда если squash cd /asus/package2/squashfs-root/usr/local/etc если yaffs2 cd /asus/package2/fs/usr/local/etc и пакуем это все командой tar cjf usr.local.etc.tar.bz2 * После чего перемещаем полученный файл usr.local.etc.tar.bz2 в папку package2 c заменой, командой mv или через файл менеджер mc как вам удобнее. (Этот файл может быть как формата bz2 так yaffs2 все зависит от прошивки, опять же смотрите конфигурацию)

Собираем корень, возвращаемся в папку package2 cd /asus/package2 и выполняем следующие:

Если пакуем squash тогда:
Code: Select all
mksquashfs squashfs-root squashfs1.img
rm -rf squashfs-root


Если yaffs2:
Code: Select all
mkyaffs2image fs yaffs2_1.img
rm -rf fs


Возвращаемся в корень распакованного образа cd /asus правим configuration.xml если требуется (например вы хотите поменять размер файловой системы /usr/local/etc или скажем поменять корневую файловую систему с одного типа на другой) и пакуем образ обратно с перемещением его в виндовс командами:
Code: Select all
tar cf install.img *
mv install.img /share





Адаптация
К примеру бут код вашего плеера не поддерживает сжатую систему squashfs тогда у нас есть как минимум два варианта либо перепаковать в yaffs2 и урезать место под usr/local/etc или создать полусжатую систему (упаковав часть системы в squash и основной корень в yaffs2) о ней и пойдет речь, собственно идея проста основной объем занимаемого места находится в папке usr/local/bin ее и пакуем скажем в bin.img с помощью mksquashfs далее удаляем все содержимое папки bin и проделываем все те махинации выше что я описывал с небольшими изменениями в usr/local/etc/rcS файле а именно нам необходимо добавить одну строчку куда-нибудь в самое начало:
Code: Select all
busybox mount -o loop,ro -t squashfs /usr/local/bin.img  /usr/local/bin


Вот и весь фокус, перед тем как паковать все в файле configuration.xml нам нужно будет поменять вот это:
Code: Select all
            <image type="squash">
                <fileName>package2/squashfs1.img</fileName>
                <mountPoint>/</mountPoint>
            </image>


На это:
Code: Select all
            <image type="yaffs2">
                <fileName>package2/yaffs2_1.img</fileName>
                <mountPoint>/</mountPoint>
            </image>





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



###################
Вот небольшой пример использования вышеизложенного (конверсия с одной FS в другую, использование полусжатой FS, интеграция эмулятора RC) тут конечно присутствует и небольшой хак dvdplayer'a типа защита но это мелочи. Данный пример адаптирует прошивку sdk4 от iconbit v1.8 для apacer al460

В архиве присутствуют утилиты для распаковки FS под виндовс, для того чтобы было максимально понятно и прозрачно что я сделал скачайте и установите examdiffpro, разархивируйте все образы включая файловые системы в две разных папки и потом сравните их. Программа очень удобная все вам расскажет и покажет, но перед сравнением зайдите в настройки раздел Dir Comparsion и снимите галочку если стоит с Consider files with different timestamps different

http://www.multiupload.com/Z8U30ULITF

ps: актуальная инструкция (используем инструменты FarVoice)
Last edited by Sekator500 on 08 Dec 2010, 00:53, edited 1 time in total.
User avatar
Sekator500
 
Posts: 457
Joined: 11 Nov 2010, 00:13
Location: Киев

Re: Модификация прошивок (краткое руководство)

Postby FarVoice » 05 Dec 2010, 18:26

Решил вынести всё своё в начало темы.
Свёл в единый скрипт все варианты разборок - сборок.
Понимает 1xx3, 1xx5, 1186 прошивки, встроено шифрование для Сигейтов и Асусов.

Code: Select all
Manage realtek 1xx3 1xx5 1186 FW image file 2014/11/15 by FarVoice

Usage:

img unpack|extract|x [<image_file_name> [<path_to_image_folder>]]
   defaults:
   image_file_name - install.img
   path_to_image_folder - install_img

   if image_file_name is zip file,
   defaults:
   path_to_image_folder - <image_file_name without .zip>

img pack|make|c [<path_to_image_folder> [<zip_file_name>]]
   defaults:
   path_to_image_folder - install_img
   zip_file_name - <path to image folder>


UPD Поправил свой скрипт для разборки-сборки прошивок.
+ добавил ключ от mede8er x3d
+ сделал проверку валидности ключей
! исправил алгоритм шифрования для бинарников

Скачать http://www.moservices.org/files/img_tools.tar.bz2

Выкладываю свой утиль для распаковки прошивок под виндами. Распаковать архив в директорию, прописанную в PATH

В папку кладёте install.img и в ней запускаете unimg.bat

Там же есть удобный утиль для преобразования упакованной графики в BMP и назад от LossLess
(читать "Некоторые размышления о кодированной графике" ).

Скачать http://www.moservices.org/files/img_tools_win.zip (1,9 МБайт)

Маленький скрипт для выдирания дров и ядра из образа mtdblock/0 ( 0.bin )

Делаем копию mtdblock/0 в плеере
Code: Select all
dd if=/dev/mtdblock/0 of=/mnt/usbmounts/sda1/0.bin

Кладём получившийся файл 0.bin и скрипт в одну директорию в линухе (Я пользую LinuxMint12 )
запускаем скрипт. По окончании работы в этой же директории будут лежать файлы
Code: Select all
vmlinux.develop.avhdd.mars.nand.bin
bluecore.audio
video_firmware.bin
В случае 1185 чипсета файл vmlinux.develop.avhdd.mars.nand.bin надо переименовать в vmlinux.develop.avhdd.jupiter.nand.bin

в принципе, этот скрипт можно переписать так, чтобы он работал на плеере напрямую с mtdblock/0 и писал на подключенную флешку, но мне так было удобнее.
Скачать http://www.moservices.org/files/debin.tar.bz2 (564 байт)
ASUS O!Play R1 (amp_r12_vrtn), xTreamer Pro (amp_r12_vrt), xTreamer Prodigy (iNeXT 2.14 r2), IconBIT HDR12L (amp_r12_vrt), 3Q F425HW (xds42gl_7725_r3), MyGica A11 (mygica_m3_20121222)
User avatar
FarVoice
Администратор
 
Posts: 8572
Joined: 03 Sep 2010, 01:27
Location: Russia, Moscow

Re: Модификация прошивок (краткое руководство)

Postby adslayer » 05 Dec 2010, 23:29

В принципе можно ведь пользовать и самого зверька для этих целей?
Только optware установить...
ASUS O!Play R1 amp_r12_icon
adslayer
 
Posts: 219
Joined: 07 Nov 2010, 16:31

Re: Модификация прошивок (краткое руководство)

Postby Lossless » 06 Dec 2010, 08:45

Sekator500 wrote:...можно взять любой дистрибутив который нравится, мой выбор пал на Mandriva 2010...

Реалтек в сопроводительной документации к сдыку рекомендует использовать Fedora 5. Но поскольку такая древность и работать будет криво во в всех отношениях под виртуалкой - сойдет любой красношапочный (RedHat-based) линь. Кстати, в результате всех моих экспериментов, только при сборке в Федоре собранные самостоятельно библиотеки были байт-в-байт с теми, что лежат в прошивке
Xtreamer Prodigy (X3D_4.00_r0)
User avatar
Lossless
 
Posts: 358
Joined: 20 Oct 2010, 11:12
Location: Russia

Re: Модификация прошивок (краткое руководство)

Postby Sekator500 » 06 Dec 2010, 13:21

Lossless wrote:
Sekator500 wrote:...можно взять любой дистрибутив который нравится, мой выбор пал на Mandriva 2010...

Реалтек в сопроводительной документации к сдыку рекомендует использовать Fedora 5. Но поскольку такая древность и работать будет криво во в всех отношениях под виртуалкой - сойдет любой красношапочный (RedHat-based) линь. Кстати, в результате всех моих экспериментов, только при сборке в Федоре собранные самостоятельно библиотеки были байт-в-байт с теми, что лежат в прошивке


Надо будет попробовать, а то свою уже загадил до 15гиг пора чистить :D
User avatar
Sekator500
 
Posts: 457
Joined: 11 Nov 2010, 00:13
Location: Киев

Re: Модификация прошивок (краткое руководство)

Postby Virtual » 06 Dec 2010, 18:59

с последним федором (14) номер не прошел,так -же как и с убунтой, ибо имхо в компиляторе добавляется доп параметр- по дефолту.... тоесть библиотеки байт-в-байт не собираются. :(., так что опять имхо, придется править Makefile
марсы: HDS7 (смотрелка AMP скин vrt )
HDR12 AMP (обычно сервер с RAM 256 и 2 SATA диска 2T+)//но очень иногда оцифровка видео
XTR PRO(AMP, HTTP(S) NFS SMB FTP сервер +trans2.90 + 2 SATA диска 2T+
сатурны: XTR Prodigy, R6S(512Mb_NAND), HD900A(_MD*) прошивка
User avatar
Virtual
 
Posts: 6862
Joined: 01 Oct 2010, 17:17
Location: RU

Re: Модификация прошивок (краткое руководство)

Postby Sekator500 » 06 Dec 2010, 19:41

Virtual wrote:с последним федором (14) номер не прошел,так -же как и с убунтой, ибо имхо в компиляторе добавляется доп параметр- по дефолту.... тоесть библиотеки байт-в-байт не собираются. :(., так что опять имхо, придется править Makefile


Кстати поставил только что 14 и попробовал скомпилить свою прогу, байт в байт хотя собственно чему удивляться используются те же бинарники, а делать свой toolchain смысл ? сейчас пользуюсь тем что идет с последним SDK для asus HD2.
User avatar
Sekator500
 
Posts: 457
Joined: 11 Nov 2010, 00:13
Location: Киев

Re: Модификация прошивок (краткое руководство)

Postby yareg » 07 Dec 2010, 03:01

Так и графику в прошивке можно заменить? Хотел бы нарисовать свой собственный дизайн, а то асусовский уж больно убог.
yareg
 
Posts: 6
Joined: 17 Nov 2010, 05:30

Re: Модификация прошивок (краткое руководство)

Postby Olegin » 07 Dec 2010, 08:41

Графические файлы с оформлением меню находятся тут: /usr/local/bin/Resource , но они закодированы. Как раскодировать и закодировать снова, после редактирования, читаем тут.
Asus O!Play R1 (amp, vrt), xTreamer Pro (amp, vrt), Iconbit 7L(amp, vrt), Iconbit 12L(amp, vrt/12l), Iconbit 1003(3Dgui)
Olegin
 
Posts: 1243
Joined: 04 Sep 2010, 20:13
Location: Ufa, Russia

Re: Модификация прошивок (краткое руководство)

Postby dr0n » 07 Dec 2010, 17:53

Sekator500 wrote:Небольшое руководство как один из вариантов сборки разборки и адаптации прошивок. ...
... незабываем так же при необходимости встраивать эмулятор пульта...

А можно про пульт подробнее, у меня (как писал в других темах) китайский плеер, прошивки на него ставятся только двумя способами через обновление (через родную прошивку, в данном случае есть шанс, что настройки сети останутся без изменений и имеется возможность работы с плеером через телнет и фтп), либо через консоль командой erase -m во втором случае плеер, загружается прошивка с USB флешки, после ребута, но сетенги все стерты, и не имея рабочего пульта не могу настроить плеер для работы по телнет (не могу назначить ip адрес).
Поэтому модификация прошивки, конкретно эмулятор пульта, очень для меня актуальна.
Заранее ОГРОМНОЕ СПАСИБО, за Ваши труды :)
плеер китаец Z8 без прошивки
плеер китаец M6 amp_r9_hd2
роутер Asus RT-N66U
dr0n
 
Posts: 11
Joined: 19 Nov 2010, 19:16

Next

Return to Разработка

Who is online

Users browsing this forum: No registered users and 16 guests