1

Тема: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Несколько дней назад компания ZyXEL представила для старшей модели маршрутизатора keenetic новую прошивку серии V2. Цитирую:

Внимание! Данная версия микропрограммы — это не очередное улучшение микропрограмм первого поколения, а принципиально другая платформа! ....

Подробнее можно почитать на форуме IXBT в этой теме и, конечно, на zyxel.ru.
Естественно, многие захотели посмотреть, что там внутри, но способы, которые работали для первой серии прошивок, не срабатывали. Впрочем, решение было найдено быстро. Вот, что пишет один из владельцев keenetic.

нужно найти в lzma C/7zip/Compress/LZMA_Lib/ZLib.cpp функцию uncompress и в ней заменить

if (decoderSpec->SetDecoderPropertiesRaw(ZLIB_LC,
           ZLIB_LP, ZLIB_PB, (1 << 23)) != S_OK) return Z_DATA_ERROR;

на

if (decoderSpec->SetDecoderPropertiesRaw(ZLIB_LC,

           ZLIB_LP, ZLIB_PB, (1 << 16)) != S_OK) return Z_DATA_ERROR;

еще понадобилось изменить параметры компрессии в этом же файле
#define ZLIB_LC 3
#define ZLIB_LP 0
на
#define ZLIB_LC 0
#define ZLIB_LP 2

Внутри прошивки нет ни shell, ни, естественно, shell скриптов. sad

Как описано в документации, в новую прошивку добавить нужные из компоненты, выбирая их в web-интерфейсе (или через cli). Вот, что пишет другой владелец железки:

Keenetic скачивает список доступных компонентов с адреса http://..../components.xml, а "кастомизированная" прошивка берётся в виде ответа на POST-запрос к адресу....
....
по POST-запросу на адрес .../cgi-bin/build отдаётся один файл, и это файл прошивки, идентичный по структуре всем (в том числе и V1) прошивкам для Keenetic.

Похоже, что на сервере собирается прошивка из выбранных пользователем компонент, и отдается единым файлом.

2

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Запуск приложений с USB-накопителя в версии V2.00 работать будет?

3

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Не будет.

4

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Я чёт не пойму эта прошивка подойдёт keenetic 4g?

5

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

-=SV=- :

Я чёт не пойму эта прошивка подойдёт keenetic 4g?

А Вы на странице загрузок прошивок для своей модели эту прошивку можете скачать? Если нет, то и не подойдет. Может быть и для Вашей модели такую прошивку выпустят позже.

6

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Zyxmon :
-=SV=- :

Я чёт не пойму эта прошивка подойдёт keenetic 4g?

А Вы на странице загрузок прошивок для своей модели эту прошивку можете скачать? Если нет, то и не подойдет. Может быть и для Вашей модели такую прошивку выпустят позже.

Ясно, будем ждать.  sad

7

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

ну и как в общем то прошивка стоящая или нет ??

8

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Zyxmon,  Подскажи, а у v2 есть какой-нить вебинтерфейс для какихнить общих, повседневных
, не продвинутых настроек, или вообще только консоль?

9

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Nigel :

Zyxmon,  Подскажи, а у v2 есть какой-нить вебинтерфейс для какихнить общих, повседневных
, не продвинутых настроек, или вообще только консоль?

Естественно есть, там все практически можно настроить через веб, через cli настраиваются только специфичные вещи, в описании все есть... На мой взгляд, эта прошивка далека до совершенства, если хотите, до продакшена, ее пилить и пилить еще нужно очень и очень долго.

Отредактировано IgorGolubev (2011-11-06 02:02:04)

10

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Об этой прошивке статья на хабре
http://habrahabr.ru/blogs/hardware/135557/

11

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Тоже прочитал статью, она меня подтолкнула попробовать эту прошивку smile

12

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Итак, прошивка KEENETIC_LITE-V2.00[BWN.4]C1 пропатчена, рут получен.
Подробно изучать буду, по видимому, уже завтра. Какие будут предложения - что в первую очередь стоит посмотреть/сделать? (Сразу предупреждаю - возможности(пока)сильно ограничены, т.к. собранный базибокс минимален).Собственно, вот оно:

BusyBox v1.8.2 (2012-02-06 00:14:16 MSK) built-in shell (ash)
Enter 'help' for a list of built-in commands.

~ # ls -l
drwxr-xr-x    2 root     root          214 Feb  6  2012 bin
drwxr-xr-x    9 root     root            0 Jan  1  2011 dev
drwxr-xr-x    5 root     root          276 Feb  6  2012 etc
drwxr-xr-x    2 root     root           84 Feb  5 21:53 flash
drwxr-xr-x    3 root     root         1187 Jan 12 14:46 lib
drwxr-xr-x    2 root     root           22 Jan 12 14:46 mnt
dr-xr-xr-x   60 root     root            0 Jan  1  2011 proc
drwxr-xr-x    2 root     root           22 Jan 12 14:46 root
drwxr-xr-x    2 root     root           44 Jan 12 14:46 sbin
drwxr-xr-x   10 root     root            0 Jan  1  2011 sys
drwxr-xr-x    8 root     root            0 Jan  1  2011 tmp
drwxr-xr-x    6 root     root           56 Jan 12 14:46 usr
lrwxrwxrwx    1 root     root            4 Feb  5 18:07 var -> /tmp
~ # ls -l /bin/
-rwxr-xr-x    1 root     root        51103 Jan 12 14:46 ag
lrwxrwxrwx    1 root     root            8 Feb  4 22:52 ash -> busybox2
-rwxr-xr-x    1 root     root        58775 Jan 12 14:46 busybox
-rwxr-xr-x    1 root     root       157872 Feb  6 01:14 busybox2
lrwxrwxrwx    1 root     root            8 Feb  4 22:54 chmod -> busybox2
lrwxrwxrwx    1 root     root            8 Feb  4 22:55 insmod -> busybox2
lrwxrwxrwx    1 root     root            8 Feb  4 22:55 kill -> busybox2
lrwxrwxrwx    1 root     root            8 Feb  4 22:56 killall -> busybox2
lrwxrwxrwx    1 root     root            8 Feb  4 22:56 ls -> busybox2
lrwxrwxrwx    1 root     root            8 Feb  4 22:56 lsmod -> busybox2
lrwxrwxrwx    1 root     root            8 Feb  4 22:56 mkdir -> busybox2
lrwxrwxrwx    1 root     root            8 Feb  4 22:57 mount -> busybox2
-rwxr-xr-x    1 root     root         6087 Jan 12 14:46 ndm
-rwxr-xr-x    1 root     root        46447 Jan 12 14:46 ndmc
-rwxr-xr-x    1 root     root        10623 Jan 12 14:46 ndmf
lrwxrwxrwx    1 root     root            8 Feb  4 22:57 ps -> busybox2
lrwxrwxrwx    1 root     root            8 Feb  4 22:57 rmmod -> busybox2
lrwxrwxrwx    1 root     root            8 Feb  4 22:57 sh -> busybox2
lrwxrwxrwx    1 root     root            8 Feb  4 22:57 umount -> busybox2
-rwxr-xr-x    1 root     root         9907 Jan 12 14:46 updatedd
lrwxrwxrwx    1 root     root            8 Feb  4 22:58 wget -> busybox2
~ # /bin/busybox2
BusyBox v1.8.2 (2012-02-06 00:14:16 MSK) multi-call binary
Copyright (C) 1998-2006 Erik Andersen, Rob Landley, and others.
Licensed under GPLv2. See source distribution for full notice.

Usage: busybox [function] [arguments]...
   or: [function] [arguments]...

        BusyBox is a multi-call binary that combines many common Unix
        utilities into a single executable.  Most people will create a
        link to busybox for each function they wish to use and BusyBox
        will act like whatever it was invoked as!

Currently defined functions:
        [, [[, ash, cat, chmod, echo, insmod, ls, lsmod, mkdir,
        mount, rmmod, sh, test, umount, wget

~ #

13

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Dr.Acid :

Итак, прошивка KEENETIC_LITE-V2.00[BWN.4]C1 пропатчена, рут получен.

Большого смысла это не имеет. Исходную прошивку, выложенную на zyxel.ru следует обновлять. Обновляется она сама, собирается из (заказанных) компонент на сервере, скачивается, автоматически ставится.
Фактически не существует понятия прошивка v2.
Все рекомендации на my.zyxel.ru по поводу ошибок (в бете их хватает) начинаются со слов - обновите прошивку.

14

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

день добрый!) лично меня мучает один-единственный вопрос: доступ извне по http на веб-морду девайса для правки настроек. В версии 1.00 можно было задать любой порт ну и включить\выключиь эту опцию а в v2.00 я перерыл все опции но не нашел этого.....

15

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Zyxmon :

Большого смысла это не имеет. Исходную прошивку, выложенную на zyxel.ru следует обновлять. Обновляется она сама, собирается из (заказанных) компонент на сервере, скачивается, автоматически ставится.
Фактически не существует понятия прошивка v2.
Все рекомендации на my.zyxel.ru по поводу ошибок (в бете их хватает) начинаются со слов - обновите прошивку.

Естественно всё это верно, но:
1) Для изучения(познания, как оно устроено и работает) сгодится.
2) Тут уж выбирать - или обновления, или сторонней доп.функционал в базовой версии. wink  Она, как я понял, сама по себе многим очень нравится (да и я не против, особенно, думаю, это для лайтов актуально - обновлять там практически нечего)
3) Может, появиться в последствии способ "прикрутить" это дело на обновлённую прошивку, но пока такого способа нет.  sad

P.S.

Кстати, сделать поддержку автозапуска скрипта, скачиваемого через wget у меня не получилось (и вряд ли получится) - по видимому, этот скрипт выполняется слишком рано, когда ещё сеть не подключилась (подозреваю, с флешкой будет тоже самое). Вручную скачать и запустить скрипт можно, но модули собрать пока не представляется возможным. sad

Отредактировано Dr.Acid (2012-02-12 15:02:00)

16

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Вот патчик, для прошивок V2 (должен подойти ко всем кинетикам), который добавляет в прошивку шелл и, соответственно, доступ рутом  wink V2_root.tar.gz
Инструкция внутри. Как распаковать прошивку написано в первом посте этой темы big_smile  Добавлю ещё одну идейку: Я специально(только-что) включил в busybox2 команду sleep. С её помощью мне удалось-таки сделать подгрузку скрипта start_wget.sh по wget с компа. А вот и этот (усовершенствованный) вариант: V2-root-wget.zip (Обратите внимание на /media, доступную для записи!)
Точно также, можно сделать и загрузку ext_init.sh с USB диска. Инсталляционный пакет Zyxmon'а работать не будет sad (В прошивке нет dd и других прог)
Также, сделал свой "системный" пакет, который завёлся на моём Лайте (выложу позже в этой теме)
Соответственно, без модулей(с модулями от V1) не будут работать и некоторые пакеты, остальные, можно завести. Вот так, как-то...

Отредактировано Dr.Acid (2012-03-04 19:05:26)

17

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Процитирую тут сам себя, с форума IXBT (там мой ник Zdpn) про прошивки v2.

У v2 нет понятия версия прошивки. Прошивка собирается из модулей на сервере по Вашему запросу, загружается и автоматически ставится. Вы вчера это делали, а я сегодня - модуль за это время поменялся, у нас с Вами разные прошивки.
На zyxel.ru выкладывают "начальную" версию v2 (таких было две). - а дальше у всех прошивки становятся разными. Разные наборы модулей и их даты.

Мне (пока ???) в v2 нет возможности добавить свой функционал прошивка v2 не интересна.
Если разработчики v2 добавят шелл, хуки (выполнение скриптов) на mount, umount, init, link up/down - тогда посмотрим.
ИМХО v2 - прошивка для малого офиса, а не для хомячка.

У v2 интересная идея (модульность), у которой есть и недостатки. Предположим Вы обновляете модуль pppoe и он перестает работать. Соединения с инетом у кинетика v2 уже нет, прошивку не откатить и не обновить. Единственный выход ставить "изначальную". Вот пример описания такого модуля-компонента

    <component>
    <name>ppp</name>
    <description lang="RU">Поддержка подключений PPP</description>
    <details lang="RU">Позволяет устанавливать подключения PPP через последовательные интерфейсы. Этот компонент также необходим для работы клиентов PPPoE, PPTP и L2TP.</details>
    <description>Point-to-Point Protocol (PPP) links support</description>
    <details>Allows to establish PPP links over serial interfaces. This component is also needed for PPPoE, PPTP and L2TP clients to work.</details>
    <group>Networking</group>
    <priority>important</priority>
    <depend>base</depend>
    <version>XXX</version>
    <changelog/>
    <size>110334</size>
    </component>

18

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Zyxmon :

У v2 интересная идея (модульность), у которой есть и недостатки. Предположим Вы обновляете модуль pppoe и он перестает работать. Соединения с инетом у кинетика v2 уже нет, прошивку не откатить и не обновить. Единственный выход ставить "изначальную".

Эта проблема легко решалась бы, если бы была возможность сохранить текущую версию прошивки - тогда откат бы делался не на изначальную, а на последнюю стабильную "кастомную" версию (предварительно сохранённую, естественно) - вот именно на эту тему и надо "пинать" разработчиков (ссылаясь на вышеприведённый пример), но, что-то мне подсказывает, они на это не пойдут.
Или вариант №2: "Эмулятор" кинетика (а может быть и правда, эмулятор?) который будет скачивать прошивку (с нужными компонентами) и сохранять её в файлик  wink  Но я такое дело не осилю, точно!

19

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Dr.Acid, сниффер в зубы и будет Вам эмулятор. Но зачем - не понимаю.
Собственно xml код компонента (выше) так и получен.

Последние прошивки v1 заблокировали от перепаковки, разработчикам, если захотят, ничего не стоит применить подобный прием и в v2.

20

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Ещё один патчик (на этот раз - только для КИНЕТИКОВ (ну, может быть, ещё к 4ж подойдёт)). Кроме рута, он добавляет запуск скрипта при включении/перезагрузке роутера с USB диска. Инструкция внутри.
V2_root_runusb.tar.gz
ВНИМАНИЕ! Возможно, я пожадничал и поставил слишком малую задержку в скрипте (20сек) - винты могут не успеть распарковатся. Тогда увеличивайте (файл /bin/run_usb.sh) задержку, и скажите, сколько сделать.

И ещё - никто не пробовал после установки патча(любого) "обновлять" прошивку, загружая компоненты через веб интерфейс? Патч слетает, или нет? (Возможно, что не слетит(т.е. рут останется) и это будет очень круто! cool )

P.S.

Чтобы заработал этот патч, надо ещё в прошивку добавить папки /media/DISK_A1
(и, возможно, бинд к ним папки с флешкой в run_usb.sh)

Отредактировано Dr.Acid (2012-02-23 13:21:28)

21

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Dr.Acid :

И ещё - никто не пробовал после установки патча(любого) "обновлять" прошивку, загружая компоненты через веб интерфейс? Патч слетает, или нет? (Возможно, что не слетит(т.е. рут останется) и это будет очень круто! cool )

Слетит всё. Документально установлено - прошивка меняется полностью.

22

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

rusink :

Слетит всё. Документально установлено - прошивка меняется полностью.

Это грустно  sad  Что-ж, зато не будем питать лишних иллюзий...
(Значит, получается как в той сказке: Либо дудочка, либо кувшинчик wink (вот только "кувшинчик" ещё предстоит только завести)  )

23

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

Не знаю даже, куда это выложить... пожалуй, положу здесь. wink
Универсальный инсталлятор системы (должен подходить ко всем Кинетикам, и возможно, к некоторым другим роутерам/устройствам). Более того, подходит и для Кинетика с прошивкой V2 (проверьте, кто может, естественно, необходим этот патч
http://forum.zyxmon.org/post4427.html#p4427)
system_uni_v1.rar
Кстати, вопрос: 4ж с прошивкой V2 "из коробки" (то биш сразу после заливки этой прошивки: KEENETIC_4G-V2.00[BWO.2]C2 ) умеет USB диски? Если умеет, то можно и на него систему ставить, если нет (только после обновления с сайта) - тогда облом sad

В общем, пробуем, отписываемся.

P.S.

Поясню ещё, на всякий случай: Этот инсталлятор не пишет в системный лог (специально, т.к. на прошивках V2 его попросту нету(точнее, он там другой совсем)). Всё сообщения инсталляционный скрипт ext_init.sh выводит в 2 файла:
1) Вместо лога - /tmp/ext_init.log
2) Ошибки - как и раньше - /mediaDISK_A1/tmpinstall/err.log

Проверил на своем Лайте (на 4ж тоже работает) - поправил ошибки, перезалил.

P.P.S.

Возможно, на V2 и не заведётся. Поэтому вопрос к тем, у кого кинетик и V2(патченная рутом, или может сделать) - куда там монтируется USB диск? Возможно, понадобится в скрипте run_usb.sh "прибиндить" его в нужное место.

Отредактировано Dr.Acid (2012-02-27 18:56:28)

24

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

А где можно скачать распаковщик прошивки?
И как там запакована прошивка?
Могу ли я её распаковать, вооружившись  zlib и написав несколько строк на си ?
Может быть, стоит поднять свой сервер обновлений, а в роутере пропатчить прошивку на его использование, а прошивка чтобы собиралась из компонентов на роутере?

Отредактировано KOLANICH (2012-02-21 15:07:13)

25

Re: ZyXEL Keenetic - прошивки второго поколения V2.00 - что там внутри

KOLANICH :

А где можно скачать распаковщик прошивки?
И как там запакована прошивка?
Могу ли я её распаковать, вооружившись  zlib и написав несколько строк на си ?
Может быть, стоит поднять свой сервер обновлений, а в роутере пропатчить прошивку на его использование, а прошивка чтобы собиралась из компонентов на роутере?

Проблема не в том, чтобы распаковать/запаковать прошивку V2, а в том, что к ней нет исходников, а адрес сервера обновлений прошит жёстко в какой-то бинарник - по крайней мере, я перекопал всю прошивку от Лайта и не нашел этого адреса в текстовиках. Сдаётся мне, перспективней была бы идея создать эмулятор, который, "прикинувшись" кинетиком, качал бы с сайта обновлённую прошивку и кидал бы её в файл. А дальше уж мы разберёмся...