Powered by Invision Power Board


Страницы: (14) [1] 2 3 ... Последняя »  ( Перейти к первому непрочитанному сообщению ) ОтветитьНовая темаСоздать опрос

> Модкит для Keenetic, разборка прошивки Keenetic
IvyGel
Отправлено: Окт 12 2011, 16:38
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 178
Пользователь №: 19
Регистрация: 12-Октября 11
Статус: Offline

Репутация: 3



Уважаемый deadc0de публиковал на форуме DD-WRT свой модкит для Keenetic.

Мне очень пригодился этот модкит для пересборки прошивки, когда я обнаружил, что в прошивке Кинетика в процессе исполнения setup-target.sh монтируется раздел /storage:

ls /dev/mtdblock/6 >/dev/null 2>&1 && mount -t jffs2 /dev/mtdblock/6 /storage >/dev/null 2>&1 || format_jffs

Этот раздел объемом 2 мегабайта доступен для записи, но штатно используется под экзотические цели - http://forum.zyxmon.org/post2473.html#p2473

По сути, единственный способ сделать что-то полезное с этим разделом - пересобрать прошивку от deadc0de с добавлением вызова какого-нибудь исполняемого скрипта по аналогии с ext_init.sh

На всякий случай перепубликую тут: http://depositfiles.com/ru/files/oww6rkogk распаковывает (unpack.sh) или упаковывает (pack.sh) прошивки Keenetic, скачанный архив содержит бинарные исполняемые файлы для 64-разрядных ОС.

Пользователи 32-разрядных ОС могут собрать firmware_mod_kit (svn export http://firmware-mod-kit.googlecode.com/svn/trunk/ fmk && cd fmk/trunk/src && make) и keeneticfix из исходника. Или скачать готовые бинарники с http://depositfiles.com/files/zim9jgxs0.
[Показать/Скрыть]
Код
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <string.h>

#define szbuf 32768

u_int32_t crc_tab[256];

const char header[] = {
0x5a, 0x4e, 0x42, 0x47, 0x15, 0x42, 0x00, 0x00, 0x5a, 0x79, 0x58, 0x45, 0x4c, 0x20, 0x4b, 0x45,
0x45, 0x4e, 0x45, 0x54, 0x49, 0x43, 0x2d, 0x56, 0x31, 0x2e, 0x30, 0x30, 0x5b, 0x42, 0x46, 0x57,
0x2e, 0x33, 0x5d, 0x44, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

u_int32_t chksum_crc32 (FILE *f)
{
  register unsigned long crc;
  unsigned long i, j;
  char *buffer = malloc(szbuf);
  char *buf;

  crc = 0xFFFFFFFF;
  while (!feof(f)) {
j = fread(buffer, 1, szbuf, f);
buf = buffer;
for (i = 0; i < j; i++) {
  crc = ((crc >> 8) & 0x00FFFFFF) ^ crc_tab[(crc ^ *buf++) & 0xFF];
  }
}
  free(buffer);
 return crc;
}

void chksum_crc32gentab ()
{
  unsigned long crc, poly;
  int i, j;

  poly = 0xEDB88320L;
  for (i = 0; i < 256; i++)
  {
 crc = i;
 for (j = 8; j > 0; j--)
 {
if (crc & 1)
{
  crc = (crc >> 1) ^ poly;
}
else
{
  crc >>= 1;
}
 }
 crc_tab[i] = crc;
  }
}


int main(int argc, char *argv[]) {
 FILE *f;
 unsigned int crc32;
 unsigned int fsize;
 unsigned int bufsz;
 char *buf;

 if (argc < 1)
return 1;
 else {
chksum_crc32gentab();
f = fopen(argv[1], "r+");
if (f != NULL) {
 fseek(f, 0, SEEK_END);
 fsize = ftell(f);
 if (fsize > 0x04c0000)
  return 1;
 bufsz = 0x04c0000 - fsize;
 buf = malloc(bufsz);
 memset(buf, 0, bufsz);
 fwrite(buf, bufsz, 1, f);
 free(buf);
 fseek(f, 0, SEEK_SET);
 crc32 = chksum_crc32(f);
 fwrite(&header[0], sizeof(header), 1, f);
 fwrite(&crc32, 4, 1, f);
 fclose(f);
 }
}
 return 0;
}
PMEmail Poster
Top
IvyGel
Отправлено: Окт 13 2011, 17:45
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 178
Пользователь №: 19
Регистрация: 12-Октября 11
Статус: Offline

Репутация: 3



Обновил первый пост ссылкой на keeneticmodkit32.tar.gz.
PMEmail Poster
Top
IvyGel
Отправлено: Окт 21 2011, 18:31
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 178
Пользователь №: 19
Регистрация: 12-Октября 11
Статус: Offline

Репутация: 3



Кто-нибудь пробовал использовать модкит с прошивками BFW.4b (бета-версиями)? Если я правильно понял новый раздел о формате прошивок, то все должно работать. Только в скрипте unpack.sh изменить одну строчку до более общего вида имени файла.
PMEmail Poster
Top
qwerty133
Отправлено: Окт 22 2011, 20:31
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 32
Пользователь №: 21
Регистрация: 15-Октября 11
Статус: Offline

Репутация: нет



Попробывал 32-х битную версию натравить на Firmware-KEENETIC-V1.00[BFW.4b]D0_TR193_1110211203.bin, unsquashfs-lzma вылетает с Segmentation fault.
Какая версия squashfs? Переробывал все из svn fmk и нифига.
PMEmail Poster
Top
IvyGel
Отправлено: Окт 22 2011, 23:41
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 178
Пользователь №: 19
Регистрация: 12-Октября 11
Статус: Offline

Репутация: 3



Цитата (qwerty133 @ Окт 22 2011, 20:31)
Попробывал 32-х битную версию натравить на Firmware-KEENETIC-V1.00[BFW.4b]D0_TR193_1110211203.bin, unsquashfs-lzma вылетает с Segmentation fault.
Какая версия squashfs? Переробывал все из svn fmk и нифига.

Подтверждаю, вылетает. Проблема в том, что размер области "SquashFS" в файле прошивки увеличился по сравнению с V1.00[BFW.3]D0.

Для распаковки KEENETIC-V1.00[BFW.4b]D0_TR193_1110211203.bin нужно в unpack.sh заменить "count=57" на "count=59".

unsquashfs-lzma в моем архиве рабочий, взят из fmk/trunk/src/squashfs-3.0
PMEmail Poster
Top
qwerty133
Отправлено: Окт 23 2011, 02:14
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 32
Пользователь №: 21
Регистрация: 15-Октября 11
Статус: Offline

Репутация: нет



Спасибо.
PMEmail Poster
Top
qwerty133
Отправлено: Окт 23 2011, 14:56
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 32
Пользователь №: 21
Регистрация: 15-Октября 11
Статус: Offline

Репутация: нет



Если кому интересно, вроде добавил запуск скриптов из /storage: init.sh, ppp-up.sh, ppp-down.sh. Но вот самого роутера теперь нет под рукой чтоб проверить unsure.gif . Думаю, можно будет заменить jffs2 на простой tar.gz если понадобиться ещё больше места в /storage.
http://slil.ru/31918176
PMEmail Poster
Top
IvyGel
Отправлено: Окт 27 2011, 08:49
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 178
Пользователь №: 19
Регистрация: 12-Октября 11
Статус: Offline

Репутация: 3



Обновил первый пост ссылкой на объяснение, для чего раздел /storage задуман разработчиками в Кинетике .
PMEmail Poster
Top
Rusink
Отправлено: Ноя 3 2011, 21:38
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 627
Пользователь №: 56
Регистрация: 3-Ноября 11
Статус: Offline

Репутация: 13



Цитата (IvyGel @ Окт 22 2011, 23:41)
Цитата (qwerty133 @ Окт 22 2011, 20:31)
Попробывал 32-х битную версию натравить на Firmware-KEENETIC-V1.00[BFW.4b]D0_TR193_1110211203.bin, unsquashfs-lzma вылетает с Segmentation fault.
Какая версия squashfs? Переробывал все из svn fmk и нифига.

Подтверждаю, вылетает. Проблема в том, что размер области "SquashFS" в файле прошивки увеличился по сравнению с V1.00[BFW.3]D0.

Для распаковки KEENETIC-V1.00[BFW.4b]D0_TR193_1110211203.bin нужно в unpack.sh заменить "count=57" на "count=59".

unsquashfs-lzma в моем архиве рабочий, взят из fmk/trunk/src/squashfs-3.0

Скажите, а собрать после "разборки" нормально версию [BFW.4b] получилось? У меня не совпадает размер SquashFS и SquashFSmod. deadc0de писал в личке, что надо дописывать нулевые байты ручками, чтобы добить до нужного размера (поскольку mksquashfs не обучен дописывать нулевки) , но проблема еще в том, что сами байты в конце файла не совпадают ( даже если не вношу никаких изменений в unpack (!)). По поводу разборки 4 версии, ИМХО в unpack.sh надо изменить count не на 59, а на 60 (отрежьте ядро, оставшаяся часть должна быть кратна 65536) , либо вообще оставить только skip=19


--------------------
Le mieux est l'ennemi du bien!- Лучшее - враг хорошего!


Откройте для себя dropbox Ваш персональный облачный файлообменник - по моей ссылке http://db.tt/EqMhLxSu - 500 Mb - дополнительно и бесплатно
PM
Top
qwerty133
Отправлено: Ноя 3 2011, 21:55
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 32
Пользователь №: 21
Регистрация: 15-Октября 11
Статус: Offline

Репутация: нет



Там ещё константа в bufsz. Вот http://dir620.ipb.su/index.php?showtopic=6...=findpost&p=145 размер 1 в 1 smile.gif
PMEmail Poster
Top
Rusink
Отправлено: Ноя 4 2011, 10:25
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 627
Пользователь №: 56
Регистрация: 3-Ноября 11
Статус: Offline

Репутация: 13



Цитата (qwerty133 @ Ноя 3 2011, 21:55)
Там ещё константа в bufsz. Вот http://dir620.ipb.su/index.php?showtopic=6...=findpost&p=145 размер 1 в 1 smile.gif

Константа - bs=65536 ? Я про нее и говорил smile.gif. Спасибо


--------------------
Le mieux est l'ennemi du bien!- Лучшее - враг хорошего!


Откройте для себя dropbox Ваш персональный облачный файлообменник - по моей ссылке http://db.tt/EqMhLxSu - 500 Mb - дополнительно и бесплатно
PM
Top
qwerty133
Отправлено: Ноя 4 2011, 17:42
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 32
Пользователь №: 21
Регистрация: 15-Октября 11
Статус: Offline

Репутация: нет



Не про неё и это не в скрипте smile.gif.
В keeneticfix можете заменить 0x04c0000 на 0x0500000 для последней версии. Некрасиво, конечно, так харкодить wink.gif.
PMEmail Poster
Top
Rusink
Отправлено: Ноя 5 2011, 17:39
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 627
Пользователь №: 56
Регистрация: 3-Ноября 11
Статус: Offline

Репутация: 13



Цитата (qwerty133 @ Ноя 4 2011, 17:42)
Не про неё и это не в скрипте smile.gif.
В keeneticfix можете заменить 0x04c0000 на 0x0500000 для последней версии. Некрасиво, конечно, так харкодить wink.gif.

Хм. Получилось. Но в SquashSFmod все равно пришлось дописывать нули ручками smile.gif

И еще - Keeneticfix прописывает версию программы [BFW.3] а не[BFW. 4b] (в модифицированной вами прошивке, кстати, тоже smile.gif ) Смотрел исходник, но пока не понял, что заменить smile.gif


--------------------
Le mieux est l'ennemi du bien!- Лучшее - враг хорошего!


Откройте для себя dropbox Ваш персональный облачный файлообменник - по моей ссылке http://db.tt/EqMhLxSu - 500 Mb - дополнительно и бесплатно
PM
Top
qwerty133
Отправлено: Ноя 5 2011, 21:09
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 32
Пользователь №: 21
Регистрация: 15-Октября 11
Статус: Offline

Репутация: нет



Проблемы с hex? biggrin.gif Да и зачем? Что-то религиозное? smile.gif
PMEmail Poster
Top
Rusink
Отправлено: Ноя 6 2011, 01:44
Цитата


Активный пользователь
***

Группа: Пользователи
Сообщений: 627
Пользователь №: 56
Регистрация: 3-Ноября 11
Статус: Offline

Репутация: 13



Цитата (qwerty133 @ Ноя 5 2011, 21:09)
Проблемы с hex? biggrin.gif Да и зачем? Что-то религиозное? smile.gif

При чем здесь hex? C HEX-om все нормально, иначе ничего не получилось бы. smile.gif Кстати проблему с автоматизацией дописывания нулевых байтов решил Если вы это решили раньше - почему было не поделиться информацией. Понты? Круто? Мелко smile.gif С религией тоже все О.К. - она отсутствует. Есть только факты. За инфо по изменению bufsz - спасибо. Потом еще раз перечитал пост - deadc0de прямо об этом писал. Проблема в невнимательности. Сорри. P.S. Форум - место общения единомышленников, а не демонстрации понтов


--------------------
Le mieux est l'ennemi du bien!- Лучшее - враг хорошего!


Откройте для себя dropbox Ваш персональный облачный файлообменник - по моей ссылке http://db.tt/EqMhLxSu - 500 Mb - дополнительно и бесплатно
PM
Top
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Topic Options Страницы: (14) [1] 2 3 ... Последняя » ОтветитьНовая темаСоздать опрос

 


Текстовая версия