(решено) Добавить свой сервис (RWFS), возможно?

Цитата: Hayt от 06/07/2018, 14:38Доброго времени.
Как добавить в систему свой бинарник так чтоб он и переживал перезагрузку и (желательно) проживал в /bin ( или /sbin, на сколько я понимаю это линк на /bin)?
Тему "Wive-NG-MT Кастомизация прошивки с помощью RWFS" на наге почитал, понямию что это немного не то, там больше про конфиги в /etc и значения nvram
Устройство SNR-CPE-W4N, так что entware и /opt мне не светят, да и бинарника этого в entware не водится.
Сам бинарник весит 87Kb, так что думаю что с его размещением проблем быть на должно (?)
Доброго времени.
Как добавить в систему свой бинарник так чтоб он и переживал перезагрузку и (желательно) проживал в /bin ( или /sbin, на сколько я понимаю это линк на /bin)?
Тему "Wive-NG-MT Кастомизация прошивки с помощью RWFS" на наге почитал, понямию что это немного не то, там больше про конфиги в /etc и значения nvram
Устройство SNR-CPE-W4N, так что entware и /opt мне не светят, да и бинарника этого в entware не водится.
Сам бинарник весит 87Kb, так что думаю что с его размещением проблем быть на должно (?)

Цитата: sfstudio от 06/07/2018, 15:15Можете разместить его в rwfs проблем никаких. Например в /etc/scripts ну раз маленький. Всё остальное живёт на RO fs и без пересборки никак.
Можете разместить его в rwfs проблем никаких. Например в /etc/scripts ну раз маленький. Всё остальное живёт на RO fs и без пересборки никак.

Цитата: Hayt от 06/07/2018, 22:55Понятно.
Тогда еще вопрос по rc.d - чем отличаются скрипты S* от W*?
Скрипт после помещения в rc.d и создания на него линка в init.d нужно еще как нибудь "включать", как в openwrt (root@OpenWrt:/# /etc/init.d/example enable)?
Под какой буквой и номером лучше будет добавить стартовый скрипт, чтобы он запускался после установки правил iptables? Пробовал S97 - слишком рано (за долго до iptables по времени из лога).
Под буквами W - сервис оказывается не запущенным после загрузки.
Зачем мне это надо - хочу при запуске сервиса открывать ему порт. При этом дефолтные конфиги править не хочется.
Понятно.
Тогда еще вопрос по rc.d - чем отличаются скрипты S* от W*?
Скрипт после помещения в rc.d и создания на него линка в init.d нужно еще как нибудь "включать", как в openwrt (root@OpenWrt:/# /etc/init.d/example enable)?
Под какой буквой и номером лучше будет добавить стартовый скрипт, чтобы он запускался после установки правил iptables? Пробовал S97 - слишком рано (за долго до iptables по времени из лога).
Под буквами W - сервис оказывается не запущенным после загрузки.
Зачем мне это надо - хочу при запуске сервиса открывать ему порт. При этом дефолтные конфиги править не хочется.

Цитата: sfstudio от 07/07/2018, 13:30S стартует ы stage1 и безусловно, чисто последовательно. W исполняется в stage2 из /etc/scripts/services_restart.sh в зависимости от события.
Читаем риадми в ветке:
CURRENT HOOKS FOR ADVANCED USER LOGIC:
1) /etc/udhcp.d - scripts start after udcpc renew lease
2) /etc/vlan.d - scripts start after vlans configure
3) /etc/ip(6)tables.d - scripts start after netfilter configure
4) /etc/ppp-l2tpsrv/ip-up(down).d - scripts start after client connect(disconnect) to VPN server
5) /etc/ppp/ip-up(down).d - scripts start after router connetc(disconnect) to external VPN server
6) /etc/scripts/wan_up.sh - this script start after WAN up and full services reinitТ.е. если совсем по простому достаточно в /etc/iptables.d положить сразу скриптик в котором добавлять правило нетфильтра и стартовать этот самый сервис. Только не забываем что при перестройке правил iptables оно будет исполняться каждый раз. Т.е. не забываем кильнуть демона перед повторным запуском. Зато и никаких конфигов править не нужно. =))
А вообще нет никакой принципиальной разницы добавятся правила нетфильтра до или после запуска сервиса. Это сущности никак не связанные.
S стартует ы stage1 и безусловно, чисто последовательно. W исполняется в stage2 из /etc/scripts/services_restart.sh в зависимости от события.
Читаем риадми в ветке:
CURRENT HOOKS FOR ADVANCED USER LOGIC:
1) /etc/udhcp.d - scripts start after udcpc renew lease
2) /etc/vlan.d - scripts start after vlans configure
3) /etc/ip(6)tables.d - scripts start after netfilter configure
4) /etc/ppp-l2tpsrv/ip-up(down).d - scripts start after client connect(disconnect) to VPN server
5) /etc/ppp/ip-up(down).d - scripts start after router connetc(disconnect) to external VPN server
6) /etc/scripts/wan_up.sh - this script start after WAN up and full services reinit
Т.е. если совсем по простому достаточно в /etc/iptables.d положить сразу скриптик в котором добавлять правило нетфильтра и стартовать этот самый сервис. Только не забываем что при перестройке правил iptables оно будет исполняться каждый раз. Т.е. не забываем кильнуть демона перед повторным запуском. Зато и никаких конфигов править не нужно. =))
А вообще нет никакой принципиальной разницы добавятся правила нетфильтра до или после запуска сервиса. Это сущности никак не связанные.

Цитата: Hayt от 07/07/2018, 14:29Понято.
Пока в общем я сделал стартовый скрип S99xbin и поставил в нём sleep 20 (на всякий) перед добавлением правила в iptables (с проверкой на его возможное уже там существование) и запуском сервиса в секции старт.
Как я понял исполняется он самым последним из S скриптов (и 99 и x следом) + еще и задержка внутри. Мешать/задерживать запуск всего остального это как я понимаю не должно(?).
Воозможно это неправильно, но мне это кажется и в действии проще и при обновлении версии будет проще быстро установить сервис заново.
По последнему - либо я не так понимаю, либо не так делаю, но если мой скрипт по времени логируется раньше чем в логе пошло iptables: Add netfiler rules / iptables: Allow established/related in input / iptables: Drop invalid state connections и т.д., то моего правила после загрузки по iptables -L я не вижу. А вот если после - то вижу.
Добавлял и как iptables -I INPUT -p tcp --src $lan_ipaddr/$lan_netmask --dst $lan_ipaddr --dport 1234 -j ACCEPT
и как iptables -A и т.д.
Понято.
Пока в общем я сделал стартовый скрип S99xbin и поставил в нём sleep 20 (на всякий) перед добавлением правила в iptables (с проверкой на его возможное уже там существование) и запуском сервиса в секции старт.
Как я понял исполняется он самым последним из S скриптов (и 99 и x следом) + еще и задержка внутри. Мешать/задерживать запуск всего остального это как я понимаю не должно(?).
Воозможно это неправильно, но мне это кажется и в действии проще и при обновлении версии будет проще быстро установить сервис заново.
По последнему - либо я не так понимаю, либо не так делаю, но если мой скрипт по времени логируется раньше чем в логе пошло iptables: Add netfiler rules / iptables: Allow established/related in input / iptables: Drop invalid state connections и т.д., то моего правила после загрузки по iptables -L я не вижу. А вот если после - то вижу.
Добавлял и как iptables -I INPUT -p tcp --src $lan_ipaddr/$lan_netmask --dst $lan_ipaddr --dport 1234 -j ACCEPT
и как iptables -A и т.д.

Цитата: sfstudio от 07/07/2018, 14:381 - для разрешений локальных сервисов в INPUT есть отдельная цепочка servicelimit
2 - что бы использовать переменные $lan и т.д. нужно заинклудить gloabal# include global config . /etc/scripts/global.sh3 - добавление правил в нетфильр должно быть только из логики iptables живущей в ините, для этого и сделаны хуки (читай выще), иначе никакой гарантии что по какой-то нужде нетфильтр не будет переконфигурирован снова уже без учёта ваших правок, демона можете хоть откдуа и в каком угодно порядке запускать, а вот правила в нетфильтр добавляются в строго определённом месте, иначе не будут учтены
4 - нет никакой разницы как оформляете внутри, будет там 2 файлика, 3, или даже стопка. Оформляете это пакетом и всё.Ничего более сказать не могу, ибо не знаю что это за сервис такой, от чего зависит и надо ли действительно заморачиваться на тему ожидания перед запуском и т.д.
1 - для разрешений локальных сервисов в INPUT есть отдельная цепочка servicelimit
2 - что бы использовать переменные $lan и т.д. нужно заинклудить gloabal
# include global config . /etc/scripts/global.sh
3 - добавление правил в нетфильр должно быть только из логики iptables живущей в ините, для этого и сделаны хуки (читай выще), иначе никакой гарантии что по какой-то нужде нетфильтр не будет переконфигурирован снова уже без учёта ваших правок, демона можете хоть откдуа и в каком угодно порядке запускать, а вот правила в нетфильтр добавляются в строго определённом месте, иначе не будут учтены
4 - нет никакой разницы как оформляете внутри, будет там 2 файлика, 3, или даже стопка. Оформляете это пакетом и всё.
Ничего более сказать не могу, ибо не знаю что это за сервис такой, от чего зависит и надо ли действительно заморачиваться на тему ожидания перед запуском и т.д.

Цитата: Hayt от 07/07/2018, 16:02Понял, поправил, работает. Спасибо.
Понял, поправил, работает. Спасибо.

Цитата: sfstudio от 07/07/2018, 16:04Ну вот и отлично.
Не за что.
Ну вот и отлично.
Не за что.