在板子上安装一个程序bmc-server,程序开机启动要去网络上安装mosquitto,如果不做任何处理,会报各种网络错误。

  • Exiting, name server cannot be used: Temporary failure in
    https://blog.csdn.net/weixin_43681796/article/details/89289010
    一种情况是nameserver配置的问题,一种情况是执行ntpdate cn.ntp.org.cn太提前了,系统/etc/resolv.conf文件还没有来得及解析完成。

  • the NTP socket is in use, exiting
    https://blog.51cto.com/weimouren/2387130
    系统开机会开启一个ntp服务,但是/etc/rc.local执行完之前,好像一直会同步不成功。这时想自己执行一下ntpdate cn.ntp.org.cn指令,就会报这个错误。需要把系统的开启的ntp服务先干掉:

    pid=`ps -ef|grep "ntpd"|grep -v grep|awk '{print $2}'`
    echo "ntpd pid:$pid"
    kill -9 $pid
    ntpdate cn.pool.ntp.org

    ntpdate命令是异步执行的,并不会阻塞后面指令的执行。

  • timedatectl 判断时间同步完成与否

    会发现Local time这一项已经同步完成了,但是System clock synchronized还是no.所以只能截取Local time判断时间是否同步完成。

count=0
  while [ $result  \< "2022-10-14" ]
  do
    echo "等待时间同步,然后才去更新镜像."
    sleep 3s
    count=$(($count+1))
    if [ $count -ge 10 ];then
      echo "30秒过去了,系统时间还没有同步完成,程序已自动退出..." 
        exit 0
    fi
    result=$(timedatectl | grep "Local time" | cut -f2 -d":" | sed 's/ //g')
    result=$(expr substr $result 2 10)
  done

但是上面这种把时间写死的算法随着时间的推移可能会有问题,所以还是要找到时间同步完成的准确判断条件。


根据对RTC的研究,可以知道RTC获取的默认时间应该是固定不变的,所以这种判断时间是否同步完成的方法是没有问题的。

分类: rk3588_bmc

0 条评论

发表回复

您的电子邮箱地址不会被公开。