Перейти к содержимому
Калькуляторы

SNR-CPE Кастомизация прошивки с помощью RWFS логика оформления пакетов, возможности, обмен результатами

Поскольку вопросы возникли по сабжу и по настоятельной просьбе sfstudio создаю отдельную тему.

Предыстория переписки в другой теме

 

В 18.03.2015 в 21:08, sfstudio сказал:

Загрузкой архива rwfs можно менять всю логику от и до. Пакет формируется просто. Это tar.bz2 архив внутри которого лежит директория etc файлы из которой будут заменять штатный /etc или дополнять его. Так же если в архиве будет etc/web то файлы из него будут подменять или дополнять web. После загрузки и распаковки исполняется /etc/scripts/userrwfs.sh (если он есть) который так же может быть внутри пакета и из него можно в т.ч. менять настройки и прочее.

 

Делал специально что бы любое железо под Wive-NG-MT можно было адаптрировать под оператора не собирая свою ветку с правками. Т.е. для переделки по сути доступен весь инит и web чего в большинстве случаев достаточно.

 

В 23.03.2015 в 20:35, sfstudio сказал:

С правами всё просто, там везде рут, разделения нет т.к. по сути юзер всего один. Остальное всё точно так же как и в больших системах. Забрать текущее полное содержимое rwfs можно банально tar /etc > /tmp/web/rwfs.tar затем забрать брауземом http://<адрес_роутера>/rwfs.tar а если потому его запаковать в bzip2 то можно будет назад залить через рожу. Абсолютно не обязательно (даже вредно) лить весь rwfs достаточно только нужное файло паковать.

 

P.S. Я устал бороться с вашим желанием свалить всё в одну кучу. Более ответов в этой теме не ждите. Терь пинайте модераторов пусть делят всю нашу переписку по темам, иначе я не вижу смысла для себя продолжать, ибо тема уже и так засрана и найти в ней уже ничего не реально хотя страницы всего 3. Из них по теме наберётся меньше одной.

 

 

Теперь вопрос:

 

Поскольку после загрузки и распаковки исполняется /etc/scripts/userrwfs.sh, то как сделать чтобы внесенные им изменения в разделе /etc сохранялись после перезагрузки?

Например я хочу при загрузке внести изменения в конфигурацию демонов или WiFi, стянуть плейлисты провайдера для xupnpd и сохранить их.

Поскольку раздел /etc - tmpfs, перезагрузка всё сотрет.

Куда и как сохранить изменения перманентно?

Изменено пользователем Mikhail Vanyashkin
Актуализация названия

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Выполнить fs save как и для сохранения любых других манипуляций в /etc не перекрываемых скриптами, иначе нужно вносить правки уже не в конфиги а в скрипты их генерящие и сохранять все той же командой, которая если что вообщето автоматически выполняется после заливки архива и его распаковки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Какой формат файла должен быть для команды nvram_renew 2860 [<file>] ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сбэкапьте настройки и увидите какой =)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сбэкапьте настройки и увидите какой =)

Т.е. этот файл должен быть с полным списком параметров, и подсовывать в эту команду часть параметров нельзя?

Пока что использую nvram_set, скорее всего этим и ограничусь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вообще-то можно, очистка по renew не производиться. Но смысла не видно, проще через nvram_set выставить и не париться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вообще-то можно, очистка по renew не производиться. Но смысла не видно, проще через nvram_set выставить и не париться.

nvram_set ИМХО работает значительно медленнее.

Я пытался через nvram_renew влить из неполного файла частичные параметры, идет ругань "file format error!", потом понял что это происходит если первая строчка не " Default".

 

Вот тест

[Wive-NG-MT@/etc/custom]# cat /etc/custom/nvram_test
CountryCode=RU
CountryRegion=5
CountryRegionABand=0
EncrypType=TKIPAES
AuthMode=WPA2PSK
AutoChannelSelect=1
Channel=0
[Wive-NG-MT@/etc/custom]# nvram_renew 2860 /etc/custom/nvram_test 
file format error!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну ессно если заголовка нет будет ругаться. Смысл в этом месте гнаться за скоростью. Там же не 100500 настроек поменять надо.

 

AutoChannelSelect=1
Channel=0

 

Ещё один. А потом будете стонать что часть девайсов не видит точки? Не юзайте автовыбор канала, это бесполезная и даже вредная сущность торчащая в ПО только из-за стонов некоторых заказчиков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для кастомизации нужно все сырцы просмотреть?

Там ещё не так просто найти нужное, особенно если нет представления о структуре.

Может все-таки сделать краткое описание возможных действий и параметров перенастройки коробки через RWFS?

Например откуда можно узнать последовательность применения кастомного архива?

 

Описание кастомизации нужно прежде всего для того чтобы провайдеры покупали у НАГа сабжевый девайс, хорошо понимая как его можно под себя быстро "заточить".

 

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

Знаете, мне тоже некогда и есть свои задачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может все-таки сделать краткое описание возможных действий и параметров перенастройки коробки через RWFS?

 

Это будет талмут в 3х томах. Когда я этим заниматься то буду и за чей счёт банкет? Да и писулька будет абсолютно бесполезной на 90% ибо переделать можно всю логику, но требования у всех разные и описывать все варианты не имеет никакого практического смысла. Я надеюсь таки на минимальное вмешательство в логику иначе непонятно что делать с поддержкой.

 

Например откуда можно узнать последовательность применения кастомного архива?

 

#!/bin/sh

echo "Unpack user RWFS part"                            > /dev/console 2>&1
bzcat $1  | tar xf - -C / || exit 1                     > /dev/console 2>&1
echo "RWFS LOAD OK!!!! $1" > /etc/rwfsloadbyuser

if [ -f /etc/scripts/userrwfs.sh ]; then
   echo "Start postrwfs load script"                   > /dev/console 2>&1
   sh /etc/scripts/userrwfs.sh                         > /dev/console 2>&1
fi

fs save  

 

Исполняется при заливке архива.

 

Описание кастомизации нужно прежде всего для того чтобы провайдеры покупали у НАГа сабжевый девайс, хорошо понимая как его можно под себя быстро "заточить".

 

Я не технический писатель, и не продавец. Моё дело тех часть. Заморачиваться продажами и написанием талмутов должен НАГ я могу только дать информацию в процессе написания в пределах нашего соглашения.

 

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

Знаете, мне тоже некогда и есть свои задачи.

 

Вы пока ещё не особо разбирались или куда-то вдавались, а вопросы особо к самой кастомизации у вас особо отношения не имеют. Хотя понимаю первым быть сложно. Опубликуете свой пакет как пример для остальных будет проще. Потому и грю никаких приватов всё в теме что бы было проще.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вы пока ещё не особо разбирались или куда-то вдавались, а вопросы особо к самой кастомизации у вас особо отношения не имеют. Хотя понимаю первым быть сложно. Опубликуете свой пакет как пример для остальных будет проще. Потому и грю никаких приватов всё в теме что бы было проще.

 

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

Да по кастомайзу по сути провайдеру нужно что:

1) включить типичный набор опций/сервисов, каких-то преднастроек при выполнении userrwfs.sh

Вот по опциям в первую очередь описание надо, чтобы на уровне sh/awk можно было вкорячить нужное:

- опции собственно самого подключения на WAN-порту, VPN и т.п.

- опции WiFi

- опции по включению/отключению нужных сервисов

Где лежит описание опций nvram я так и не нашел в сырцах.

 

2) Вкорячить свой логотипчик с контактными данными, т.е. маркетоидам печенюшки дать...

3) Возможно ещё сделать пару ссылок на сайты (например сайт компании, форум техподдержки, ссылка на раздел по настройке коробки и т.п.), контактные мыло и телефоны.

 

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

Следовательно желательно дополнительно в прошивке сделать следующее:

1) для кастомных заданий cron сделать возможность использования кастомного файла крона без правки основного файла. По крону я вот например планирую обновлять IPTV-плейлист и т.п.

2) для кастомных стартовых скриптов так же сделать обращение к каталогу со скриптами типа /etc/custom.d или что-то подобное.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1) см соответствующую логику инита там все переменные видно как на ладони, да и большинство их понятно тупо по названию

2) в архив кладём etc/web/graphics/нужные логотипы

3) в архив кладём web/* файлки страниц перекрывающие аналогичные в штатном вебе со ссылками

4) не имеет смысла ибо крон кроме юзверя никто один фиг не использует

5) добавляете в инит S99userscripts в него кладёте логику хотя нахрена не ясно, будут конкретные задачи подскажу как правильно сделать без извращений

6) дополняйте, всё в ваших руках, дан инструмент который позволяет хоть перезаписывать хоть дополнять, как реализует дело каждого, а дефолтовый rwfs так или иначе часть RO rootfs и если что восстанавливается банальным резетом

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я вот как-то делал кастомизацию STB Eltex, вот там намного проще и удобнее продумано, и даже описано как чего делать.

 

А у вас куда ни плюнь, один совет - реверс инжиниринг, или шагом марш в доразработчики...

Как в известном фильме "Тебя сразу убить, или так чтобы помучаться?"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1) это не STB

2) какой реверс инжиниринг? Исходники доступны чего вы реверсить собрались?

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

 

Вам дали инструмент, пользоваться или нет и как именно пользоваться выбор за вами. Я вообще лично против какой-либо кастомизации и считаю это дурью ибо всё можно сделать в пределах основной ветки и один раз а не тянуть одеяло каждому в свою сторону. Как например с IPTV нарисовать фиды один раз под всех только линки добавляя попутно, а не городить каждый сам 100500й велосипед. Но понимания этого я не увидел пока. Сам выискивать линки и рисовать фиды я конечно могу, но за чей счёт опять же банкет не ясно.

 

Я могу сесть и заниматься вами, водить за руку, расписывать талмуты и т.д. Но тогда давайте вы за меня будете делать мою работу? А то как-то в сутках всего 24часа.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Это из описания фидов

хочу обратить внимание на настройку Feeds reload interval и Playlists reload interval равные 86400. Это автообновление плейлистов фидами и обновление плейлистов для сервера DLNA через определенный интервал времени.

 

Чтобы написать фиды, надо вникнуть в логику их написания, а если реализовать по cron (или при рестарте коробки) я сделаю ровно то же самое, только написать это даже на уровне сисадмина - дело нескольких минут.

Результат по факту будет практически один и тот же. В чем кардинальное преимущество вашего предложения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я вообще лично против какой-либо кастомизации и считаю это дурью ибо всё можно сделать в пределах основной ветки и один раз а не тянуть одеяло каждому в свою сторону

Ваш ответ понял, не майтесь дурью я Вас не заставляю это делать.

 

2) какой реверс инжиниринг? Исходники доступны чего вы реверсить собрались?

Это же Вы предлагаете мне прошерстить все инит-скрипты в поисках описания опций nvram. Если это не реверс-инжиниринг, тогда безусловно Вы правы - это дурь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В том что ваш костылик я не положу в свою ветку и он не будет доступен из коробки. Далеко не все юзвери предпочтут лить рукоблудие оператора поверх прошивки (надеюсь как минимум иначе утону чую в поддержке). В случае единожды написанной логики фида можно тупо добавлять операторов по запросу в основную ветку и эта логика будет доступна автоматом с обновлением на всех Wive-NG-* устройствах независимо от пакетов кастомизации или положения звёзд на небе.

 

То же касается добавляемых крутилок в рожу, пока делают локально будут вынуждены следить за изменениями у меня в ветке и если что адаптировать. Логика та же почему крупные чипмэйкеры постепенно начали выделять своих девов для работы над ванильным ядром (тот же медиатэк правда пока на начальном этапе), просто потому что тащить свою ветку или даже пакет для сборки модулей это дополнительная и постоянная работа, а не разовая но более сложная чем по быстрому приляпать сбоку. Принцип тот же.

 

Я к сожалению не могу сделать всё и за всех. Даже если меня захватят в рабство. =)))) И так сейчас 90% своего времени занято именно наговскими железками. И только 10% это время на всё остальное включая жрать, срать и прочее =)))) Ессно это временно, пока я имею возможность выделять всё время под эти железки, дальше будет сложнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В том что ваш костылик я не положу в свою ветку и он не будет доступен из коробки.

Так а Вы и дефолтные настройки что провайдера что юзера не положите в свою ветку, их один фиг надо кастомизировать до установки юзеру.

А если юзер пожелает обновить прошивку на вашу, значит сам уже и с настройками разобраться сможет.

 

Не всем провайдерам нужно публично светить свои плейлисты и следовательно включать их в фиды.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Не в засвечивании дело, у нас всё законно, просто зачастую в некоторое ПО авторы включают устаревшие плейлисты без нашего ведома.

А потом юзеры начинают выяснять чего за хрень, почему в их любимой проге каналы не показывают

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот поэтому я и грю что фиды лучшее решение т.е. плэйлист подгружается уже из сети оператора сразу и сразу актуальный и сам же обновляется по таймауту штатными же средствами xupnpd. А у себя держу только те плэйлисты которыми пользуюсь сам и ессно есть кому актуализировать их если что.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Прочел обсуждение по автовыбору каналов и сделал рандомное вписывание каналов в конфиг.

 

Покопался в фидах, оказалось что там по сути всё уже есть и ничего программировать не пришлось - тип фида "Generic" прекрасно подошел.

В итоге в кастомизацию добавил 2 файла конфига xupnpd

/etc/xupnpd/config/common.lua с кастомными параметрами по обновлению фидов и ещё парой

cfg["sort_files"]=true
cfg["name"]="MyISP-CPE"
cfg["feeds_update_interval"]=86400
cfg["playlists_update_interval"]=86400

 

/etc/xupnpd/config/feeds.lua

feeds=
{
  { "generic", "http://site.myisp.ru/CPE/MyISP-IPTV.m3u", "MyISP-IPTV" },
}

 

На данный момент всё что требовалось по кастомизации - сделал.

Если кому интересно - архивчик как пример по ссылке ниже.

 

RWFS_MyISP.tbz

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Покопался в фидах, оказалось что там по сути всё уже есть и ничего программировать не пришлось - тип фида "Generic" прекрасно подошел.

В итоге в кастомизацию добавил 2 файла конфига xupnpd

 

Я о том и грю, что по аналогии для простого запроса там и делать особо ничего не надо, описываем фид если нет аутентификации, если есть то чуток сложнее, но всё равно ИМХО это более верно ибо штатно для xupnpd. Можно хоть список родить под всех с выбором. Точнее по сути оно уже и так есть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Гость Imp

Возникла необходимость создать кастомную стартовую страницу на которой вынести необходимые параметры. Например, SSID и пароль на wi-fi, а также смену пароля Admin.

 

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

 

<form method="post" name="security_form" action="/goform/APSecurity" onSubmit="return submit_apply();">

 

Возможно создать свой action="/goform/CustomAction" используя rwfs?

 

Прошу прошения, если тема уже поднималась. Буду рад ссылке на обсуждение этой темы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

К сожалению нет, но можно использовать cgi, делаете скрипт обработки вашей формы и всё...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.