NXP

如何设置Linux时间

2019-07-12 13:48发布

By Toradex 胡珊逢   1). 简介   在 Linux 系统中有两个很重要的时钟:硬件时钟 hardware clock,又称为 RTC、CMOS 或者 BIOS 时钟。这类时钟需要使用外部电池供电,即使在系统关机其仍旧可以保持计时。第二种时钟称为系统时钟 system clock,其由操作系统维护。当系统启动时,从硬件时钟读取时间信息,并将其应用于系统时钟。   本文以Toradex ARM平台为例演示如何设置Linux时间,Toradex评估板都有一个硬件 RTC ST M41T0 通过 I2C 总线与计算机模块相连接。     2). 具体操作   Toradex Linux BSP 自 V2.1 版本开始使用systemd-timedated和timedatectl 命令,自 V2.4 使用sytemd-timesyncd 通过 NTP 网络同步时钟。使用timedatectl 命令设置后会立即同步到硬件时钟。也可以使用hwclock 命令来操作硬件时钟。下面将介绍如何设置时间和时区。   使用timedatectl 命令获取当前时间 ------------------------------------------- # timedatectl Local time: Mon 2014-05-26 11:29:40 UTC Universal time: Mon 2014-05-26 11:29:40 UTC RTC time: Mon 2014-05-26 11:29:39 Timezone: Universal (UTC, +0000) NTP enabled: n/a NTP synchronized: yes RTC in local TZ: no DST active: n/a -------------------------------------------   默认情况下系统被设置为 UTC-0 时区,针对中国地区需要更改配置,在联网情况下执行下面命令 ------------------------------------------- root@colibri-vf:~# opkg update root@colibri-vf:~# opkg install tzdata-asia root@colibri-vf:~# timedatectl set-timezone Asia/Shanghai   root@colibri-vf:~# timedatectl  Local time: Fri 2017-12-01 16:56:37 CST Universal time: Fri 2017-12-01 08:56:37 UTC RTC time: Fri 2017-12-01 08:56:37 Time zone: Asia/Shanghai (CST, +0800) Network time on: yes NTP synchronized: no RTC in local TZ: no -------------------------------------------   此时时区 Time zone 以及被正确设置。   设置时间 ------------------------------------------- root@colibri-vf:~# timedatectl set-time "2017-12-01 16:54:37" -------------------------------------------   Toradex Linux BSP 支持 NTP,设置好 NTP 服务器后可以从网络同步时间。编辑/etc/systemd/timesyncd.conf 添加 NTP 服务器地址。如果需要使用自己的服务器,可以将相应的地址添加进来即可。 ------------------------------------------- root@colibri-vf:~# cat /etc/systemd/timesyncd.conf [Time] NTP=0.cn.pool.ntp.org 1.cn.pool.ntp.org 2.cn.pool.ntp.org 3.cn.pool.ntp.org -------------------------------------------   配置完成会自动同步,NTP synchronized 显示网络同步状态 ------------------------------------------- root@colibri-vf:~# timedatectl Local time: Fri 2017-12-01 17:14:03 CST Universal time: Fri 2017-12-01 09:14:03 UTC RTC time: Fri 2017-12-01 09:14:04 Time zone: Asia/Shanghai (CST, +0800) Network time on: yes NTP synchronized: yes RTC in local TZ: no -------------------------------------------   对于不需要 NTP 同步,通过下面命令禁用 ------------------------------------------- root@colibri-vf:~# timedatectl set-ntp false -------------------------------------------   使用 hwclock 也可以直接修改硬件时钟 读取当前硬件时钟 ------------------------------------------- root@colibri-vf:~#  hwclock –r -------------------------------------------   将系统时钟写入到硬件时钟 ------------------------------------------- root@colibri-vf:~#  hwclock –w -------------------------------------------   将硬件时钟同步到系统时钟 ------------------------------------------- root@colibri-vf:~#  hwclock –s -------------------------------------------       参考 https://developer.toradex.cn/knowledge-base/how-to-use-the-real-time-clock-in-linux