|
|
<
普通Openwrt体系较多用于收集圆里的产物,好比路由器,但路由器险些皆出有硬件RTC,因而体系初初工夫不准.
正在Openwrt体系中,初初工夫能够以为有2个, 固件编译工夫战文件体系减载后的初初工夫
闭于固件编译工夫,即为Linux kernel 编译工夫, 便是/proc/version内乱容,好比:
root@UVCOSS:~# cat /proc/version
Linux version 4.14.221 (xxxx) (gcc version 7.5.0 (OpenWrt GCC 7.5.0 r11063-85e04e9f46)) #0 Tue Aug 31 06:45:02 2021
kernel 编译工夫经由过程宏KBUILD_BUILD_TIMESTAMP去传进
宏初初化, 从SOURCE_DATE_EPOCH获得工夫
SOURCE_DATE_EPOCH 由剧本天生
剧本get_source_date_epoch.sh以下:
别离从version.date文件,git,hg去停止初初化
version.date文件存储的即为编译时的UTC工夫
# cat version.date
1630392302
- #!/usr/bin/env bash
- export LANG=C
- export LC_ALL=C
- [ -n "$TOPDIR" ] && cd $TOPDIR
- try_version() {
- [ -f version.date ] || return 1
- SOURCE_DATE_EPOCH="$(cat version.date)"
- [ -n "$SOURCE_DATE_EPOCH" ]
- }
- try_git() {
- [ -e .git ] || return 1
- SOURCE_DATE_EPOCH="$(git log -1 --format=format:%ct)"
- [ -n "$SOURCE_DATE_EPOCH" ]
- }
- try_hg() {
- [ -d .hg ] || return 1
- SOURCE_DATE_EPOCH="$(hg log --template '{date}' -l 1 | cut -d. -f1)"
- [ -n "$SOURCE_DATE_EPOCH" ]
- }
- try_mtime() {
- perl -e 'print((stat $ARGV[0])[9])' "$0"
- [ -n "$SOURCE_DATE_EPOCH" ]
- }
- try_version || try_git || try_hg || try_mtime || SOURCE_DATE_EPOCH=""
- echo "$SOURCE_DATE_EPOCH"
复造代码 宏传进:
宏利用 scripts/mkcompile_h 剧本:
终极天生正在文件include/generated/compile.h
/* This file is auto generated, version 0 */
#define UTS_MACHINE "mips"
#define UTS_VERSION "#0 Tue Aug 31 06:45:02 2021"
#define LINUX_COMPILE_BY "gwind"
#define LINUX_COMPILE_HOST "gwind-XX"
#define LINUX_COMPILER "gcc version 7.5.0 (OpenWrt GCC 7.5.0 r11063-85e04e9f46)"
闭于 文件体系减载后的初初工夫, 能够了解为用户使用起去后的体系工夫
Openwrt体系启动过程当中会停止体系文件更新工夫判定,以最新的文件更新工夫设置为当前体系工夫
完成正在剧本package/base-files/files/etc/init.d/sysfixtime
- #!/bin/sh /etc/rc.common
- # Copyright (C) 2013-2014 OpenWrt.org
- ### 00,开始运转
- START=00
- STOP=90
- RTC_DEV=/dev/rtc0
- HWCLOCK=/sbin/hwclock
- boot() {
- start && exit 0
- local maxtime="$(maxtime)"
- local curtime="$(date +%s)"
- [ $curtime -lt $maxtime ] && date -s @$maxtime
- }
- start() {
- [ -e "$RTC_DEV" ] && [ -e "$HWCLOCK" ] && $HWCLOCK -s -u -f $RTC_DEV
- }
- stop() {
- [ -e "$RTC_DEV" ] && [ -e "$HWCLOCK" ] && $HWCLOCK -w -u -f $RTC_DEV && \
- logger -t sysfixtime "saved '$(date)' to $RTC_DEV"
- }
- maxtime() {
- local file newest
- #### 搜刮/etc下最新的文件
- for file in $( find /etc -type f ) ; do
- [ -z "$newest" -o "$newest" -ot "$file" ] && newest=$file
- done
- ### 以最新的文件工夫设置为体系工夫
- [ "$newest" ] && date -r "$newest" +%s
- }
复造代码 终极体系运转日记:
root@UVCOSS:~# logread |head
Tue Aug 31 14:45:10 2021 kern.notice kernel: [ 0.000000] Linux version 4.14.221 (gcc version 7.5.0 (OpenWrt GCC 7.5.0 r11063-85e04e9f46)) #0 Tue Aug 31 06:45:02 2021
====Kernel工夫为6:45编译工夫, 尺度UTC工夫
=== 体系工夫为14:45, 由于当前时区是CST-8
Tue Aug 31 14:45:10 2021 kern.info kernel: [ 0.000000] Board has DDR2
Tue Aug 31 14:45:10 2021 kern.info kernel: [ 0.000000] Analog PMU set to hw control
Tue Aug 31 14:45:10 2021 kern.info kernel: [ 0.000000] Digital PMU set to hw control
Tue Aug 31 14:45:10 2021 kern.info kernel: [ 0.000000] SoC Type: MediaTek MT7688 ver:1 eco:2
Tue Aug 31 14:45:10 2021 kern.info kernel: [ 0.000000] bootconsole [early0] enabled
Tue Aug 31 14:45:10 2021 kern.info kernel: [ 0.000000] CPU0 revision is: 00019655 (MIPS 24KEc)
免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作! |
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
|