IMHO, это не верный путь. WebUI должен сохранять что-либо в NVRAM, а сам файл /jffs/crontabs/admin должен формироваться при (ре)старте соответствующего сервиса.
ну если в nvram сохранять, то пусть сразу формируется /var/spool/cron/crontabs/admin
вопрос в другом - стоит ли забивать nvram файлами типа crontabs?
RMerlin в своей прошивке предусмотрел альтернативные крнфиги к примеру, но они почему в jffs храняться, а не nvram?
как и все скрипты типа init-start и др.
Ни один сервис из состава прошивки JFFS не использует. JFFS вообще по умолчанию запрещён.
Сертификаты-простыни для работы клиента\сервера OpenVPN хранятся прямо в NVRAM.
Стоит или не стоит забивать NVRAM — это отдельный архитектурный вопрос. ASUS выбрал путь, при котором вообще любой чих (вкл.временные переменные) записывается в NVRAM, в связи с чем на определённом этапе возникла необходимость расширять область NVRAM с 32 до 64КБ.
то тем не менее тот же RMerlin crontabs в NVRAM не запихивает.
ну ладно, хотелось все сделать элегантно, но пусть будет как в asuswrt-merlin: все прописывать руками, а не через вэб морду.
кстати какая-то непонятка у меня, crond не хочет автоматом стартовать?
до этого вроде запускался, а теперь не хочет.
смотрю, что есть в списке watchdog - я так понимаю, что watchdog может мешать crond?
Whatchdog «караулит» всего-лишь пару сервисов. Я не знаю как вы реализовали старт крона, но если как большинство сервисов, то watchdog здесь ни при чём.
Не знаю как ведёт себя busybox'овый cron. Проверяет ли он права доступа на файл(ы) crontab как это делает Vixie's cron и т.п.
у мерлина а описании сказано:
** Crond **
Crond will automatically start at boot time. You can put your cron
tasks in /var/spool/cron/crontabs/
т.е. он должен стартовать и без файлов crontab
тем более, если запустить crond вручную - он без проблем стартует.
там же у мерлина пописано:
3.0.0.3.108.5 (5-May-2012):
- NEW: Crond starts at boot time.
может подскажите как найти, что он менял? в github есть только с июня 2012 с версси 3.0.0.3.144
нашел:
https://github.com/shantanugoel/asus...1129db81119bf2
release/src/router/rc/rc.h
+#define RTCONFIG_CROND=y
Рассудим логически: в заводской прошивке этого нет, значит, надо искать в rc-коде запуск бинарника cron. См. services.c по ключевому слову «cron».
services.c до этого уже прошерстил. там везде cron как у мерлина.
ну как написал чуть раньше, нашел что надо доопределить переменную RTCONGIF_CROND=y
сейчас компилю и проверю. проверил: работает!!!!! перекомпилим остальные с исправлениями.
- нашел более свежий источник RT-AC68W 376.1123
- убрал стирание jffs при обновлении прошивки.
папка mod2
P.S. вышла прошивка RT-AC68U 376.1663 - ждем GPL от нее.
кто-то может помочь перенести из вэб морды прошивки Олега(Энтузиастов) страницы сохранения/восстановления flashfs(в моем случае jffs) и Выполнения команды в Asuswrt?
чтобы вставить их сюда:
http://wl500g.info/showthread.php?33...P-N15U-N16-N53
после долгих проб и ошибок решил перейти на Merlin source.
пришлось конечно кое-что "рихтовать":
- отключать добавленную поддержку фильтров ip-set и еще пары фильтров
- перевести e2fsprogs из внешних, на встроенные в busybox
- подкорректировал вэб морду, потому как некоторые функции доступные в старших моделях, в младших не используются.
сейчас завершаю тестирование и выложу.
из проблем: - возникла "непонятка" с SSH (dropbear) при его включении иногда роутер перестает раздавать Интернет!!?!?!?!?!
особенно это проявляется если подключиться к роутере "из вне".
кто подскажет в каком месте копать?
UPD: ну теперь тему можно переименовать в Asuswrt-Merlin для роутеров ......
- mod3, 30.07.2014
- Based on Merlin 376.44 Beta 1 (3.0.0.4.376_1779) source
НЕ ПРОШИВАЙТЕ mod3 В РОУТЕРЫ БЕЗ USB - закралась ошибка ! Исправлено в mod4 !
- mod4, 01.08.2014
- Based on Merlin 376.44 Beta 4 (3.0.0.4.376_2044) source
протестирован RT-N12B1 - ОК
для уменьшения размера пришивки исключены фильтры IPSET.
соответственно отсутствуют AiCloud, TimeMachine, OpenVPN
из приятных "плюшек" от Мерлина:
- страница Sysinfo с параметрами системы
Attachment 9856
и что более важное - параметры и режим подключения портов
Attachment 9857
- страница по управлению параметрами TCP соединений
Attachment 9858
- сканер беспроводных сетей в округе (ну что бы можно было выбрать свободный канал ;( )
Attachment 9859
спасибо, нашел и добавил.
- mod4b - 07.08.2014
поразбирался с оптимизацией размера ядра и выбрасыванием ненужной информации из файлов,
также каким-то образом JFFS стал создаваться от 320к - в результате чего удалось:
- вернуть в прошивку, включенные по умолчанию Мерлином фильтры IPSET
- набор программ e2fsprogs (для моделей с USB)
- добавлена поддержка IPSEC
- исправлено для моделей без USB возможность менять название роутера на закладке LAN
- mod4b1 - 09.08.2014
основан на asuswrt-merlin 344.45 alpha1 (ASUS 3.0.0.4.376.2044)
- почистил код
- вернул некоторые потерянные картинки в вэб-морду
- добавил RT-N12HP_B1 и RT-N12_VP
------------------------------------------------
P.S. помогите все же разобраться с компиляцией драйвера wl.ko, чтобы сделать прошивку для роутеров с 4М флэша!?
Перешел на эту прошивку в роутере RT-N15U.
Возникли непонятные проблемы с DDNS.
Был зарегистрирован в Asus на сервере asuscomm, теперь при попытке сменить сервер, например на noip, получаю ошибку:
start_ddns: Error ddns server name:
После этого опять пробую вернуться на сервер asuscomm и получаю ту же ошибку.
Проходит какое то время и asuscomm опять начинает пинговаться.
В чем может быть проблема?
есть такая проблема. лично у меня выдает сообщение: "Не могу подключиться к Интренет" при попытке сменить DDNS.
но при это если перегрузить роутер, то сервис стартует нормально.
но тут вопрос наверное больше к Мерлину - они там вносили правки в этот сервис. добавляли no-ip, namechip и период обновления.
надо будет глянуть, что они добавили и как
просто я особо в логику не вникаю, занимаюсь только сборкой.
все оттестировать просто не в состоянии.
вон случайно отловил, что если роутер без USB, то на закладке LAN имя роутера не меняется.
потому что Мерлин привязал эту переменную к сервису Samba.
я вот хотел добавить OpenVPN в роутеры без USB, но там в коде так много "завязок" с поддержкой USB, что я пока отказался от этой идеи.
так и периодом обновления DDNS может намудрили что-то.
P.S. глянул бегло код. при изменении ДДНС вызывается функция checkDDNSRetrunCode, изнутри которой вызывается ajax_ddns_code, а уже эта функция проверяет некоторые значения и в том числе переменную g3err_pin.
эта переменная относится к USB 3G модему - ошибка пина.
попробуйте зайти в телнет или SSH и там дать команды:
nvram set g3err_pin=""
nvram commit
reboot
и попробуйте после загрузки изменить ДДНС сервер.