BIOS时间与系统时间(windows/linux时间同步问题)
写作动机
双系统是不少人喜欢的方式,但安装双系统之后一般会出现两个系统时间不一样的问题,刚开始用双系统的时候也没怎么在意,就是装上后在网上找找相关解决方法,复制粘贴代码完事儿。但是次数多了就有点烦了,每次都这样搞问题倒是解决了但是不知道原理。
最近几次发现解决方法发生了改变,和之前的方法不一样了,于是打算一探究竟。如果你想了解原理请仔细阅读,句句都是重点。
注意:以下并没有解决问题的实际代码,因为本文章是讲原理的!
术语解释
设备上的时间:一是系统时间(Local time),一是硬件时间(RTC)。系统时间指操作系统的时间,可以认为就是我们看到的时间;硬件时间指 BIOS 中的时间,这里不解释 BIOS 是啥了(你可以认为是和操作系统同时且独立运行的另一个系统)。也就是说这俩可以有自己的不同的时间。
真实的时间:世界统一时间(UTC),本地时间(中国=CST/UTC+8)。世界统一时间指地球上所有时间都以一个地方的时间为基准,本地时间指在不同的地区根据世界时间作调整。具体怎么个算法不懂的自己去搜。
问题产生原因
真实世界的时间不会出现问题,当我们知道中国处于东八区时世界时间就和本地时间绑定了,有 [本地时间=世界时间+8] 。
系统时间和硬件时间就可能出现问题,系统时间虽然可以从网络同步,但在未联网时也需要显示时间啊,所以操作系统启动时需要读取硬件时间(BIOS中的时间一直在自同步)。
问题就在于这两个系统对硬件时间的看法不一样 : ) 。Windows 认为硬件时间是本地时间,也就是取出来直接显示就对了;而 Linux 则认为硬件时间是世界时间,取出来再根据时区进行 "+8" 操作之后再显示才对。
根据以上描述可以推断,双系统设备中的 Linux 系统时间将比 Windows 系统中的时间快八小时。
另外如果你的设备上并不是这种情况,请根据以上原理自行查找原因,并可参考如下所述的解决方案自行操作。
两大主流解法
一为修改 Linux 系统中的标准
较早版本中通过修改配置文件,新版本中通过 "timedatectl" 进行控制,最终结果其实也是形成了一个配置文件,以便在以后系统取时间时使用正确的算法。
其它文档说这个版本界限在Ubuntu中是 16.04 ,请自测。
一为修改 Windows 系统中的标准
通过修改一个注册表参数来控制其系统时间,原理应该也是和 Linux 系统中一样的吧。
这两种修改方法都可以使两个系统显示的时间是本地时间,其原理是统一这两个系统对于硬件时间的认知标准。
我不建议修改 Windows 的配置文件,不是我认为 Windows 的标准是对的,而是觉得 Linux 更适合折腾。
偏门解法
在查这个问题的时候发现了一些有意思的解法,其中有一个是修改系统中的时区。
比如 Linux 系统中使用了 [世界时间+8] 来计算显示错误,那么是因为其认为这里是 "UTC+8" 所以应该显示 [世界时间+8] 之后的时间;解决方案是设置 Linux 中时区为 "+0" 的时区,那么显示结果为 [世界时间+0]。恕我直言,这解法真是......太可爱了 0.0
按照上述解法的思维,我也可以先在 Linux 系统同步时间至正确,然后再将 Windows 系统的时区设置为 "+16" 的时区,也可以使两个系统都显示正确,可能因为实际没有 "+16" 的时区,不然还真有这种解法呢。
一些思考
操作系统启动后都需要去读取硬件时间,但硬件时间到底应该是世界时间还是本地时间呢?这个要真要有个能说了算的那一定是 BIOS 的创造者了,不过估计当时可能也没考虑到这个问题,毕竟时间这个东西也不是 BIOS 的主要功能,至于现在不同操作系统能否统一标准也不是我能说了算的......
另外其实任何系统都完全有能力解决这个问题,但不知道为啥都视而不见
这里斗胆建议一下 Linux 系统下可用的解决方案:
一可在系统安装(假设Linux后安装)时,时区选择后让用户确认真实时间是 [硬件时间] 还是 [硬件时间+时区] ,再根据选择修改配置文件
二可在系统已经完成安装的情况下,当用户多次手动校准时间(手动设置或网络校准)时,计算校准前后时间差是否和时区值基本相等,以此判断硬件时间是否是本地时间
最后
知识还是那么些知识,其它技术文档里基本都能找到,我只是用自己的思维重新表述一下,一来做个笔记,再者希望可以帮助到别人
原创文章,转发请注明
BIOS时间与系统时间(windows/linux时间同步问题)的更多相关文章
- linux 系统文件类型、系统安装时间、系统启动时间、系统运行时间、设置及显示时间、系统时间和硬件时间
系统文件类型: 1) $mout 2) df -l:仅列出本地文件系统:-h (--human-readable):-T:文件系统类型 $df -lhf 3) file -s (--special-f ...
- Linux的硬件时间、校正Linux系统时间及系统时间调用流程
第一部分: 一)概述: 事实上在Linux中有两个时钟系统,分别是系统时间和硬件时间 UTC是协调世界时(Universal Time Coordinated)英文缩写,它比北京时间早8个小时. ...
- ubuntu下的时间设定(硬件时间,系统时间,本地时间)
问题的来由是在这里: 在cron里设定任务是在凌晨6点执行,检查日志时发现时间总是不对,是在22点左右的时间执行的.研究发现,任务是在本地时间的6点执行了,但不知为什么syslog中的时间都是为utc ...
- java new Date()得到的时间和系统时间不一样
造成这种问题的原因是:操作系统时区跟JVM的时区不一致. [root@paas244 ~]# timedatectl Local time: Thu 2016-12-29 15:35:44 CST U ...
- Log4j 输出的日志中时间比系统时间少了8小时的解决方法,log4j日志文件重复输出
1. 第一个问题:时间少了8小时 Log4j 输出的日志中,时间比系统时间少了8小时,但是 eclipse 控制台输出的日志的时间却是对的. log4j配置如下: #all logger output ...
- ftp上来显示的时间和系统时间不一致
ftp上来显示的时间和系统时间不一致,是因为默认情况下,vsftpd 是用GMT做为他的时间的,所以和系统的时间可能会不一致 修改也非常简单: vi /etc/vsftpd/vsftpd.conf 在 ...
- IIS7日志中时间与系统时间不一致的原因
最近在分析web日志,发现IIS7日志中时间与系统时间不一致,即本该上班时间才产生的产并发访问日志,全部发生在凌晨至上班前. 本以为是系统时间设置错误,检查后一切正常.后查询资料,原来是这个原因: 日 ...
- tomcat时间与系统时间不一致问题
我在部署应用到centos系统上的tomcat服务器中运行,发现操作系统的时间和tomcat中的访问日志的时间与系统时间不一致,但是查看当前操作系统的时区也是CST时区(中国标准时区). 查看系统的时 ...
- Centos7 修改硬件时间和系统时间
查看系统时间 [root@localhost ~]# date Tue Jun 13 10:20:13 CST 2017 查看硬件时间 [root@localhost ~]# hwclock --sh ...
随机推荐
- 使用Keras进行深度学习:(三)使用text-CNN处理自然语言(上)
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 上一篇文章中一直围绕着CNN处理图像数据进行讲解,而CNN除了处理 ...
- ABP.Net Core 小白使用教程
自己简单的记录一下 1.到官网下载模版项目 我下载的是那个前后分离Vue版 2.用VS2017打开,将Web.Host设置为启动项(Core 2.1要看自己VS下载了这个版本没) 3.设置数据库连接 ...
- EntityFramework Core 3.x添加查询提示(NOLOCK)
前言 前几天看到有园友写了一篇关于添加NOLOCK查询提示的博文<https://www.cnblogs.com/weihanli/p/12623934.html>,这里呢,我将介绍另外一 ...
- 图的深度优先搜索dfs
图的深度优先搜索: 1.将最初访问的顶点压入栈: 2.只要栈中仍有顶点,就循环进行下述操作: (1)访问栈顶部的顶点u: (2)从当前访问的顶点u 移动至顶点v 时,将v 压入栈.如果当前顶点u 不存 ...
- jQuery数组去重复
例如: var yearArray = new Array("三二一", "三二一", "学历", "学历", &quo ...
- UITextFiled-集合目录
键盘弹起遮挡输入输入框(UITextFiled或者UITextView) 对于键盘弹起遮挡输入框的问题以前也想过解决办法比如:监听系统键盘弹出通知.根据每个控件所在 ...
- 发现了合自己胃口的公众号,但文章太多翻来翻去真麻烦,还好我学了 Python
现在我们大多数人都会或多或少的关注几个公众号,如果发现一个比较合自己胃口的号 对公众号中的文章一定是每篇必读的. 有时候我们关注到宝藏型公众号时发现其历史文章已经好几百甚至上千篇了,而作者又只对其中自 ...
- Linux - Ubuntu下执行apt-get update报错:Some index files failed to download. They have been ignored, or old ones used instead.
报错命令 root@ubuntu:/etc/apt# apt-get update Err: http://mirrors.aliyun.com/ubuntu trusty InRelease Cou ...
- Quil-delta-enhanced 简介
Quill 是一款时下非常热门的富文本编辑器,它拥有非常强大的扩展能力,可以让开发者根据自己的需要编写插件,使编辑器支持的内容类型更加丰富.它之所以能够拥有这么强大的扩展能力,一方面是因为它的架构和 ...
- WordPress文章阅读量统计和显示(非插件, 刷新页面不累加)
本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. WordPress文章阅读 ...