【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> </p>
</div>
<div>修改后,时间也不是立刻就更新的。这是因为ntpd这个服务修改时间的方式是平滑时间变化,并且系统也不是立马就访问ntp服务器的,因此需要等一会。可以使用date命令查看当前时间。</div>
<div><strong>手动校时</strong></div>
<div>如果想要立刻修改时间,则可以手动设置时间,可以使用 <em>timedatectl </em>命令。使用 <em>timedatectl </em>命令可以看到当前的时间状态:</div>
<div></div>
<p><strong>1. 修改时区</strong><br />
我这个已经修改过时区了,所以显示的是上海的时区。默认是UTC的时区,因此需要修改时区。<br />
使用的命令</p>
<pre>
<code> timedatectl list-timezones </code></pre>
<p>列出所有的时区,可以在里面看到 “Asia/Shanghai”。然后使用</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> <p>系统时间差的太多的原因是什么呢</p>
Jacktang 发表于 2023-12-16 21:03
系统时间差的太多的原因是什么呢
<p>开发板刚上电的时候,系统还没有校时。而且在开发板上一开始是没有设置正确的ntp服务器地址的,所以也无法校时。需要设置一下。</p>
<p>重启ntpd服务中的指令错啦,应该是</p>
<pre>
<code>systemctl restart ntpd</code></pre>
<p> </p>
<p>修改时区的命令应该是</p>
<pre>
<code>timedatectl set-timezone Asia/Shanghai</code></pre>
<p> </p>
不爱胡萝卜的仓鼠 发表于 2023-12-17 18:04
修改时区的命令应该是
timedatectl set-timezone Asia/Shanghai
<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]