嵌入式Linux 硬件时间-系统时间-时区设置

Linux系统时间分为两种:系统时间和硬件时间。系统时间为Linux内核时间,硬件时间一般为BOIS中的RTC时间。Linux内核在启动时,会尝试读取BIOS中的RTC时间,并以此为基准设置系统时间。内核启动之后,系统时间和硬件即为两个独立的时间,各自运行。

嵌入式Linux系统开发时,同样需要提供硬件来为系统提供时间基准,这个硬件一般就是RTC芯片,比如,rx8010。Linux关于时间的配置包括:系统时间设置、硬件时间设置、时区设置。

时区配置

tzselect命令用于设置系统的当前时区。在桌面系统上,比如,ubuntu或者Debian系统,系统支持完整的时区配置,可以使用tzselect按照命令提示一步一步进行配置,比如,设置Asia/China/Beijing时区

执行tzselect命令 --> 选择Asia --> 选择China -->选择Beijing Time-->Yes保存设置

最终,系统会将TZ=‘Asia/Shanghai’; export TZ配置到~/.profile文件。

嵌入式Linux系统,一般不会提供tzselect命令,那么时区的配置可以通过直接配置TZ环境变量设置系统时区的。同时,需要在/usr/share/zoneinfo目录下提供时区相关的配置文件,这里只配置了Asia的时区。

配置TZ环境变量

$ cat /etc/profile
TZ='Asia/Shanghai'; export TZ
/usr/shared/zoneinfo目录下必须包含时区信息

# /usr/share/zoneinfo$ ls
Asia  PRC

通过date命令可以查到当前的时区信息:

Tue Jul  7 10:00:02 CST 2020 #CST表示东八区

系统时间配置

系统的时间配置方式分为:手动配置和NTP同步,手动配置一般通过date命令直接设置系统时间,NTP方式通过NTP服务器配置本地的系统时间。

为了时间的精确性,建议使用NTP方式配置系统时间。

ntpdate 0.cn.pool.ntp.org

如果对于时间精确性要求不高,可以使用date命令直接设置系统时间,date支持的时间配置格式十分的灵活,下面举几个简单的例子,如果有兴趣可以通过man date查看更多的用法。

1、将日期设置为2020076[root@linux-node ~]# date -s 07/06/20

2、将时间设置为100700[root@linux-node ~]# date -s 10:07:00

3、将时间设置为2020070610:08
[root@linux-node ~]#  date -s "2020-07-07 10:08:00"

硬件时间配置

hwclock命令用于管理硬件时间,可以通过该命令完成硬件时间的设置,系统时间和硬件时间之后的转换等。

查看硬件时间

hwclock -r #查看当前硬件时间
Tue Jul  7 02:10:10 2020  0.000000 seconds
同步系统时间和硬件时间

hwclock -w -u 

注意:
-w表示将系统时间同步到硬件时间,-u表示硬件时间以UTC时间为准。
系统启动时,会通过硬件同步系统时间,系统认为从硬件取到的UTC时间,之后再按照
本地时区,将UTC时间转换为本地时间,所以,为了使系统设置正确的时区时间,这里
必须加上 -u选项。

同步系统时间和硬件时间

hwclock -s -u

-s表示将硬件时间同步到系统时间,-u表示硬件时间为UTC时间,如果硬件时间以UTC时间保存,那
必须使用-u选项。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章