ubuntu系统两个板子(主从机)时间同步方法

2 篇文章 0 订阅

问题描述

有两个板子通过网口连接,一个板子可以连接外网,另一个板子不能连接外网,需要将两台机器的时间同步,以免后续ROS收发消息时时间戳不准确.

解决方法:chrony服务时间同步

提前准备工作:

需要确认两个板子互相可以ping通。假设有网的板子A ip是192.168.41.3,没有网的B ip是192.168.41.1。在A上 ping 192.168.41.3没有问题,反之亦然.

正文

主板A上的配置(作为NTP服务器)

  1. 安装 **chrony**

sudo apt-get install chrony

     2.编辑 chrony** 配置文件**:

编辑 /etc/chrony/chrony.conf 文件,将主板A配置为NTP服务器。

sudo vim /etc/chrony/chrony.conf

确保以下行存在并取消注释,或者添加以下行:

allow 192.168.41.0/24 # 允许来自此网络的客户端连接

确保以下行存在,以便 chrony 同步时间:

server pool.ntp.org iburst

保存并退出编辑器。

        3.重启 chrony** 服务**:

sudo systemctl restart chrony

        4.验证 chrony** 是否正常工作**:

chronyc tracking chronyc sources

主板B上的配置(作为NTP客户端)

  1. 安装 **chrony**

sudo apt-get install chrony

        2.编辑 chrony** 配置文件**:

编辑 /etc/chrony/chrony.conf 文件,将主板A配置为NTP服务器。

sudo nano /etc/chrony/chrony.conf

注释掉或删除默认的服务器配置,并添加主板A的IP地址作为NTP服务器。例如:

server 192.18.41.3 iburst

保存并退出编辑器。

        3.重启 chrony** 服务**:

sudo systemctl restart chrony

        4.验证时间同步

chronyc tracking chronyc sources

验证和测试

  1. 在主板B上验证时间同步

chronyc tracking chronyc sources

这些命令会显示主板B是否正在从主板A同步时间。

         2.手动触发时间同步(可选)

如果需要,可以手动触发时间同步:

sudo chronyc -a makestep

完整配置示例

主板A (/etc/chrony/chrony.conf):

# Allow NTP client access from the local network.

allow 192.168.41.0/24

# Use public servers from the pool.ntp.org project.

server pool.ntp.org iburst

主板B (/etc/chrony/chrony.conf):

# Use mainboard A as NTP server.

server 192.18.41.3 iburst

通过以上步骤,你可以在一个能连接外网的主板和一个不能连接外网的主板之间使用 chrony 服务实现时间同步。这样,主板B将通过主板A同步时间,确保两台主板的时间保持一致。

补充:B上没有网,无法apt安装deb包怎么办?

确认需要下载的 .deb 文件版本并直接下载 chrony.deb 文件可以通过以下步骤完成:

步骤1:确认需要的版本

  1. 检查系统版本

  1. 首先,确认你的Ubuntu版本,以确保下载的 .deb 文件与系统兼容。可以使用以下命令:

    lsb_release -a

  2. 找到合适的 chrony** 版本**:

  3. 使用Ubuntu包查询网站(如 packages.ubuntu.com)找到与你的Ubuntu版本兼容的 chrony 版本。选择合适的 chrony 版本,记下其下载链接。

步骤2:直接下载 .deb 文件

  1. 下载 chrony** 的 ****.deb**** 文件**:

  1. 使用 wgetcurl 命令直接下载 chrony.deb 文件。例如,如果你在 packages.ubuntu.com 网站上找到适合的 chrony 版本,可以使用以下命令下载:

wget http://archive.ubuntu.com/ubuntu/pool/main/c/chrony/chrony_4.2-2ubuntu2_amd64.deb

请根据实际的 chrony 版本和下载链接进行调整。

步骤3:安装 .deb 文件

  1. 使用 dpkg** 命令安装 ****chrony**:下载完成后,使用 dpkg 命令安装 chrony.deb 文件:

sudo dpkg -i chrony_4.2-2ubuntu2_amd64.deb

如果遇到依赖性问题,可以运行以下命令来解决:

sudo apt-get install -f

示例流程

假设你已经确认你的Ubuntu版本是20.04,并且你找到适合的 chrony 版本为 chrony_4.2-2ubuntu2

  1. 确认系统版本:

    lsb_release -a

        2. 下载 chrony.deb 文件:

wget http://archive.ubuntu.com/ubuntu/pool/main/c/chrony/chrony_4.2-2ubuntu2_amd64.deb

        3.安装 chrony

sudo dpkg -i chrony_4.2-2ubuntu2_amd64.deb

        4.解决依赖性问题(如果有):

sudo apt-get install -f

通过以上步骤,你可以确认需要的 .deb 文件版本并直接下载和安装 chrony。如果有任何问题,请提供更多详细信息,以便进一步帮助。

补充2:如果两个板子都有网,如何设置

可以按照上文提到的方法设置没有问题,也可以修改config使用外网的时间服务器,具体如下:

配置 chrony

编辑 chrony 配置文件 /etc/chrony/chrony.conf,添加或修改时间服务器的配置。例如:

server pool.ntp.org iburst

如果在局域网中有自己的 NTP 服务器,可以使用内网 NTP 服务器的地址。

启动并启用 chrony 服务

sudo systemctl start chrony

sudo systemctl enable chrony

补充3: 两个板子过了一段时间之后又没有对齐了,怎么办

chrony 服务启动后,会自动定期与配置的 NTP 服务器进行时间同步。chrony 会根据网络状况和服务器响应情况,动态调整同步间隔,在 minpollmaxpoll 之间进行调整。

如何验证 chrony 是否正常工作

  1. 检查 chrony** 服务状态**:可以使用以下命令检查 chrony 服务的状态:

sudo systemctl status chrony

如果服务正在运行,你会看到类似如下的输出:

● chrony.service - chrony, an NTP client/server Loaded: loaded (/lib/systemd/system/chrony.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2024-07-03 12:34:56 UTC; 1h 23min ago

        2.查看时间同步状态

可以使用 chronyc 工具查看当前时间同步状态:

chronyc tracking

这个命令会显示时间同步的详细信息,例如偏移量、频率偏差等。

Reference ID : 192.18.41.3 (your-ntp-server)

Stratum : 3

Ref time (UTC) : Tue Jul 3 12:34:56 2024

System time : 0.000000012 seconds fast of NTP time

Last offset : -0.000000001 seconds

RMS offset : 0.000000002 seconds Frequency : 1.000 ppm fast Residual freq : 0.000 ppm

Skew : 0.012 ppm

Root delay : 0.000012 seconds

Root dispersion : 0.000001 seconds

Update interval : 16.0 seconds

Leap status : Normal

 3.查看 NTP 源状态

可以使用 chronyc sources 命令查看 NTP 源的状态:

chronyc sources

这个命令会显示当前配置的 NTP 服务器列表及其状态:

210 Number of sources = 1 .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = combined, '-' = not combined, | / '?' = unreachable, 'x' = time may be in error, '~' = time too variable. || .- xxxx [ yyyy ] +/- zzzz || .- xxx [ yyyy ] +/- zzzz .- xxxx [ yyyy ] +/- zzzz MS Name/IP address Stratum Poll Reach LastRx Last sample ============================================================================== ^* 192.18.41.3 3 6 377 12 +12ns[ +8ns] +/- 32us

配置定期调用

chrony 启动后会自动按照配置的时间间隔进行时间同步,无需额外配置定期调用。默认情况下,chrony 会根据 minpollmaxpoll 的设置,自动调整时间同步的频率。

手动触发时间同步

如果需要手动触发时间同步,可以使用 chronyc makestep 命令:

sudo chronyc -a makestep

这将立即进行时间同步,并调整系统时间。

通过以上步骤,你可以确认 chrony 是否正常工作,并查看当前的时间同步状态。chrony 启动后会自动定期进行时间同步,确保系统时间的准确性。

  • 16
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值