DIR 620: сборка прошивки, проблемы с

Post new topic   Reply to topic    DD-WRT Forum Index -> Оборудование на основе Ralink
Author Message
Livich
DD-WRT Novice


Joined: 06 Jun 2012
Posts: 4

PostPosted: Wed Jun 06, 2012 14:07    Post subject: DIR 620: сборка прошивки, проблемы с Reply with quote
Собираю прошивку для DLink DIR-620 из публичных исходников (много было сказано про кривость родной).

Сама сборка проходит на ура, в результате получаю image.bin и <версия>.fwz. Последний файл роутер не воспринимает (пишет, что ему чего-то в sbin не хватает), а вот image.bin через веб-интерфейс прошивает нормально.

Но после её запуска падает демон resident, который как я понимаю читает конфиги из JSON. Исходников демона нету. Логи роутера считанные по UART приложил. Вот из них выжимка с ключевым моментом падения:
Quote:
starting pid 676, tty '': '/etc/init.d/rcS'
[17179570.348000] Algorithmics/MIPS FPU Emulator v1.5
Loading settings ...
2047+0 records in
2047+0 records out
Cannot load config. Use default.
/bin/resident starting...
Readind config from flash...
cp /etc/default/config.json /tmp/config.json
/bin/resident: can't resolve symbol 'ftok'
Resident is dead!!! Try reboot device.

При нормальной работе логов значительно больше и выглядят они иначе, если коротко то примерно так:
Quote:
D-link init started
[17179570.584000] tun: Universal TUN/TAP device driver, 1.6
[17179570.588000] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
[17179571.076000] NTFS driver 2.1.28 [Flags: R/W MODULE].
[17179571.156000] fuse init (API version 7.Cool
/bin/resident starting...
GDE NAX LOG???? debug_log = (nil)
Readind config from flash...
load section
result read config from flash is 0
Config is valid json


Собственно, прошу помощи со сборкой оригинальной прошивки из исходников (знаю, не dd-wrt профиль, но на сайте dlink помощи точно можно не ждать).
Sponsor
rusink
DD-WRT User


Joined: 24 Aug 2011
Posts: 185

PostPosted: Wed Jun 06, 2012 20:40    Post subject: Re: DIR 620: сборка прошивки, проблемы Reply with quote
Livich wrote:
Собираю прошивку для DLink DIR-620 из публичных исходников (много было сказано про кривость родной).

Собственно, прошу помощи со сборкой оригинальной прошивки из исходников (знаю, не dd-wrt профиль, но на сайте dlink помощи точно можно не ждать).


1. Заходите на dir620.ipb.su
2. Прошиваетесь из веб-интерфейса какой прошивки? 1.3.0/3? Другие биновские сборки не принимают.
3. *.fwz - это просто упаковка прошивки прошивки в tar.gz *.bin должна быть идентична тому, что в находится в "разобранном" виде в .fwz.
4. Попробуйте для начала разобрать *.fwz и разрезать *.bin на Kernel и RootFS полученные результаты сравнить .
Livich
DD-WRT Novice


Joined: 06 Jun 2012
Posts: 4

PostPosted: Thu Jun 07, 2012 0:26    Post subject: Reply with quote
Прошиваю из 1.3.3. Впрочем, по tftp такая же лажа, хорошо что uboot не накрылся.
Я распаковывал fwz, сравнивал размеры(фирменной и своей прошивок одинаковых версий): они почти совпадают, но не один-в-один.
Попробовал заменить resident более новым, исходники же не от последней прошивки - ноль эффекта.
Судя по логам из UART, ядро нормально собралось. rootfs тоже. Есть подозрение что с сорцами намудрили ещё в длинке Sad

ЗЫ: а не подскажите как разрезать bin?
rusink
DD-WRT User


Joined: 24 Aug 2011
Posts: 185

PostPosted: Thu Jun 07, 2012 12:24    Post subject: Reply with quote
Livich wrote:
Есть подозрение что с сорцами намудрили ещё в длинке Sad

ЗЫ: а не подскажите как разрезать bin?


С помощью dd:

Code:
dd if=DIR_620_1.3.0.bin  of=Kernel bs=65536 count=15
dd if=DIR_620_1.3.0.bin  of=RootFS bs=65536 skip=15



DIR_620_1.3.0.bin замените на название вашего bin-файла

Можно распаковать и посмотреть, что получилось

Code:
./unsquashfs -dest unpacked RootFS



unsquashfs соберите из исходников DIR620



P.S. А как вы вообще пытаетесь прошить *.fwz из веб-интерфейса 1.3.3 ?! Эта прошивка не принимает *.fwz !!!

P.P.S. Не было ли ошибок при сборке fakeroot?
Livich
DD-WRT Novice


Joined: 06 Jun 2012
Posts: 4

PostPosted: Thu Jun 07, 2012 18:47    Post subject: Reply with quote
Rusink, интересно получается: rootfs из bin файла после разрезания имеет действительно иной размер... по-порядку, размеры kernel+rootfs: из fwz 917504+2195456=3 112 960, из bin:
983040+2129920=3 112 960
bin резал Вашим скриптом, а вот команда распаковки rootfs сказала "can't find a squashfs superblock" и распаковывать конечно ничего не стала, ведь superblock'ом там действительно в нужном месте не пахнет.
Думаю, тулчейн неправильно сделал выравнивание в bin( там же просто склеены два файла определенных размеров,)? Это можно исправить?

Хм, только что попробовал подсунуть правильный, по моему мнению, файл rootfs из заводской прошивки, там заголовок на месте, но он почему-то не распаковался с той же ошибкой...

ps: я не прошиваю fwz, только bin, я просто заметил что раньше работало с fwz, не знал что теперь только bin. fakeroot собрался нормально, а на "make install" из его директории ответил что успешно установился.
rusink
DD-WRT User


Joined: 24 Aug 2011
Posts: 185

PostPosted: Thu Jun 07, 2012 19:15    Post subject: Reply with quote
Livich wrote:
Rusink, интересно получается: rootfs из bin файла после разрезания имеет действительно иной размер... по-порядку, размеры kernel+rootfs: из fwz 917504+2195456=3 112 960, из bin:
983040+2129920=3 112 960
bin резал Вашим скриптом, а вот команда распаковки rootfs сказала "can't find a squashfs superblock" и распаковывать конечно ничего не стала, ведь superblock'ом там действительно в нужном месте не пахнет.
Думаю, тулчейн неправильно сделал выравнивание в bin( там же просто склеены два файла определенных размеров,)? Это можно исправить?

Не - это похоже мой косячок - разбирал прошивку 1.3.0, а там, ЕМНИП, отличается размер ядра. Smile

Попробуем подсчитать: 917504/65536=14

Меняем количество блоков в команде:
dd if=image.bin of=Kernel bs=65536 count=14
dd if=image.bin of=RootFS bs=65536 skip=14

Лучше посмотреть hex-редактором есть ли сигнатура shsq в начале RootFS
Livich
DD-WRT Novice


Joined: 06 Jun 2012
Posts: 4

PostPosted: Thu Jun 07, 2012 19:44    Post subject: Reply with quote
Вы не ошиблись. мы забыли про kernel part size в makefile. начиная с 1.3.3 размер ядра похоже перевалил за 65536*14=917 504=0xE0000 и они изменили размер kernel part size до 0хf0000, теперь надо на 15 умножать и заголовки на месте, хотя распаковывать так и не распаковывает rootfs.

Размеры же не совпадают, но файлы отличаются только на нули в конце. Попробую прошить с измененным kernel part size...
ps: прошил. та же история...
rusink
DD-WRT User


Joined: 24 Aug 2011
Posts: 185

PostPosted: Fri Jun 08, 2012 5:02    Post subject: Reply with quote
Livich wrote:
Вы не ошиблись. мы забыли про kernel part size в makefile. начиная с 1.3.3 размер ядра похоже перевалил за 65536*14=917 504=0xE0000 и они изменили размер kernel part size до 0хf0000, теперь надо на 15 умножать и заголовки на месте, хотя распаковывать так и не распаковывает rootfs.

Размеры же не совпадают, но файлы отличаются только на нули в конце. Попробую прошить с измененным kernel part size...
ps: прошил. та же история...


Я не ошибся - я забыл исправить под прошивку 1.2.***, поскольку использовал этот фрагмент скрипта для 1.3.3 Smile.
Вообще, если неизвестен размер ядра - прошивку можно разрезать на части вручную hex'ом.

Каким unsquashfs вы пытаетесь распаковать RootFS? Там нестандартный заголовок и распаковывает только unsquashfs пропатченный под эту прошивку. По умолчанию в hosttools собирается только mksquashfs. Правило сборки unsquashfs отсутствует Smile Поэтому и спрашиваю.

Количество нулей в конце - это дописывается утилитой dd при склеивании, чтобы размер был кратен 10000h/ Правило прописано в makefile - опция - conv=sync
[Green]
DD-WRT Novice


Joined: 29 Jun 2012
Posts: 1

PostPosted: Fri Jun 29, 2012 19:56    Post subject: Re: DIR 620: сборка прошивки, проблемы Reply with quote
rusink wrote:

4. Попробуйте для начала разобрать *.fwz и разрезать *.bin на Kernel и RootFS полученные результаты сравнить .


ЗАЧЕМ??? Куски будут разные!!!

resident, тот, который в архиве - проприетарное ПО, слинкованное со сторонней библиотекой, которой нет в архиве. Собрать прошивку с работающим resident - неполучится. Вот так.

resident - не только читает джонсон, содержит в себе что-то вроде микрокода для запуска всего оборудования

/bin/resident: can't resolve symbol 'ftok' - это значит, что ядро роутера "не знает" команду ftok, которая содержится в бинарнике.

Исходник недадут, вот кусок общения с саппортом:

Alex Green
28.12.11

кому: Vasiliev
В таком случае прошу выслать мне исходник бинарника
GPL_DIR_620NRU_1.2.102.tar.bz2/targets/fs.src/bin/resident
Спасибо



Vasiliev Sergey
28.12.11
кому: мне

Здравствуйте.

Мы не обязаны предоставлять исходники закрытых компонентов.
------------------

Т.е. прошивка изначально нерабочая
_Sandra_
DD-WRT Novice


Joined: 26 Jul 2012
Posts: 1

PostPosted: Thu Jul 26, 2012 12:02    Post subject: Reply with quote
Появились новые исходники. Кто смотрел, собирал?
Display posts from previous:    Page 1 of 1
Post new topic   Reply to topic    DD-WRT Forum Index -> Оборудование на основе Ralink All times are GMT

Navigation

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum