Introduce save_time_interval config (in seconds) to set a max on how often time is saved to flash (default 30 days) Introduce save_time_file config, default to /etc/config/sysfixtime, so it's included in backups (time is saved by touching save_time_file) Use busybox ntpd -S option so time is saved regularly and not only on clean shutdown/reboot Fix time on startup if system time is inferior to stored time
Signed-off-by: Etienne CHAMPETIER <etienne.champet...@free.fr> --- package/utils/busybox/Makefile | 8 +++++ package/utils/busybox/files/sysfixtime | 45 +++++++++++++++++++++++++++++ package/utils/busybox/files/sysfixtime.conf | 3 ++ package/utils/busybox/files/sysntpd | 3 +- 4 files changed, 58 insertions(+), 1 deletion(-) create mode 100755 package/utils/busybox/files/sysfixtime create mode 100644 package/utils/busybox/files/sysfixtime.conf diff --git a/package/utils/busybox/Makefile b/package/utils/busybox/Makefile index cf4f1f2..86a359f 100644 --- a/package/utils/busybox/Makefile +++ b/package/utils/busybox/Makefile @@ -50,6 +50,10 @@ define Package/busybox/config source "$(SOURCE)/Config.in" endef +define Package/busybox/conffiles +/etc/config/sysfixtime +endef + CONFIG_TEMPLATE:=./config/default LDLIBS:=m crypt @@ -114,6 +118,10 @@ define Package/busybox/install $(INSTALL_BIN) ./files/cron $(1)/etc/init.d/cron $(INSTALL_BIN) ./files/telnet $(1)/etc/init.d/telnet $(INSTALL_BIN) ./files/sysntpd $(1)/etc/init.d/sysntpd + $(INSTALL_BIN) ./files/sysfixtime $(1)/etc/init.d/sysfixtime + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_CONF) ./files/sysfixtime.conf $(1)/etc/config/sysfixtime + touch $(1)/etc/config/sysfixtime -rm -rf $(1)/lib64 endef diff --git a/package/utils/busybox/files/sysfixtime b/package/utils/busybox/files/sysfixtime new file mode 100755 index 0000000..15d0a36 --- /dev/null +++ b/package/utils/busybox/files/sysfixtime @@ -0,0 +1,45 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2013-2014 OpenWrt.org + +START=05 +STOP=95 + +config_load sysfixtime +config_get save_time_file sysfixtime save_time_file "/etc/config/sysfixtime" +config_get save_time_interval sysfixtime save_time_interval 2592000 + +EXTRA_COMMANDS="save save2 step stratum periodic unsync" +EXTRA_HELP=" save save time to flash by touching $save_time_file + save2 save time to flash by touching $save_time_file + if not saved in the last $save_time_interval seconds + disabled if save_time_interval = 0" + +start() { + CURTIME=`date '+%Y%m%d%H%M'` + SAVEDTIME=`date '+%Y%m%d%H%M' -r $save_time_file` + [[ $CURTIME -lt $SAVEDTIME ]] && \ + date -s $SAVEDTIME && \ + /usr/bin/logger -t sysfixtime -p daemon.notice "Time fixed" +} + +save2() { + [[ $save_time_interval -eq 0 ]] && exit + CURTIME=`date +%s` + SAVEDTIME=`date +%s -r $save_time_file` + + [[ $((CURTIME - SAVEDTIME)) -gt $save_time_interval ]] && save +} + +save() { + cat /dev/null >> $save_time_file && \ + touch $save_time_file && \ + /usr/bin/logger -t sysfixtime -p daemon.notice "Time saved to flash" +} + +stop() { save2; } + +step() { save2; } +stratum() { save2; } +periodic() { save2; } +unsync() { exit; } + diff --git a/package/utils/busybox/files/sysfixtime.conf b/package/utils/busybox/files/sysfixtime.conf new file mode 100644 index 0000000..6e0fc3f --- /dev/null +++ b/package/utils/busybox/files/sysfixtime.conf @@ -0,0 +1,3 @@ +config sysfixtime sysfixtime + option save_time_file "/etc/config/sysfixtime" + option save_time_interval 2592000 diff --git a/package/utils/busybox/files/sysntpd b/package/utils/busybox/files/sysntpd index add7762..2612bc6 100755 --- a/package/utils/busybox/files/sysntpd +++ b/package/utils/busybox/files/sysntpd @@ -1,5 +1,5 @@ #!/bin/sh /etc/rc.common -# Copyright (C) 2011 OpenWrt.org +# Copyright (C) 2011-2014 OpenWrt.org START=98 @@ -24,6 +24,7 @@ start_service() { procd_open_instance procd_set_param command "$PROG" -n [ "$enable_server" = "1" ] && procd_append_param command -l + procd_append_param command -S /etc/init.d/sysfixtime for peer in "$server"; do procd_append_param command -p $peer done -- 1.8.4.2 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel