当Linux启动时,必须从RTC芯片获取当前时间,然后设置为Linux系统日期/时间。我可以通过运行手动执行此操作hwclock --hctosys
。但这种情况在启动时到底在哪里自动发生呢?有一个流程可以处理这个问题吗?内核做这个工作吗?
答案1
方法一:Linux内核从RTC芯片加载时间
可以CONFIG_RTC_HCTOSYS
在内核配置中进行设置以启用此功能。启用后,Linux 内核将负责读取存储的时间rtc0
并将其设置为系统时间。可以随CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
设备改变。
为此,必须将相应的 RTC 驱动程序编译为内置模块。
方法2:udev在/dev/rtcX创建后立即调用hwclock
该软件包util-linux
提供了一个 udev 规则文件/usr/lib/udev/rules.d/85-hwclock.rules
,可以将其复制到/etc/udev/rules.d/
./usr/lib/udev/hwclock-set
一旦创建 /dev/rtc0,udev 守护进程就会自动调用。如果需要的话你可以rtc0
换85-hwclock.rules
。