树莓派系统时间不对
在《初识树莓派》一文最后一张截图中其实隐藏了一个我没有太在意的时间问题,今天在开发树莓派监控程序的时候才发现。
从图中我们可以知道上次登录时间是1970年1月1日星期四的00:03:17分,由此我们可以推断,新安装系统的树莓派默认系统时间应该是1970年1月1日开始的。
很明显,这个时间与我们期望的当前时间是不符的。我们需要将系统时间修改为和当前时间同步。
第一步:启用网络时间协议
为了保证时间的准确性,推荐使用NTP网络时间协议来同步时间。对的,跟windows中的 Internet 时间同步是一样一样的。
NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。NTP可以使计算机时钟与 Internet 时间服务器同步。 这意味着可以更新计算机上的时钟,以与时间服务器上的时钟匹配,这有助于确保计算机上的时钟是准确的。它的用途是把计算机的时钟同步到世界协调时间UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。
运行以下命令,启用NTP:
sudo timedatectl set-ntp true
启用NTP以后,时间就是正常的吗?我们来通过date命令来查看当前时间:
ubuntu@localhost:/etc$ dateMon Apr6 08:45:50 UTC 2015
年月日都对了,但是现在是16点啊,系统时间显示的确是08点,相差8个小时。
这个时候,多年的开发经验告诉我们,天朝时间比标准时间早8个小时。
我们还想date命令出来的时间与我们的时间完全保持一致,就需要进行第二步操作修改时区。
第二步:修改时区
使用以下命令修改本地时区:
sudo dpkg-reconfigure tzdata
在“Configuring tzdata”中,依次选择Asia、Chongqing,回车确认,出现了以下提示信息:
cp: cannot create regular file '/etc/localtime.dpkg-new': Read-only filesystem
Current defaulttime zone: 'Asia/Chongqing'Localtime is now: Mon Apr 6 08:49:52 UTC 2015.
Universal Time is now: Mon Apr6 08:49:52 UTC 2015.
debconf: DbDriver"config": could not write /var/cache/debconf/config.dat-new: Read-only file system
简单来说,就是文件系统是只读的,不能创建etc/localtime.dpkg-new文件和不能写config.dat-new文件。
当前默认的时区是已经改成了我们想要的'Asia/Chongqing',但是本地时间和世界时间还是一样的,这里还有问题,应该就是只读文件系统造成时区没有完全配置。
第三步:使文件系统可写
通过askubuntu找到了Read-only file system问题的解决办法,运行以下命令使得文件系统可写。
sudo mount -o rw,remount /
第四步:重复第二步修改时区
这一次重新配置时区就比较顺利了。本地时间变成了CST时间,也就是China Standard Time UTC+8:00 中国沿海时间(北京时间)。
Current default time zone: 'Asia/Chongqing'Localtime is now: Mon Apr 6 16:55:50 CST 2015.
Universal Time is now: Mon Apr6 08:55:50 UTC 2015.
ubuntu@localhost:/etc$ dateMon Apr6 17:19:56 CST 2015ubuntu@localhost:/etc$ timedatectl status
Localtime: Mon 2015-04-06 17:36:36CST
Universaltime: Mon 2015-04-06 09:36:36UTC
RTCtime: n/a
Time zone: Asia/Chongqing (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTCinlocal TZ: no
DST active: n/a
后记
保证计算机的时间准确性是一个非常重要的事情,特别是我们基于树莓派还开发一些开关或者数据监控应用,如果时间不准确,可能会引发一些不必要的问题。