2019年7月2日 星期二

[OpenWRT] date 初始化

執行OpenWRT的裝置,主要像Router這一類或是一些MPU等級的開發板,

例如MTK7688,若裝置斷電重開後,要獲得正確的時間,可以透過NTP或是

額外加裝的RTC(Real-time Clock) Chip。

若是處於未連網及不具有RTC的情況下,系統會找尋/etc下最新一筆

檔案的變更時間,做為目前的時間。這段程式碼在/etc/init.d/sysfixtime


START=00
STOP=90
boot() {
 local maxtime="$(maxtime)"
 local curtime="$(date +%s)"
 [ $curtime -lt $maxtime ] && date -s @$maxtime
}

maxtime() {
 local file newest

 for file in $( find /etc -type f ) ; do
  [ -z "$newest" -o "$newest" -ot "$file" ] && newest=$file
 done
 [ "$newest" ] && date -r "$newest" +%s
}