当前位置: 首页 > news >正文

RTC时钟测试

1. 基础知识

Linux 的系统时间有时跟硬件时间是不同步的。
Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。 Linux中的所有命令(包括函数)都是采用的系统时钟设置。在Linux中,用于时钟查看和设置的命令主要有date、hwclock和clock。其中,clock和hwclock用法相近,只用一个就行,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。

常用操作指令

  • 查询硬件时钟
hwclock --show
  • 硬件时钟与系统时钟同步
hwclock --hctosys(hc代表硬件时间,sys代表系统时间)或者clock --hctosys
  • 系统时钟和硬件时钟同步
 hwclock --systohc或者clock --systohc
  • 查询系统时间
 date

2. 设备时间同步配置

2.1 NTP时间同步

需依赖设备可上外网
配置文件:/etc/chrony.conf
在这里插入图片描述
时间同步原理:chrony.conf中配置NTP服务,chronyd将NTP时间同步到系统时间。

2.2 RTC时间同步

配置文件:/etc/chrony.conf

# 启用内核对实时时钟(RTC)的同步。
rtcsync

配置说明:配置上该项后,linux内核将每隔11分钟将系统时间同步到RTC时间

3. RTC时钟测试

3.1 rtcsync指令配置测试

测试目的:验证rtcsync配置是否有效
测试步骤:

  1. 设置不安装纽扣电池。
  2. chronyc sources -v查询系统时间同步状态正常。
  3. hwclock 查询硬件RTC时间。硬件RTC时间为2000年,RTC时间无效。
  4. 关闭/打开chrony.conf中的rtcsync配置。
  5. 重启设备,hwclock 查询硬件RTC时间是否有效。
    测试结论:
    当chrony.conf文件中配置上rtcsync时,设备上电后内核时间可以同步到RTC时间。

3.2 RTC时间测试

测试目的:验证有纽扣电池时,RTC时间是否能起作用。
测试前置条件:有无安装纽扣电池,硬件RTC时间是否有效。
操作步骤:

  1. chronyc sources -v查询系统时间同步状态正常。
    #*为系统时间同步成功
    在这里插入图片描述

#?为系统时间同步失败
在这里插入图片描述

  1. hwclock 查询硬件RTC时间。如RTC时间未同步,执行hwclock --systohc同步RTC时间。
  2. 关闭设备的系统时间同步功能。
    /etc/chrony.conf中加#屏蔽NTP server配置(设备无外网可不修改)
  3. reboot或断电重启设备
  4. 设备重启后,date查询系统时间,hwclock查询硬件时间。chronyc sources -v确认时间是否同步。

测试结论:

  • hwclock硬件RTC时间无效时,reboot重启设备,硬件时间无法保存,系统时间无法同步;
  • hwclock硬件RTC时间有效时,reboot重启设备,硬件时间可以保存,系统时间首先同步硬件RTC时间;
  • hwclock硬件RTC时间有效时,RTC电池没电,断电重启,硬件时间无法保存,系统时间无法同步;
  • hwclock硬件RTC时间有效时,RTC电池有电,断电重启,硬件时间可以保存,系统时间可以同步;

参考资料
chronyd的那些事

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C# Queue 队列
  • 【RabbitMQ】高级特性
  • Linux: 忘记密码的解决方法,passwd
  • ROUTE_STATUS
  • C# 一个队列两个线程,一个线程入,一个线程出,数据不一致的原因
  • centos 服务器之间实现免密登录
  • CSS的层叠和继承
  • C#学习之路day1
  • 【Python进阶】学习Python必备的练习题,学会这些,说明你对Python已经基本了解了!!!
  • Node.js 安装教程
  • 认证授权 - OAuth 2.0
  • 力扣221题详解:最大正方形的多种解法与模拟面试问答
  • 七牛云 CDN 视频瘦身,为视频分发「减负增效」
  • 路径规划 | 灰狼算法+B样条曲线优化无人机三维路径规划(Matlab)
  • 【C++】深入解析C/C++内存管理:new与delete的使用及原理
  • C# 免费离线人脸识别 2.0 Demo
  • docker-consul
  • docker容器内的网络抓包
  • Facebook AccountKit 接入的坑点
  • GitUp, 你不可错过的秀外慧中的git工具
  • Java反射-动态类加载和重新加载
  • React Transition Group -- Transition 组件
  • session共享问题解决方案
  • Spring Cloud Feign的两种使用姿势
  • 爱情 北京女病人
  • 程序员该如何有效的找工作?
  • 从setTimeout-setInterval看JS线程
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 实现简单的正则表达式引擎
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 通过调用文摘列表API获取文摘
  • ​Java并发新构件之Exchanger
  • ​zookeeper集群配置与启动
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • $.each()与$(selector).each()
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (day18) leetcode 204.计数质数
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (poj1.3.2)1791(构造法模拟)
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (三)Honghu Cloud云架构一定时调度平台
  • (一)Thymeleaf用法——Thymeleaf简介
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (转)总结使用Unity 3D优化游戏运行性能的经验