局域网内两台设备时间同步
由于项目需要,需要笔记本和无人车上的tx2在无人车上的路由内组建局域网。但本项目系统是以ROS为框架的,需要两设备时间同步(不然会报各种莫名其妙的错误,笔者困惑了几天才发现…)。
笔记本是Uuntu16.04的系统,移动机器人的TX2也是16.04,二者通过路由器组建局域网,没有与外网连接。下面介绍如何通过ntp来对局域网内的两台电脑进行时间同步。
(1) 服务器端配置
在笔记本上安装ntp:
$ sudo apt install ntp
编辑配置文件/etc/ntp.conf
$ sudo vim /etc/ntp.conf
在文件中添加如下内容:
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
第一行是为了能让192.168.2.0/255网段上的机器能和本机进行时间同步;第二行和第三行是为了让本机的硬件时间和本机的ntp服务进行时间同步。
重启ntp服务:
$ sudo /etc/init.d/ntp restart
(2) 客户端配置
在笔记本上安装ntp:
$ sudo apt install ntp
编辑配置文件/etc/ntp.conf
$ sudo vim /etc/ntp.conf
使用指令进行时间同步:
$ sudo /usr/sbin/ntpdate 192.168.2.4
为了避免每次时间同步都要输入上述指令,可以在/etc/crontab文件中配置,让树莓派每分钟和笔记本进行一次时间同步。
$ sudo vim /etc/crontab
在文件末尾添加如下内容:
* * * * * /usr/sbin/ntpdate 192.168.1.101;/sbin/hwlocal -w
表示每分钟和局域网内ip为192.168.1.101的主机进行一次时间同步,并将时间写入硬件中。