manhuami2007 发表于 2023-12-15 17:17

【STM32MP135F-DK】4-自动校时和手动校时

<div class='showpostmsg'> 本帖最后由 manhuami2007 于 2023-12-18 08:24 编辑

<div>设备刚启动的时候,设备的时间肯定是不对的,因此需要进行校时。校时的方式有两种:当设备能够联网之后就可以使用ntp自动校时了,如果没有联网的话,也可以使用手动校时。</div>

<div><strong>NTP自动校时</strong></div>

<div>自动校时要用到ntp服务,系统默认安装了ntpd服务,其它的都没有自动安装,比如ntpq和ntpdate这两个是没有的。</div>

<p><strong>1. 修改ntp.conf文件,增加ntp服务器地址</strong><br />
使用命令timedatectl 可以看出ntp服务已经启动了,而且也联网了,但是系统并没有自动校时。这是因为 <em>/etc/ntp.conf </em>中还没有设置,如下图所示:<br />
<br />
可以看出ntp的server 是127.127.1.0,并不是ntp服务器的地址,因此需要修改这个文件,使用vi命令修改这个文件</p>

<pre>
<code>vi /etc/ntp.conf</code></pre>

<p>增加<em> server cn.pool.ntp.org prefer</em>,修改后如下图所示。后面的prefer是在有多个server时,选择一个作为优先选项的作用。<br />
</p>

<p><strong>2.重启ntpd服务</strong></p>

<div>因为ntp.conf文件是在系统启动的时候读取的,因此使用vi工具修改了ntp.conf文件之后,需要重启ntp服务,命令为:</div>

<div>
<pre>
<code>systemctl restart ntpd</code></pre>

<p>&nbsp;</p>
</div>

<div>修改后,时间也不是立刻就更新的。这是因为ntpd这个服务修改时间的方式是平滑时间变化,并且系统也不是立马就访问ntp服务器的,因此需要等一会。可以使用date命令查看当前时间。</div>

<div><strong>手动校时</strong></div>

<div>如果想要立刻修改时间,则可以手动设置时间,可以使用&nbsp;<em>timedatectl&nbsp;</em>命令。使用 <em>timedatectl </em>命令可以看到当前的时间状态:</div>

<div></div>

<p><strong>1. 修改时区</strong><br />
我这个已经修改过时区了,所以显示的是上海的时区。默认是UTC的时区,因此需要修改时区。<br />
使用的命令</p>

<pre>
<code> timedatectl list-timezones </code></pre>

<p>列出所有的时区,可以在里面看到 &ldquo;Asia/Shanghai&rdquo;。然后使用</p>

<pre>
<code>timedatectl set-timezone “Asia/Shanghai”</code></pre>

<p>将时区设置为东八区的时间</p>

<p><strong>2. 设置时间</strong></p>

<div>然后就是使用timedatectl set-time命令设置时间,例如:</div>

<div>
<pre>
<code>timedatectl set-time "2023-12-15 15:47:00"</code></pre>

<p>如果直接设置的话,可能会报错,如下图所示。</p>
</div>

<div></div>

<div>这是因为ntp服务开启了,是自动校时的模式。因此需要先将ntp关闭,使用命令</div>

<div>
<pre>
<code>timedatectl set-ntp false </code></pre>
关闭自动校时功能,然后再校时就可以了。</div>

<div><strong>总结</strong></div>

<div>通过上面的2种方式都能够校时,校时也是为了调用apt-get update指令,如果没有校时的话,调用update命令会返回下面的错误</div>

<div></div>

<div>这个错误就是因为系统时间差的太多造成,因此需要校时之后才能成功的更新包的信息。</div>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

Jacktang 发表于 2023-12-16 21:03

<p>系统时间差的太多的原因是什么呢</p>

manhuami2007 发表于 2023-12-17 06:36

Jacktang 发表于 2023-12-16 21:03
系统时间差的太多的原因是什么呢

<p>开发板刚上电的时候,系统还没有校时。而且在开发板上一开始是没有设置正确的ntp服务器地址的,所以也无法校时。需要设置一下。</p>

不爱胡萝卜的仓鼠 发表于 2023-12-17 17:57

<p>重启ntpd服务中的指令错啦,应该是</p>

<pre>
<code>systemctl restart ntpd</code></pre>

<p>&nbsp;</p>

不爱胡萝卜的仓鼠 发表于 2023-12-17 18:04

<p>修改时区的命令应该是</p>

<pre>
<code>timedatectl set-timezone Asia/Shanghai</code></pre>

<p>&nbsp;</p>

manhuami2007 发表于 2023-12-18 08:23

不爱胡萝卜的仓鼠 发表于 2023-12-17 18:04
修改时区的命令应该是


timedatectl set-timezone Asia/Shanghai

&nbsp;

<p>你说的对,我这就编辑修改一下,谢谢了<img height="28" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/smiling-face-with-open-mouth-and-cold-sweat_1f605.png" width="28" /></p>
页: [1]
查看完整版本: 【STM32MP135F-DK】4-自动校时和手动校时