Linux 时间在重启问题上仍然存在

Linux 时间在重启问题上仍然存在

我有一个定制板,其中包含一个运行 Linux 内核 4.4.15 的系统模块 (SOM)。该板有一个通过小电池备份的 RTC。

我的开发板目前在没有网络连接的情况下运行。

我有两个不同的 SOM。如果我插入 SOM A,然后启动设备

$date returns date in Feb 2020

$hwclock returns same date/time in Feb 2020

如果我更新系统时间和 RTC,然后拔掉电源并重新启动,这两个命令都会以相同的日期(2020 年 2 月)恢复。

如果我插入 SOM B 并启动设备,结果是相同的,除了启动时返回的日期是 2020 年 5 月的日期/时间(实际上是昨天)

似乎在启动时从 RTC 中读回时间时出现问题,然后系统从某个地方提取保存的日期/时间,但那会在哪里呢?

我什至删除了 /etc/init.d 中的 hwclock.sh 脚本(该脚本链接到所有 rc.X 文件夹)

我还将 hwclock 二进制文件从 /sbin/ 移动到其他地方,以阻止任何其他调用者设置 rtc,但是当我在启动后手动运行它时,它似乎仍然具有不正确的日期/时间(2020 年 2 月或昨天)这似乎也很奇怪,因为如果 hwclock 二进制文件不在其正常位置,系统时钟和 hwclock 如何在电源周期后报告相同的时间?

是否有其他服务/位置可以将时间写入文件并用于在启动时设置系统时间?

编辑:

设置系统和RTC时间

$ cat /proc/driver/rtc
rtc_time    : 00:00:16
rtc_date    : 2020-05-15
alrm_time    : 00:00:00
alrm_date    : 1970-01-01
alarm_IRQ    : no
alrm_pending    : no
update IRQ enabled    : no
periodic IRQ enabled    : no
periodic IRQ frequency    : 1
max user IRQ frequency    : 64
24hr        : yes

完整的电源周期,RTC 已恢复。

$cat /proc/driver/rtc
rtc_time    : 14:54:22
rtc_date    : 2020-05-14
alrm_time    : 00:00:00
alrm_date    : 1970-01-01
alarm_IRQ    : no
alrm_pending    : no
update IRQ enabled    : no
periodic IRQ enabled    : no
periodic IRQ frequency    : 1
max user IRQ frequency    : 64
24hr        : yes

编辑2:

当我重新启动它时,我进行的所有测试都是实际拔掉电源线,等待几秒钟然后重新插入。(这是一个嵌入式Linux设备,所以这并不罕见)但是,我设置了时间到今天,然后发出重新启动命令,(电源未移除)它以我设置的相同时间(午夜)恢复然后当下次完成电源循环时,它以相同的日期(今天)恢复,

因此,我认为重新启动过程中的某些内容会迫使操作系统在某个地方节省时间。然后在启动时它会设置 rtc,而不是从中读取。

相关内容