PDA

Bekijk de volledige versie : Стартовые скрипты в прошивке AsusWRT на Asus RT-N16/N66U/AC66U



ryzhov_al
23-11-2012, 20:32
Не секрет, что алгоритм инициализации заводской прошивки взят из TomatoUSB. Можно с некоторыми ограничениями использовать имеющуюся логику себе во благо.

1. Скрипты, вызываемые после монтирования USB-раздела и непосредственно перед его размонтированием можно записать прямо в NVRAM, что позволит им «пережить» перезагрузку. Вот простейший вариант:

$ cat ./nvram.sh
#!/bin/sh

cat << EOF > /tmp/script_usbumount.tmp
if [ \$1 = "/tmp/mnt/ENTWARE" ]
then
/opt/etc/init.d/rc.unslung stop
fi
EOF

nvram set script_usbumount="`cat /tmp/script_usbumount.tmp`"

cat << EOF > /tmp/script_usbmount.tmp
logger -t \$(basename \$0) "started [\$@]"

if [ \$1 = "/tmp/mnt/ENTWARE" ]
then
ln -sf \$1 /tmp/opt
/opt/etc/init.d/rc.unslung start
fi
EOF

nvram set script_usbmount="`cat /tmp/script_usbmount.tmp`"
nvram commit

Выполнив единожды скрипт из примера можно организовать запуск и остановку внешних сервисов Entware\Optware, расположенных на разделе диска с меткой ENTWARE. Ещё плюс в том, что можно не беспокоиться о нарушении порядка монтирования носителей (sda vs sdb), т.к. логика опирается на метку диска, которую, в свою очередь надо задать при форматировании раздела (e.g. $ mkfs.ext3 -j -L ENTWARE /dev/sda1). В примере с размонтированием я умышленно не пишу строчку в syslog, т.к. скрипт выполняется уже после остановки прошивочных сервисов, в т.ч. syslogd.

Логика заводской прошивки такова:

После монтирования очередного раздела проверяется наличие переменной NVRAM script_usbmount и если она существует, то прошивка записывает во временный shell-скрипт заголовок "#!/bin/sh" и содержимое переменной, затем исполняет этот скрипт, передавая в качестве параметра точку монтирования раздела.
Перед размонтированием очередного раздела проверяется наличие переменной NVRAM script_usbumount и если она существует, то прошивка записывает во временный shell-скрипт заголовок "#!/bin/sh" и содержимое переменной, затем исполняет этот скрипт, передавая в качестве параметра точку монтирования раздела.


2. Скрипт, вызываемый после изменений правил firewall'а тоже возможен, хоть и ограничен единственным диапазоном открываемых на роутере портов. Логика заводской прошивки такова:

Если переменная NVRAM apps_dl_share установлена в «1», то прошивка считывает NVRAM переменные apps_dl_share_port_from и apps_dl_share_port_to и выполняет при накатывании правил firewall'а:

-I INPUT -p udp --dport 6881 -j ACCEPT
-I INPUT -p udp --dport apps_dl_share_port_from:apps_dl_share_port_to -j ACCEPT
-I INPUT -p tcp --dport apps_dl_share_port_from:apps_dl_share_port_to -j ACCEPT
т.е. безусловно открывает UDP порт 6881 и тот диапазон портов TCP/UDP, что вы укажете интервалом apps_dl_share_port_from…apps_dl_share_port_to


Прошу учесть, что время выполнения старт\стоп скриптов ограничено тремя секундами, по истечении которых прошивка оборвёт их выполнение и двинется дальше по своей логике. Если нужно больше, то необходимо использовать fork/dtach/screen.
Кроме того, в прошивке предусмотрена NVRAM переменная script_usbhotplug, которая может служить обработчиком при подключении неведомых прошивке USB-устройств. Она поможет, к примеру, тем, кто подключает к роутеру принтер. Код hotplug должен быть рабочий, но в деле я его не проверял.

ryzhov_al
24-11-2012, 08:57
Описанное выше справедливо для любых новых роутеров ASUS с USB-разъёмом: RT-N10U, RT-N13U, RT-N15U, RT-N16, RT-N56U, RT-N65U, RT-N66U, RT-AC66U.

Для поддержания беседы приведу свой стартовый скрипт:

$ nvram get script_usbmount
logger -t $(basename $0) "started [$@]"

if [ $1 = "/tmp/mnt/SDCARD" ]
then
ln -sf $1 /tmp/opt
[ -e "/opt/var/dtach_usbmount" ] && rm -f /opt/var/dtach_usbmount
/opt/bin/dtach -n /opt/var/dtach_usbmount /opt/usr/sbin/services-start.sh
fiЕго задача — запустить уже расширенный скрипт, который будет не ограничен во времени своего выполнения. Последний выглядит так:

$ cat /opt/usr/sbin/services-start.sh
#!/bin/sh

# Wait up to 15 seconds to make sure TANK partition is mounted
i=0
while [ $i -le 15 ]
do
if [ -d /tmp/mnt/TANK/Video ]
then
break
fi
sleep 1
i=`expr $i + 1`
done

# Starting Entware services
/opt/etc/init.d/rc.unslung start
Скрипт «ожидает» подключения раздела с контентом, на который «завязаны» сервисы Entware.
У меня это rtorrent и minidlna, запуск этих сервисов раньше монтирования раздела с контентом смысла не имеет.

aleksmtf
24-11-2012, 09:17
Помогите разобраться почему не запускаться стартовые скрипты из /opt/etc/init.d/ ???

все сделал по инструкции PeterV (http://wl500g.info/showthread.php?30086-%CF%EE%E4%EA%EB%FE%F7%E5%ED%E8%E5-%F0%E5%EF%EE%E7%E8%F2%E0%F0%E8%FF-Entware-%ED%E0-%EE%F0%E8%E3%E8%ED%E0%EB%FC%ED%EE%E9-%EF%F0%EE%F8%E8%E2%EA%E5-Asus-RT-N66U&p=248473#post248473), но есть 2 проблемки :

1. после перезагрузки RT - N66U, если зайти в меню USB приложения, то там надпись updating... (в качестве эксперемента подождал
пару часов но ничего не поменялось так и висит надпись updating..., короче нажал отмена появились AiDisk, Server Center и тд
но это ни есть гуд ,т к это происходит каждый раз после перезагрузке роутера якобы он пытается что то обновить в меню USB приложения ???

2. почему то не запускаться стартовые скрипты init.d , для эксперемента поставил rtorrent , перезагрузил смотрю ps
rtorrent не запушен ??? пришлось все в ручную запускать


/opt/etc/init.d/S85rtorrent start
/opt/etc/init.d/S80lighttpd start
уже не знаю что и пробовать даже 2 раза заново ставил , .asusrouter ( PeterV ) в папке asusware есть !!!
не запускаются скрипты и все тут ??? может у кого тоже были такие проблемы ???

вчера положил файл /opt/etc/ipkg.conf , стартовые скрипты так и не запускаются зато перестала появлятся надпись updating в меню USB приложения !!!
правда за ночь что то произошло и теперь появляется An error occurred !!!!

может у меня вся эта бодяга из за того что у меня стоит прошивка Merlin ASUS RT-N66U 3.0.0.4.246.20 ??

ryzhov_al
24-11-2012, 09:18
Помогите разобраться почему не запускаться стартовые скрипты из /opt/etc/init.d/ ???

все сделал по инструкции PeterV но есть 2 поблемки :

1. после перезагрузки RT - N66U , если зайти в меню USB приложения то там надпись updating... (в качестве эксперемента подождал пару часов но ничего не поменялось так и висит надпись updating... , короче нажал отмена появились AiDisk ,Server Center и тд но это ни есть гуд ,т к это происходит каждый раз после перезагрузке роутера якобы он пытается что то обновить в меню USB приложения ???Это то, чего я «боялся»: при использовании переменных apps_dev, apps_install_folder, apps_mounted_path начинает работать азусовская логика, которая пытается проверять на ошибки разделы при каждом старте и пытаться закачать апдейты фидов Optware (см. переменные NVRAM apps_state_autofix, apps_state_error, apps_state_update, apps_state_upgrade).

Низкий поклон тов.PeterV за работу, но лёд скользкий: достаточно «зацепить» не ту переменную NVRAM (в т.ч. в web-интерфейсе), как вся «борода» скриптов азуса из /usr/sbin/app_* придёт в движение. Именно по этому я сначала опирался на свой мод (https://github.com/ryzhovau/asuswrt-ryzhov) со стартовыми скриптами, а затем на томатовскую логику (http://wl500g.info/showthread.php?30627).

PeterV
24-11-2012, 15:45
вчера положил файл /opt/etc/ipkg.conf , стартовые скрипты так и не запускаются зато перестала появлятся надпись updating в меню USB приложения !!!
правда за ночь что то произошло и теперь появляется An error occurred !!!!

может у меня вся эта бодяга из за того что у меня стоит прошивка Merlin ASUS RT-N66U 3.0.0.4.246.20 ??

Именно поэтому.
Данный тред возник до прошивок Мерлина, и предназначен только для работы с оригинальной прошивкой.
У Мерлина встроен свой функционал для работы со стартовыми скриптами.

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

app_init_run.sh имя_пакета start.

С другой стороны - я бы советовал прислушаться к тому что говорит Тов. ryzhov_al, он, как майнтейнер Энтваре и вообще - активный товарищ подскажет лучше. Я же до сих пор на 113 прошивке сижу ;-)

aleksmtf
25-11-2012, 11:23
все наконец-то разобрался со стартовыми скриптами !!!
поскольку у меня стоит прошивка от Merlin то в ней уже реализована работа со стартовыми скриптами https://github.com/RMerl/asuswrt-merlin/wiki/User-scripts

недопонял два момента:

1. в меню JFFS есть пункт - Format JFFS partition at next boot он должен форматировать раздел каждый раз после перезагрузки или использовать этот пункт меню когда я меняю или добавляю скрипты ???
2. вопрос больше к ryzhov_al по скриптам:

А.

cat /jffs/scripts/services-start
#!/bin/sh

задержка ????

ln -sf /tmp/mnt/ENTWARE/ /tmp/opt
# Starting Entware services
/opt/etc/init.d/rc.unslung start



В.

cat /jffs/scripts/services-start
#!/bin/sh

# Wait up to 15 seconds to make sure ENTWARE partition is mounted
i=0
while [ $i -le 15 ]
do
if [ -d /tmp/mnt/ENTWARE ]
then
break
fi
sleep 1
i=`expr $i + 1`
done

ln -sf /tmp/mnt/ENTWARE/ /tmp/opt
# Starting Entware services
/opt/etc/init.d/rc.unslung start


интересно merlin в своей прошивке организовал запуск скрипта services-start после монтирования всех внешних носителей ??? вариант А.
или использовать скрипт В. c циклом проверки монтирования как у вас ???

aleksmtf
25-11-2012, 16:36
ryzhov_al наткнулся на ваш скрипт services-start на https://github.com/ryzhovau/asuswrt-ryzhov/blob/master/script-examples/jffs/scripts/services-start



#!/bin/sh

logger -t $(basename $0) "started [$@]"

# Moving web interface to another port.
# You'll need it while using your own web-server on 80 port
/usr/bin/killall httpd
cd /www
/usr/sbin/httpd -p 65080 &

# /opt is a symlink to /tmp/opt in AsusWRT. If you are using Entware/Optware do
ln -sf /tmp/mnt/ENTWARE /tmp/opt

# Wait up to 15 seconds to make sure Entware partition is mounted
i=0
while [ $i -le 15 ]
do
if [ -d /opt/etc ]
then
break
fi
sleep 1
i=`expr $i + 1`
done

# Starting Entware services
/opt/etc/init.d/rc.unslung start


непонятны строчки в скрипте :

logger -t $(basename $0) "started [$@]" - ???

/usr/bin/killall httpd
cd /www
/usr/sbin/httpd -p 65080 & - почему именно в services-start меняется порт для apache ???

ryzhov_al
28-11-2012, 17:36
Наш диалог никак не относится к топику темы. Попросим уважаемых модераторов перенести его в подходящее место, если таковое найдётся.


недопонял два момента:

1. в меню JFFS есть пункт - Format JFFS partition at next boot он должен форматировать раздел каждый раз после перезагрузки или использовать этот пункт меню когда я меняю или добавляю скрипты ???Особенность алгоритма старта роутера, его приходится перегружать дважды, для «активации» и форматирования JFFS-раздела. Дальше сами (https://github.com/RMerl/asuswrt-merlin/wiki/JFFS).


интересно merlin в своей прошивке организовал запуск скрипта services-start после монтирования всех внешних носителей ???Да !!!


непонятны строчки в скрипте :

logger -t $(basename $0) "started [$@]" - ??? Добавляет строчку в syslog, включая аргрументы, с которыми скрипт был запущен:

$ grep "started \[" /tmp/syslog.log
Jan 1 04:00:12 script_usbmount.sh: started [/tmp/mnt/TANK]
Jan 1 04:00:16 script_usbmount.sh: started [/tmp/mnt/SDCARD]


/usr/bin/killall httpd
cd /www
/usr/sbin/httpd -p 65080 & - почему именно в services-start меняется порт для apache ???Это не apache. /usr/sbin/httpd - это демон, обеспечивающий работу web-интерфейса прошивки, я «переношу» web-интерфейс роутера на другой TCP порт, для того, чтобы освободить 80-й порт под свои нужды.

h1Nt
03-12-2012, 20:19
Удалось завести Entware на заводской прошивке. Спасибо за инструкции. Подскажите, как добавлять правила iptables?

ryzhov_al
04-12-2012, 04:32
Удалось завести Entware на заводской прошивке. Спасибо за инструкции. Подскажите, как добавлять правила iptables?А никак:) Есть указанный куцый вариант для открытия диапазонов портов, если нужно нечто большее, то придётся реализовывать самому. Вплоть до cron-задания, где придётся отслеживать существование нужного правила и добавлять его в случае отсутствия.

Я посмотрю снова исходники прошивки, вдруг томатовская логика уцелела и в отношении post-firewall.

Update 19/12: Посмотрел. Нет, не уцелела.

kondratiy
11-12-2012, 23:10
Есть два роутера N-66 (корбина static IP) и N-16 (мегафон 3g) с последними мерлиновскими прошивками.

N-66 сервер PPTP N-16 клиент который к нему коннектится, тут все ОК - PPTP поднимается нормально.

При поднятии PPTP мне надо прописать 2 маршрута автоматом, ибо 3g падает постоянно.

1. На N-66 нужно сделать route add 192.168.2.100 dev ppp10 иначе не видит комп на n-16
2. на N-16 route add -net 192.168.1.0 net mask 255.255.255.0 gw 192.168.1.50

Вопрос: Как при поднятии туннеля PPTP прописывать роуты автоматом ????
Оптимально прописать роутинг всей сети 192.168.2.* в 192.168.1.* и обратно, но это совсем не понятно как сделать.

Подскажите плз - желательно подробно куда-чего пихать)

Кто может подсказать какой скрипт вызывается когда поднимается PPTP VPN соединение ? wan-start ?

ryzhov_al
13-12-2012, 04:06
В заводской — никакой.

kondratiy
13-12-2012, 20:17
В заводской — никакой.

У меня мерлиновские последние и на n-66 и n-16. Мне нужно при поднятии PPTP прописать маршрут. Вот как ?

ryzhov_al
14-12-2012, 04:28
У меня мерлиновские последние и на n-66 и n-16. Мне нужно при поднятии PPTP прописать маршрут. Вот как ?Вот так (https://github.com/RMerl/asuswrt-merlin/wiki/User-scripts).

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

kondratiy
15-12-2012, 13:13
Вот так (https://github.com/RMerl/asuswrt-merlin/wiki/User-scripts).

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

Я понял. Но с моим вопросом меня перенесли сюда. и всеравно не пойму как при старте PPTP прописывать маршруты

UPD, разобрался. /jffs/scripts/wan-start на n16 и /tmp/pptpd/ip-up на N-66 прописываем в них маршруты и все поднимается как надо.

ryzhov_al
28-02-2013, 08:41
Коллеги, хочу расставить все точки над «ы» в отношении подключения репозитория Entware на заводской прошивке роутеров
RT-N10U, RT-N15U, RT-N16, RT-N56U, RT-N65U, RT-N66U, RT-AC66U и на Merlin'овском моде для RT-N16, RT-N66U и RT-AC66U.

Для заводской прошивки* пользуйтесь этим методом (http://wl500g.info/showthread.php?30627).
Для мерлиновской прошивки со следующего релиза скрипт установки Entware будет частью прошивки.
Использование описанного в инструкции PeterV (http://wl500g.info/showthread.php?30086-%CF%EE%E4%EA%EB%FE%F7%E5%ED%E8%E5-%F0%E5%EF%EE%E7%E8%F2%E0%F0%E8%FF-Entware-%ED%E0-%EE%F0%E8%E3%E8%ED%E0%EB%FC%ED%EE%E9-%EF%F0%EE%F8%E8%E2%EA%E5-Asus-RT-N66U&p=248473#post248473) метода чревато порчей (http://wl500g.info/showthread.php?30627-Asus-RT-N-%D1%F2%E0%F0%F2%EE%E2%FB%E5-%F1%EA%F0%E8%EF%F2%FB-%E2-%E7%E0%E2%EE%E4%F1%EA%EE%E9-%EF%F0%EE%F8%E8%E2%EA%E5&p=256594#post256594) развёрнутого на USB-разделе софта
из-за того, что при старте роутера в него начинает вмешиваться логика заводской прошивки.

* PeterV провел препарацию азусовской логики в то время, когда указанные выше два метода ещё не были доступны.
За что ему большое спасибо.

mspuz
07-03-2013, 10:34
У меня RT-N66U с заводской прошивкой. Все устраивает и DLNA-сервер и DM, но ОЧЕНЬ хочется xupnpd. Возможно ли получить его оставив все остальное на местах? И еще вопрос - написано пользоваться "методом этим", а каким именно? Просто смонтировать раздел, перейти на entware и изменить стартовые скрипты? Хотелось по пунктам - что именно сделать. Спасибо.

Искренне извиняюсь, за беспокойство, но в интернете так и не смог найти информацию. В теме про стартовые скрипты мне не понятно откуда взять папку ENTWARE и возможно ли использовать этот метод без форматирования харда и совместно с заводскими программами (DM и DLNA)? Спасибо.

mr-butch
30-03-2013, 06:38
Коллеги, хочу расставить все точки над «ы» в отношении подключения репозитория Entware на заводской прошивке.. RT-N66U.

Подключаю репозитарий Entware по инструкции (http://wl500g.info/showthread.php?30086-%CF%EE%E4%EA%EB%FE%F7%E5%ED%E8%E5-%F0%E5%EF%EE%E7%E8%F2%E0%F0%E8%FF-Entware-%ED%E0-%EE%F0%E8%E3%E8%ED%E0%EB%FC%ED%EE%E9-%EF%F0%EE%F8%E8%E2%EA%E5-Asus-RT-N66U&p=248473#post248473). Все стартует и работает.
Но роутер не хочет перезагружаться. По команде reboot уходит в какой то спящий режим, аналогичный команде halt. То есть подключения по wi-fi и lan отваливаются и роутер так продолжает висеть. Помогает только выкл/вкл питания.
При этом при родном DownloadMaster'е все перезагружается штатно, наблюдается только при переходе на Entware. Пробовал разные прошивки роутера, сейчас стоит 3.0.0.4.354. На предыдущих наблюдалось тоже самое.

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

treegor
09-06-2013, 21:16
Приветствую всех, уважаемые коллеги. Извините если мой вопрос покажется вам оффтопом, но я хочу спросить про RT-N16. У меня заводская прошивка 3.0.0.4.260 с установленным optware. Меня интересует, есть ли возможность загружать свои првила для hotplug2 при старте системы. Пытался сохранить в script_usbhotplug получил такое:

gary@RT-N16: nvram get script_usbhotplug
# Canon LBP-810 USB Printer
PRODUCT == "4a9/260a/100" {
exec /opt/local/bin/printer_plug.sh %ACTION% %PRODUCT% ;
}
# Epson Stylus C65 USB printer
PRODUCT == "4b8/5/100" {
exec /opt/local/bin/printer_plug.sh %ACTION% %PRODUCT% ;
}
# Epson LX-300+ LPT printer over Prolific (PL2305) LPT-to-USB adapter
PRODUCT == "67b/2305/202" {
exec /opt/local/bin/printer_plug.sh %ACTION% %PRODUCT% ;
}
# My custom rule to fix scanner mode that faulty deteceted as GSM modem
SUBSYSTEM == usb, PRODUCT == "4b8/121/0", ACTION == add {
exec /usr/sbin/usb_modeswitch -v 04b8 -p 0121 -d ;
}

К сожалению не работает, сами правила и запускаемый скрипт вполне себе рабочие и в принципе с помощью кривых костылей цепляются при старте роутера и события обрабатываются как надо. Костыль в общем-то такой, добавил в /opt/.asusrouter ( /opt/hotplug2.rules - это копия оригинального файла с добавленными моими правилами, упомянутыми выше) :

rm /etc/hotplug2.rules
ln -s /opt/etc/hotplug2.rules /etc/hotplug2.rules
killall -s USR1 hotplug2
/sbin/hotplug2 --persistent
Постить листинг срипта наверное не нужно, скажу только что он создаёт в /dev симлинки на lp[0-2] с именами принтеров и запускает для них p910[0-2]d

Понимаю что "ugly hack", но в принципе готов-бы и смириться с этим - работает и ладно, но дело в том что если посмотреть ps то можно увидеть 4 работающих процесса "hotplug2 --persistent" и для каждого принтера работает 2 экземпляра p910nd при этом если принтеры выдернуть и воткнуть обратно то будет всё как положено - одни процесс p910nd на один принтер. Принтеры при этом печатают (кроме Canon, но это другая история) и сканнер сканирует, готов уже забить на эти "грабли", но что-бы спать с чувстовом исполненного долга обращаюсь за помощью к экспертам в embedded linux, сам я осваиваю эту сферу относительно недавно и чувствую нехватку знаний и документации, особенно по nvram и hotplug2.

doncelab
20-06-2013, 05:07
Здравствуйте. Имеем rt-n66u c 3 разделами (swap, opt(ext3), data(ext3)), ПО: dnla, torrent, motion, ftp, samba. Буду писать скрипт под себя.

1. Сообщаем ядру что есть стартовый скрипт.
2. Из стартового скрипта запускаем свой скрипт т.к. стартовый скрипт закроется через 3 секунды.
3. В своем скрипте создаем ссылку с /tmp/mnt/.../opt на /opt
4. Сообщаем где находится swap раздел.
5. Нужно ли запускать проверку разделов ext3 на случай отключения электричества или это не критично?
6. Запускаем необходимые программы.

Правильно ли я понял порядок действий? Может что то добавить или убрать? Можно ли пример по 6 пункту?

samba и ftp в сток прошивке Стоит ли их заменить на те которые в репозитории?
Сейчас на rt-n66u при копировании по samba протоколу демон smbd жрет под 50-80%, это нормально?

flashfs save && flashfs commit && flashfs enable

Прошу объяснить для чего нужны данные команды? Достаточно часто их приводят.
Для сохранения во внутреннюю память маршрутизатора? или это общий механизм сохранения?

ildar
20-06-2013, 05:56
Прошу объяснить для чего нужны данные команды? Достаточно часто их приводят. Для сохранения во внутреннюю память маршрутизатора? или это общий механизм сохранения?

Тут все подробно http://wl500g.info/showpost.php?p=159244&postcount=1503

doncelab
20-06-2013, 07:48
Везде в документации натыкаюсь монтирование swap по /dev/sda. Возможно ли монтирование по метке? Дабы поднять универсальность и атомность.

Кто уже тестировал запись и чтении по SAMBA и FTP, что все таки лучше использовать? Так как по SAMBA загрузка процессора была 50-80% на rt-n66u

ryzhov_al
20-06-2013, 14:50
FTP, причём на AsusWRT-Merlin, где отключена одна тормозная опция (http://www.linksysinfo.org/index.php?threads/speeding-up-the-samba-by-30.52240/#post-202899).

doncelab
26-06-2013, 16:53
Помогите со скриптами

Создаю файл /tmp/script_usbumount.tmp

#!/bin/sh

cat << EOF > /tmp/script_usbumount.tmp
if [ \$1 = "/tmp/mnt/ENTWARE" ]
then
/opt/usr/sbin/services-start.sh
fi
EOF

Потом еще 2 команды

nvram set script_usbmount="`cat /tmp/script_usbmount.tmp`"
nvram commit

Создаю еще файл /opt/usr/sbin/services-start.sh

#!/bin/sh

# Wait up to 15 seconds to make DATA partition is mounted
i=0
while [ $i -le 15 ]
do
if [ -d /tmp/mnt/DATA ]
then
break
fi
sleep 1
i='expr $1 + 1'
done

# Mount SWAP partition
/sbin/swapon /dev/sda1

# Starting Entware services
/opt/etc/init.d/rc.unslung start

# Open Firewall port to the Transmission
/usr/sbin/iptables -I INPUT -p tcp --destination-port 51413 -j ACCEPT
/usr/sbin/iptables -I INPUT -p udp --destination-port 51413 -j ACCEPT

# Configure MC
export TERMINFO="/opt/share/terminfo"
export LANG="ru_RU.UTF-8"
export TERM=xterm

Первый скрипт почемуто не запускается в логах пусто. Если запустить второй скрипт то он запускает сервисы и подключает своп, но не открывает порты и не вносятся данные по MC. Где ошибся?

Подскажите куда прописать свой скрипт, чтобы стоковая прошивка смогла его запустить?
Или выполнить команды из https://github.com/ryzhovau/asuswrt-ryzhov#compilation

erzengel
12-08-2013, 23:29
И еще вопрос - написано пользоваться "методом этим", а каким именно? Просто смонтировать раздел, перейти на entware и изменить стартовые скрипты? Хотелось по пунктам - что именно сделать. Спасибо.


Тоже долго мучался в поиске инструкций в этой теме. что ж, если гора не хочет идти к Магомеду...

1. командой "mount" проверяем подключена ли флешка и куда она подключена. должно быть где-то в конце списка что-то вроде /dev/sda1 on /tmp/mnt/$disklabel

2. Создаем ссылку на каталог /opt куда будет устанавливаться ENTWARE
"ln -sf /tmp/mnt/$disklabel /tmp/opt"

3. Переходим в каталог opt
"cd /opt"

4. Устанавливаем ENTWARE
"wget http://wl500g-repo.googlecode.com/svn/ipkg/entware_install.sh
chmod +x ./entware_install.sh
./entware_install.sh"

5. правим стартовые скрипты по инструкции ryzhov_al
" cat << EOF > /tmp/script_usbumount.tmp
if [ \$1 = "/tmp/mnt/$disklabel" ]
then
/opt/etc/init.d/rc.unslung stop
fi
EOF
nvram set script_usbumount="`cat /tmp/script_usbumount.tmp`"
cat << EOF > /tmp/script_usbmount.tmp
logger -t \$(basename \$0) "started [\$@]"
if [ \$1 = "/tmp/mnt/$disklabel" ]
then
ln -sf \$1 /tmp/opt
/opt/etc/init.d/rc.unslung start
fi
EOF
nvram set script_usbmount="`cat /tmp/script_usbmount.tmp`"
nvram commit"
6. Перезагружаем роутер
"reboot"

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

bel
16-11-2013, 02:00
как его правильно установить? делал согласно https://github.com/RMerl/asuswrt-merlin/wiki/Installing-Transmission-through-Entware
но не получается сделать автозапуск transmisson
роутер RT-AC66U прошивка мерлина последняя

Заметил интересную вещь, если подключить HDD и перегрузить роутер то transmisson стартует

yagmort
19-11-2013, 14:35
Присоедниняюськ вопросу, после установке entware на прошивку от merlina, установил transmission, после перезагрузки transmission не стартует.

Scripter
16-01-2014, 13:26
Приветствую, у меня роутер RT-N66U с стандартной прошивкой.
С помощью статьи https://code.google.com/p/wl500g-repo/wiki/Using установил пакет SVN, настроил, запускается вручную, всё работает. А вот автоматический запуск при перезагрузке роутера мне не даётся.

Пробовал так:
путь: usr\local\sbin
имя: post-mount (так же пробовал post-mount)
содержимое:
#!/bin/sh
/opt/etc/init.d/S66svn

S66svn лежит в \etc\init.d и содержит:
#!/bin/sh
/opt/bin/svnserve -d -r /opt/share/svn/repos/

Будьте добры, помогите или ткните носом в ссылку. Спасибо!

ykpacmb
16-01-2014, 20:31
Нужно дать права на запуск скрипта, как-то так :
chmod +x usr/local/sbin/post-mount
chmod +x /opt/etc/init.d/S66svn
далее для сохранения файлов в флэш памяти делаем:
flashfs save && flashfs commit && flashfs enable

P.S. А еще почему у Вас в одном случае косой слэш, а в другом обратный...

erzengel
17-01-2014, 17:29
Пробовал так:
путь: usr\local\sbin
имя: post-mount (так же пробовал post-mount)
содержимое:
#!/bin/sh
/opt/etc/init.d/S66svn

S66svn лежит в \etc\init.d и содержит:
#!/bin/sh
/opt/bin/svnserve -d -r /opt/share/svn/repos/

Будьте добры, помогите или ткните носом в ссылку. Спасибо!
Это сработало бы в прошивке от Олега, а вот в вашем девайсе алгоритм инициализации, как уже говорилось, взят из Tomato.
Вам нужно править тот же скрипт, которым запускается Entware
и после " /opt/etc/init.d/rc.unslung start"
добавить заветное "/opt/etc/init.d/S66svn"
и как говорил ykpacmb про права на запуск и про "nvram commit && reboot" не забудьте

Scripter
17-01-2014, 21:27
Вам нужно править тот же скрипт, которым запускается Entware
и после " /opt/etc/init.d/rc.unslung start"

а не подскажите где лежит скрипт этот и какое у него имя, а то нигде не нашел использование:

/opt/etc/init.d/rc.unslung start

erzengel
17-01-2014, 22:02
А у вас вообще сервисы Entware запускаются после загрузки?
Ну, в инструкции от ryzhov_al это /tmp/script_usbmount.tmp

Scripter
18-01-2014, 00:37
ага, нашел:
http://wl500g.info/archive/index.php/t-30627.html


cat ./nvram.sh
cat: can't open './nvram.sh': No such file or directory

erzengel
18-01-2014, 17:56
наверное, лучше тут смотреть http://wl500g.info/showthread.php?30627-%D1%F2%E0%F0%F2%EE%E2%FB%E5-%F1%EA%F0%E8%EF%F2%FB-%E2-%F1%F2%EE%EA%EE%E2%EE%E9-%EF%F0%EE%F8%E8%E2%EA%E5-Asus-RT-N66U-AC66U&p=262291#post262291

Scripter
19-01-2014, 00:36
сделал все как указано в ссылке, перезапустил роутер - не помогло, поднимается сервер svn только в ручную.


cat << EOF > /tmp/script_usbumount.tmp
if [ \$1 = "/tmp/mnt/$disklabel" ]
then
/opt/etc/init.d/rc.unslung stop
fi
EOF

nvram set script_usbumount="`cat /tmp/script_usbumount.tmp`"

cat << EOF > /tmp/script_usbmount.tmp
logger -t \$(basename \$0) "started [\$@]"
if [ \$1 = "/tmp/mnt/$disklabel" ]
then
ln -sf \$1 /tmp/opt
/opt/etc/init.d/rc.unslung start
/opt/etc/init.d/S66svn
fi
EOF

nvram set script_usbmount="`cat /tmp/script_usbmount.tmp`"
nvram commit
reboot

erzengel
19-01-2014, 09:20
Проблема может быть в том, что у этого скрипта (usbmount) ограничено время выполнения. Попробуйте в этом скрипте прописать запуск другого скрипта, который и будет запускать все необходимые сервисы. в этой ветке уже была описана подобная схема.

Scripter
19-01-2014, 22:09
Делаю так:

cat << EOF > /tmp/script_usbumount.tmp
logger -t $(basename $0) "started [$@]"

if [ $1 = "/tmp/mnt/SDCARD" ]
then
ln -sf $1 /tmp/opt
[ -e "/opt/var/dtach_usbmount" ] && rm -f /opt/var/dtach_usbmount
/opt/bin/dtach -n /opt/var/dtach_usbmount /opt/usr/sbin/services-start.sh
fi
EOF

ок


cat << EOF > /tmp/services-start.sh
#!/bin/sh

# Wait up to 15 seconds to make sure TANK partition is mounted
i=0
while [ $i -le 15 ]
do
if [ -d /tmp/mnt/TANK/Video ]
then
break
fi
sleep 1
i=`expr $i + 1`
done

# Starting Entware services
/opt/etc/init.d/rc.unslung start
/opt/etc/init.d/S66svn
EOF
получаю: expr: syntax error

mspuz
23-01-2014, 14:08
Роутер RT-N16 и флешка на 2Гб. Прошивка заводская. Выполняю:

umount /dev/sda1
mkfs.ext3 /dev/sda1
mount /dev/sda1 /tmp/mnt/sda1/
mkdir /tmp/mnt/sda1/opt
mount -obind /tmp/mnt/sda1/opt/ /opt/

и вот на последней строке выдает:

mount: mounting /tmp/mnt/sda1/opt on /opt failed: No such file or directory

Проверял - папка opt есть, видно и через ls и df и в проводнике, но почему ее не видит mount????? Уже всю голову сломал.

don-pedro
23-01-2014, 14:28
mount -obind /tmp/mnt/sda1/opt/ /opt/
mount: mounting /tmp/mnt/opt on /opt failed: No such file or directory

Неувязочка?

mspuz
24-01-2014, 11:03
Неувязочка?
Ой, да, просто уже пробовал по всякому от безъисходности и скопировал не тот вариант. Еще забыл сказать - если установить DM, то монтировать opt получается.

Неужели проблема настолько очевидна, что никто даже не считает нужным подсказать? Установил DM, после этого создал папку и монтировал opt, но при установке в данную папку репозитария - все подвисает и через минут 20 пишет, что все прошло, хотя все созданные папки пусты. Поэтому пытаюсь сделать все на пустой флешке. Может дело в объеме 2 Гб?

MercuryV
24-01-2014, 14:46
Неужели проблема настолько очевидна, что никто даже не считает нужным подсказать?
Чтобы подсказать, нужно пользоваться заводской прошивкой. Тут мало у кого она сохранилась, а на местной прошивке или прошивке Мерлина подобных проблем нет.

Установил DM
Это уже может быть источником разнообразных проблем. DM - это optware. Вместе с Entware - источник глюков.

пытаюсь сделать все на пустой флешке. Может дело в объеме 2 Гб?
2 Гб - точно не проблема.

А в общем и целом - всё это оффтоп в теме "Обновление репозитория Entware".
С этой темой (http://wl500g.info/showthread.php?30627) знакомились?

erzengel
26-01-2014, 13:01
Проверял - папка opt есть, видно и через ls и df и в проводнике, но почему ее не видит mount????? Уже всю голову сломал.
Это она на флешке есть, а в файловой системе заводской прошивки эта папка находится по адресу /tmp/opt

PS. Если mount не работает то можно создать символьную ссылку (ln -sf)

mspuz
26-01-2014, 14:12
Это она на флешке есть, а в файловой системе заводской прошивки эта папка находится по адресу /tmp/opt

PS. Если mount не работает то можно создать символьную ссылку (ln -sf)

Точно, уже разобрался с этим, но начались проблемы с автозагрузкой всего этого и я решил прошиться Мерлиновской прошивкой. Где-то прочитал, что в последних версиях данной прошивки репозитарий entware уже включен. Что это зачит? Т.е. его не нужно устанавливать? Если да, то как его использовать?

erzengel
26-01-2014, 14:54
Автозагрузка реализуется через правку стартовых скриптов. Тут вся тема этому вопросу посвящена. Для entware есть своя тема. Если ты не знаешь как им пользоваться, то зачем было устанавливать?!
PS. opkg install nano
opkg install mc
opkg install $что тебе там еще вздумается

MercuryV
26-01-2014, 18:30
я решил прошиться Мерлиновской прошивкой. Где-то прочитал, что в последних версиях данной прошивки репозитарий entware уже включен. Что это зачит? Т.е. его не нужно устанавливать? Если да, то как его использовать?
Про это и про множество других полезных вещей написано в wiki Мерлина (https://github.com/RMerl/asuswrt-merlin/wiki/Entware)

brightred
08-05-2014, 09:06
Коллеги, попробовал, не работает.
Устройства показывает правильно, а вот функция ресета не работает. К примеру:


admin@RT-N66U:/# usbreset
Usage:
usbreset PPPP:VVVV - reset by product and vendor id
usbreset BBB/DDD - reset by bus and device number
usbreset "Product" - reset by product name

Devices:
Number 001/004 ID 058f:6366 Mass Storage Device
Number 001/003 ID 1a40:0201 USB 2.0 Hub [MTT]
Number 001/002 ID 058f:6254 USB2.0Hub
admin@RT-N66U:/# usbreset 001/003
Resetting USB 2.0 Hub [MTT] ... can't open [No such file or directory]

Как мне кажется путь /dev/bus/usb/ на данном устройстве+прошивке не валиден...

А что думаете вы?

ryzhov_al
08-05-2014, 09:14
Как мне кажется путь /dev/bus/usb/ на данном устройстве+прошивке не валиден...Так и есть: на падавановской или энтузиасткой прошивках эти пути валидны, на asuswrt и asuswrt-merlin — нет. Правильный выход: переписать usbreset, неправильный — создать в /dev/bus/usb соответвующие симлинки и попробовать использовать usbreset ними.

eska
08-09-2014, 14:05
Привет, рассматриваю этот роутер как замену Premium v2 с прошивкой от Олега.
В Premium у меня есть несколько несколько доп. настроек, которые не хотелось бы потерять:
1) Установка собственных правил для iptables;
2) Статическое добавление соответствий mac-ip в таблицу arp (с помощью ip neigh):
3) Пара скриптов, которые я иногда запускаю через "Выполнить команду" web-интерфейса роутера.

Можно ли это все делать на N66 средствами а) штатной или б) кастомной прошивки?
Разумеется мне нужно, чтобы все изменения жили и после перезагрузки (сейчас использую для этого post-boot и post-firewall)

ryzhov_al
08-09-2014, 14:19
Можно ли это все делать на N66 средствами а) штатной или б) кастомной прошивки?Всё это можно сделать любой кастомной прошивкой. Если не хочется далеко отходить от заводского функционала, то можно поставить asuswrt-merlin —*клона заводской прошивки с расширенными возможностями.

eska
08-09-2014, 14:49
А какие еще кастомные прошивки для этого устройства, кроме asuswrt-merlin ?

Правильно ли я понимаю, что основные отличия N66 от N16 - это более мощный процессор, больше памяти и наличие 5 ггц?
Собственно мне вообще не нужны никакие "фишки" типа USB, принтеров, торрентов и т.п., основная цель замены Premium, который, кстати, прекрасно работает - увеличить скорость wifi за счет n-протокола.

ryzhov_al
08-09-2014, 15:05
А какие еще кастомные прошивки для этого устройства, кроме asuswrt-merlin ?TomatoUSB, а также DD-WRT и OpenWRT без поддержки аппаратного ускорения NAT.


Правильно ли я понимаю, что основные отличия N66 от N16 - это более мощный процессор, больше памяти и наличие 5 ггц?
Собственно мне вообще не нужны никакие "фишки" типа USB, принтеров, торрентов и т.п., основная цель замены Premium, который, кстати, прекрасно работает - увеличить скорость wifi за счет n-протокола.Можно и так сказать. Скорость Wi-Fi в вашем случае также может быть увеличена за счёт 3T3R, если клиенты способны это использовать.

eska
17-09-2014, 14:36
Всё это можно сделать любой кастомной прошивкой. Если не хочется далеко отходить от заводского функционала, то можно поставить asuswrt-merlin —*клона заводской прошивки с расширенными возможностями.
Спасибо, так и сделал - поставил asuswrt-merlin.
Настроил все, что мне нужно. Порадовало наличие /jffs, которую не нужно специально сохранять при перезагрузке, а также наличие entware и скрипта в прошивке для его автоматической установки.
Расстроило - отсутствие в web-интерфейсе возможности запустить произвольную команду (а-ля командная строка).

Но это ремарки, а по теме возник вопрос: как в shell менять такие параметры, как "Включить веб-доступ из WAN", "Порт веб-доступа из WAN" и "Allow only specified IP address" (для доступа к веб-интерфейсу из WAN).

ryzhov_al
17-09-2014, 14:42
Всё, что вы видите в WebUI сохранено в NVRAM. Следственно, меняя переменные NVRAM и перезапуская нужные сервисы можно рулить прошивкой.

eska
21-09-2014, 11:00
Всё, что вы видите в WebUI сохранено в NVRAM. Следственно, меняя переменные NVRAM и перезапуская нужные сервисы можно рулить прошивкой.
А можно подробнее насчет перезапуска сервисов?
Вот я нашел параметр nvram, который отвечает за web-доступ из WAN (misc_http_x).
Меняю его значение с помощью команды nvram set misc_http_x=1 (включение) или nvram set misc_http_x=0 (выключение), но этого недостаточно.
nvram commit тоже недостаточно.
Но, если зайти в web-интерфейс, то вижу, что параметр изменен, но он начнет действовать, только если в web-интерфейсе нажать "Применить".
Как это "Применить" сделать в командной строке?

ryzhov_al
21-09-2014, 12:16
А можно подробнее насчет перезапуска сервисов?
service {start|stop|restart}_nameНапример,

service restart_dnsmasq
Список сервисов можно посмотреть здесь (https://github.com/RMerl/asuswrt-merlin/blob/master/release/src/router/rc/services.c).

eska
21-09-2014, 21:17
С нотацией запуска сервисов понятно, спасибо.
А какой именно сервис нужно перезапускать для случая включения/выключения доступа к web-интерфейсу из WAN ?
Программный код по ссылке на гитхабе почему-то не дал мне ответ на этот вопрос...

AndreyPopov
21-09-2014, 21:40
Расстроило - отсутствие в web-интерфейсе возможности запустить произвольную команду (а-ля командная строка).

Но это ремарки, а по теме возник вопрос: как в shell менять такие параметры, как "Включить веб-доступ из WAN", "Порт веб-доступа из WAN" и "Allow only specified IP address" (для доступа к веб-интерфейсу из WAN).

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

учите команды
nvram get
nvram set
nvram commit
nvram show
nvram show | grep <шаблон>


С нотацией запуска сервисов понятно, спасибо.
А какой именно сервис нужно перезапускать для случая включения/выключения доступа к web-интерфейсу из WAN ?
Программный код по ссылке на гитхабе почему-то не дал мне ответ на этот вопрос...

По умолчанию для доступа из WAN пробрасываемся порт 8080 на внутренний 80 - при нажатии Применить проверяется значение указанного значения nvram и убирается про рос порта.

eska
22-09-2014, 10:23
По умолчанию для доступа из WAN пробрасываемся порт 8080 на внутренний 80 - при нажатии Применить проверяется значение указанного значения nvram и убирается про рос порта.
ну это я понимаю )
Вопрос был в том, как командами в командной строке повторить то же самое:
- убрать/задать проброс порта (iptables очевидно?)
- перезапустить сервис (он так и называется firewall?)

с помощью анализа результатов iptables-save сделал следующие скрипты.
Для включения web-доступа из WAN:


nvram set misc_http_x=1
nvram commit

iptables -A INPUT -d 192.168.9.1 -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -d 192.168.9.1 -p tcp -m tcp --dport 8443 -j ACCEPT

iptables -t nat -I VSERVER -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.9.1:80
iptables -t nat -I VSERVER -p tcp -m tcp --dport 8443 -j DNAT --to-destination 192.168.9.1:8443


Для выключения web-доступа из WAN:

nvram set misc_http_x=0
nvram commit

iptables -D VSERVER -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.9.1:80
iptables -D VSERVER -p tcp -m tcp --dport 8443 -j DNAT --to-destination 192.168.9.1:8443

iptables -D INPUT -d 192.168.9.1 -p tcp -m tcp --dport 80 -j ACCEPT
iptables -D INPUT -d 192.168.9.1 -p tcp -m tcp --dport 8443 -j ACCEPT

Но есть две проблемы:
1) После включения первым скриптом web-доступ из WAN не появляется, хотя результат в виде iptables-save соответствует тому, который появляется после включения доступа из WAN непосредственно в web-интерфейсе.
2) При работе второго скрипта не удаляются правила VSERVER - iptables ругается, что не может их найти (хотя в iptables-save они есть). Видимо формат команды удаления не совсем верный?

Конструктивные идеи принимаются :confused:

net-slider
16-10-2014, 11:01
Андрей добрый день.
Не подскажете: Как поместить сроку в автозапуск на стоковой прошивке?
/tmp/mnt/sda/asusware/xupnpd start
я так понимаю надо дождаться пока mount сработает
Речь про Rt-n66u.

За оффтоп извиняюсь

AndreyPopov
16-10-2014, 11:06
Андрей добрый день.
Не подскажете: Как поместить сроку в автозапуск на стоковой прошивке?
/tmp/mnt/sda/asusware/xupnpd start
я так понимаю надо дождаться пока mount сработает
Речь про Rt-n66u.
тут есть отдельная тема - стартовые скрипты на стоковой прошивке

http://wl500g.info/showthread.php?30627-Стартовые-скрипты-в-прошивке-AsusWRT-на-Asus-RT-N16-N66U-AC66U

net-slider
19-10-2014, 13:46
Народ, подскажите, я не втыкаю:
Мне нужно после mount выполнить одну строчку xupnpd start прошивка сток с entware, как сделать?
спасибо

ps rt-n66u (sdb - с софтом, sda1 - хард под minidlna)

dmw
27-11-2014, 14:23
Поднял на компе Radius-сервер (Freeradius). В настройках роутера (Asus RT-N66U) настроил авторизацию по WPA2 Entrprise через Radius (порт 1812). Авторизация клиентов работает, все отлично. А как теперь настроить чтобы роутер отправлял статистику? Сервер слушает accaunting-пакеты на 1813 порту. От другой точки (TP-Link mr3020) с прошивкой dd-wrt статистика приходит нормально, но там и настройки есть соответствующие:

9956

На Asus RT-N66U ставил прошивки: dd-wrt и tomatousb, везде отсутствуют такие настройки.
Помогите разобраться? Какая прошивка поддерживает Accaunting для Asus RT-N66U?
Может если через web не настроить, то скрипт есть какой нибудь чтобы периодически скидывал статистику на 1813-порт radius-а?

ale_xb
10-09-2015, 00:02
может кто поделиться, пожалуйста, исходными скриптами инициализации для запуска доп.сервисов, а именно:

/opt/etc/init.d/rc.unslung
/opt/etc/init.d/rc.func

я свои испортил до безобразия и сам себя окончательно запутал.

ryzhov_al
10-09-2015, 07:44
Пожалуйста (https://github.com/Entware/rtndev/tree/master/uclibc-opt/files).

ale_xb
10-09-2015, 12:17
Вот спасибо! А я все никак не мог сообразить, где их взять.

Сразу следующий вопрос: где можно почитать правила/требования к стартовым скриптам, помещаемым в /opt/etc/init.d/ ? Т.е. какие параметры через какие переменные они могут/должны передавать в rc.unslung / rc.func $ACTION - это самое простое и понятное, но, например, $CALLER - уже не понял, где она формируется или ее следует прописывать в своем скрипте для запуска приложения/службы? А еще есть $CRITICAL - для каких целей? $ENABLED и $DESC - думаю, понятно, для чего. $PRECMD, $PREARGS, $ARGS - как будто, тоже понятно, $PROC - прописывается в своем скрипте? Хорошо бы с примерами, где все это используется.

ryzhov_al
10-09-2015, 13:09
rc.unslung (https://github.com/Entware/rtndev/blob/master/uclibc-opt/files/rc.unslung) прост как валенок, мне пользователи указывали на то, что он останавливает сервисы в том же порядке, что и запускает. Т.е. остановка идёт не в ожидаемом порядке S99xxx, S80yyy,… S00zzz, а наоборот. Насколько это критично и нужно ли вообще это исправлять я пока не решил.

ale_xb
10-09-2015, 13:21
с этим-то я сразу разобрался, но в rc.func имеются переменные, про которые я говорил. Не понятно, то ли их следует прописывать в своем стартовом скрипте, то ли они / часть их где-то формируется, но я не нашел

Нашел и посмотрел на GitHub стартовые скрипты для некоторых служб/приложений. Большая часть вопросов отпала. С переменной CALLER только так и не понял, кто ее задает.

ryzhov_al
10-09-2015, 14:10
Я ошибся в предыдущем посте. С остановкой всё впорядке, а вот с рестартом — нет.


с этим-то я сразу разобрался, но в rc.func имеются переменные, про которые я говорил. Не понятно, то ли их следует прописывать в своем стартовом скрипте, то ли они / часть их где-то формируется, но я не нашел

Нашел и посмотрел на GitHub стартовые скрипты для некоторых служб/приложений. Вроде, часть вопросов отпала, но например, смутило, что во всех просмотренных мною стартовых скриптов, например, S10cron используется переменная PROCS, а в rc.func - $PROC Это нормально, т.е. я что-то не понял?Всё правильно. Смысл того цикла прояснится, если представить значение PROCS="bin1 bin2".

PS История скриптов идёт отсюда (http://wl500g.info/showthread.php?13220).

ale_xb
11-09-2015, 11:12
PS История скриптов идёт отсюда (http://wl500g.info/showthread.php?13220).
Спасибо за наводку!

Попутно следующий вопрос из несколько другой оперы: поставил пакет procps:

root@alfa:/opt/lib# opkg install -V2 procps
opkg_conf_parse_file: Loading conf file /opt/etc/opkg.conf.
pkg_hash_load_feeds:
pkg_hash_load_status_files:
pkg_info_preinstall_check: Updating file owner list.
Installing procps (3.2.8-1) to root...
Downloading http://entware.wl500g.info/binaries/mipselsf/procps_3.2.8-1_mipselsf.ipk.
pkg_run_script: Running script /tmp/opkg-W7AMED/procps-zpbhhm/preinst.
opkg_install_pkg: Installing maintainer scripts.
opkg_install_pkg: Installing data files for procps.
install_data_files: Extracting data files to /.
pkg_write_filelist: Creating //opt/lib/opkg/info/procps.list file for pkg procps.
opkg_install_pkg: Resolving conf files for procps
opkg_configure_packages: Configuring unpacked packages.
opkg_configure_packages: Reordering packages before configuring them...
Configuring procps.
pkg_run_script: Running script //opt/lib/opkg/info/procps.postinst.
write_status_files_if_changed: Writing status file.
pkg_write_changed_filelists: Saving changed filelists.
Как видно, работает все равно стандартный ps из BusyBox:

root@alfa:/opt/lib# ps af
ps: invalid option -- a
BusyBox v1.23.2 (2015-08-03 13:23:03 CEST) multi-call binary.

Usage: ps

Show list of processes

w Wide output

root@alfa:/opt/lib#
Cудя по содержимому скачанного при установке procps файла procps_3.2.8-1_mipselsf.ipk в нем имеются только библиотека libproc-3.2.8.so, в /opt/bin, /opt/sbin ничего нового не устанавливается. Вот содержимое /opt/lib/opkg/info/procps.list:

/opt/lib/libproc-3.2.8.so Поэтому, например, команды w и skill не добавляются, сам ps не становится полноценным.

Что мне следует у себя проверить/поправить, чтобы все заработало, как должно? Вот содержимое /opt/lib/opkg/info/procps.control:

Package: procps
Version: 3.2.8-1
Depends: libc, libncurses
Source: feeds/packages/utils/procps
License: GPL-2.0
LicenseFiles: COPYING COPYING.LIB
Section: utils
Maintainer: Gergely Kiss <mail.gery@gmail.com>
Architecture: mipselsf
Installed-Size: 28399
Description: procps is the package that has a bunch of small useful utilities that give
information about processes using the /proc filesystem. The package
includes the programs ps, top, vmstat, w, kill, free, slabtop, and skill.

ryzhov_al
11-09-2015, 12:01
Попутно следующий вопрос из несколько другой оперы: поставил пакет procps:

root@alfa:/opt/lib# opkg install -V2 procps
...
Как видно, работает все равно стандартный ps из BusyBox:

root@alfa:/opt/lib# ps af
ps: invalid option -- a
Это метапакет. Каждый аплет procps лежит в отдельном пакете, поэтому выполняйте:

opkg install procps-ps
Такая структура унаследована у OpenWrt, в частности, proсps размазан на полтора десятка пакетов:

admin@RT-N66U:/tmp/home/root# opkg find procps-*
procps-free - 3.2.8-1 - Installs the applet free.
procps-pgrep - 3.2.8-1 - Installs the applet pgrep.
procps-pkill - 3.2.8-1 - Installs the applet pkill.
procps-pmap - 3.2.8-1 - Installs the applet pmap.
procps-ps - 3.2.8-1 - Installs the applet ps.
procps-pwdx - 3.2.8-1 - Installs the applet pwdx.
procps-skill - 3.2.8-1 - Installs the applet skill.
procps-slabtop - 3.2.8-1 - Installs the applet slabtop.
procps-snice - 3.2.8-1 - Installs the applet snice.
procps-tload - 3.2.8-1 - Installs the applet tload.
procps-top - 3.2.8-1 - Installs the applet top.
procps-vmstat - 3.2.8-1 - Installs the applet vmstat.
procps-w - 3.2.8-1 - Installs the applet w.
procps-watch - 3.2.8-1 - Installs the applet watch.

ale_xb
11-09-2015, 13:17
Вам еще раз большое спасибо за терпеливые ответы на вопросы новичка!
Наконец, ps у меня заработала. Не понял только, почему по умолчанию без указания полного пути к ней срабатывает ps из BusyBox, несмотря на правильную переменную PATH:
root@alfa:/opt/bin# echo $PATH
/opt/usr/sbin:/opt/sbin:/opt/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin

ryzhov_al
11-09-2015, 14:52
Наконец, ps у меня заработала. Не понял только, почему по умолчанию без указания полного пути к ней срабатывает ps из BusyBox, несмотря на правильную переменную PATHОболочка кэширует пути к бинарникам, чтобы не искать их повторно.
При следующем входе в консольный сеанс всё будет нормально.

ale_xb
11-09-2015, 15:44
Оболочка кэширует пути к бинарникам, чтобы не искать их повторно.
При следующем входе в консольный сеанс всё будет нормально.
Именно так! Ну вот, узнал еще что-то новенькое для себя!

Скажите, пожалуйста, а встроенный wget умеет https ? У меня что-то не получается им скачивать файлы с GitHub, например. Получаю сообщение "wget: error getting response: Connection reset by peer"
curl в свою очередь, в справке, вроде, как пишет, что может, но при попытке скачивания указывает на отключенную такую возможность в библиотеке "curl: (1) Protocol https not supported or disabled in libcurl"

ryzhov_al
11-09-2015, 15:57
Встроенный в busybox не умеет HTTPS, надо устанавливать внешний:

opkg install wget

ale_xb
11-09-2015, 23:08
еще один последний на сегодня вопрос: я не вижу в репозитарии Entware man. Как мне его установить?

satch
12-09-2015, 15:46
Подозреваю что пакета man не будет т.к. другие пакеты собраны без поддержки документации :)

ale_xb
12-09-2015, 17:14
Жаль, в optware все было

doncelab
29-09-2015, 22:34
Здравствуйте. Установил на RT-N66U прошивку от Мерлина, настроил стартовые скрипты, смонтировал разделы, все нормально. Но при отключении питания обнуляеться раздел JFFS, хотя перезагрузку переживает нормально. В настройках убрана галка форматировать раздел JFFS. Прошивка последняя 378.55. В чем может быть проблема?

capau
14-10-2015, 14:10
не сохраняются настройки vsftpd
редактирую файл в mc, сохраняю
делаю рестарт FTP через админку роутера
файл vsftpd восстанавливается в первоначальное значение
как победить?
з.ы. прошивка мерлиновская

ryzhov_al
14-10-2015, 18:57
не сохраняются настройки vsftpd
редактирую файл в mc, сохраняю
делаю рестарт FTP через админку роутера
файл vsftpd восстанавливается в первоначальное значение
как победить?
з.ы. прошивка мерлиновскаяПрошивочным vsftpd управляет прошивка. В т.ч. прошивка формирует конфиг перед перезапуском vsftpd.
См. как задать свой конфиг здесь (https://github.com/RMerl/asuswrt-merlin/wiki/Custom-config-files).

Leks
10-11-2015, 22:59
Добрый вечер.
Позавчера обновил прошивку Asus RT-N66U с 378.55(Merlin) на 378.56_2(Merlin). После обновления попросили вручную перезагрузить роутер. Перезагрузил. И все как будто нормально. На роутере установлен entware, стоят разные полезные программы (в частности Asterisk, proftpd, lighttpd), и все это прекрасно запустилось, как обычно.
Однако, если теперь в /opt/etc создать какой-нибудь файл (и файл создается), то после перезагрузки он бесследно исчезает.
Поясню у меня в RT-N66U вставлен microSD и entware распологается на ней. /opt/etc = /mnt/TRANSCEND/entware/etc Т.е. фактически файл создается на microSD, но после перезагрузки файл исчезает. Также попробовал поставить пакет, например dnscrypt-proxy. Он ставится и после выполнения "opkg list-installed" отображается. Также появляется команда в /opt/etc/init.d
Перезагружаю роутер: "opkg list-installed" пакет dnscrypt-proxy не отображает, в /opt/etc/init.d команда на запуск исчезает.
В web-интерфейсе роутера разумеется стоит как и стояло до обновления прошивки "Enable JFFS custom scripts and configs = Да".

Поиск ответов не дал. Куда копать?

sasa1978
11-11-2015, 05:28
У меня было точно так же с симптомами один в один. Мне помогла замена флешки. Я подозреваю что она просто спеклась внутри роутера от температуры. Замененная флешка, кстати, проработала потом долго и без проблем. Фирму производителя к сожалению не помню

Leks
11-11-2015, 10:34
У меня было точно так же с симптомами один в один. Мне помогла замена флешки. Я подозреваю что она просто спеклась внутри роутера от температуры. Замененная флешка, кстати, проработала потом долго и без проблем. Фирму производителя к сожалению не помню

Да, спасибо, за наводку. Не думал, что флешка могла накрыться, т.к. файлы на ней создавались (вроде). Зашел через ssh: создаю файлы, копирую, Проходит минут 5 и вдруг ничего скопировать, создать не удается: "Read-only file system". Теперь думаю, если флешку новую брать, то выносную или опять microSD вставить внуть роутера? Наверно лучше выносную, чтобы не спеклась больше.
Только вопрос: технически/программно разница есть какая-нибудь в настройках Entware? Или в чем-то другом?

sasa1978
11-11-2015, 11:02
Я когда флешку менял, подумал что если и эта сгорит, то буду уже выносную брать. Флешка не сгорела и проработала без проблем примерно еще полтора года пока я не поменял 66-й на 87-й.

> технически/программно разница есть какая-нибудь в настройках Entware?

Максимум проблема, которая (IMHO) может появиться, это смена буквы диска (к примеру была sda, стала sdb). Однако, если при форматировании флешки вы воспользовались советом уважаемого Рыжова, и присвоили метку диску, и новому диску присвоите такую же метку, то проблем вообще никаких возникнуть не должно.

Satoorn
10-02-2016, 17:20
Подниму тему.
Подскажите пожалуйста. Прошивка Merlin. Как отключить самбу? В вэб интерфейсе нет настроек. В каком каталоге находится скрипты на автозагрузку?

Satoorn
11-02-2016, 14:41
https://forums.freenas.org/index.php?threads/transmission-error-udp-failed-to-set-receive-buffer-please-help.15203/