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 ...
随机推荐
- 《JavaScript 模式》读书笔记(5)— 对象创建模式4
我们学完了大部分对象创建模式相关的内容,下面还有一些小而精的部分. 七.对象常量 JavaScript中没有常量的概念,虽然许多现代的编程环境可能为您提供了用以创建常量的const语句.作为一种变通方 ...
- 2-SAT(HDU-3062 party)
2-SAT(HDU-3062 party) 解决问题类型: 书本定义:给一个布尔方程,判断是否存在一组解使整个方程为真,被称为布尔方程可满足性问题(SAT) 因为本题只有0,1(丈夫 妻子只能去一个人 ...
- 带权并查集 HDU - 3047
题意: 一圈座位有n个,给出m组序号之间的关系,比如,1 2 150 代表2号坐在1号位置序号+150,看m组数据有多少组冲突的. 思路: 带权并查集模板. #include<stdio.h&g ...
- 大O 表示法
大O表示法 指出了算法有多快.例如,假设列表包含n个元素.简单查找需要检查每个元素,因此需要执行n次操作.使用大O表示法,这个运行时间为O(n).单位秒呢?没有——大O表示法指的并非以秒为单位的速度. ...
- iPhone连接到Mac上叮叮叮断断续续响个不停的解决办法
一.推荐方式 1.让iPhone和Mac通过数据线连接(对,就是连着) 2.打开终端,执行如下命令: sudo killall -STOP -c usbd 3.一分钟内,iPhone即可连上Mac 二 ...
- IntelliJ Idea 中文乱码问题
首先,Idea真的是一款很方便的开发工具,但是关于中文乱码这个问题我不得不吐槽,这个编码也弄得这么麻烦干嘛呀...下面就说一下怎么解决中文乱码问题: 1.首先是编辑器的乱码,这个很好解决,file-& ...
- sql 数据库操作语句 不带select
MySQL数据操作语句 1.总纲 DDL -数据定义语句** create/drop/alter ** create: 创建 drop:删除 alter:修改 DML -数据操作语句 ** inser ...
- Kitty-Cloud环境准备
项目地址 https://github.com/yinjihuan/kitty-cloud 开发工具 开发工具目前对应的都是我本机的一些工具,大家可以根据自己平时的习惯选择对应的工具即可. 工具 说明 ...
- [vijos1159&洛谷1494]岳麓山上打水<迭代深搜>
题目链接:https://vijos.org/p/1159 https://www.luogu.org/problem/show?pid=1494 这是今天的第三道迭代深搜的题,虽然都是迭代深搜的模板 ...
- 「SpringBoot」如何优雅地管理SpringBoot项目
本文主要讲述一下如何优雅地管理SpringBoot项目. 背景 课堂上,当小明形如流水地回答完沐芳老师提出来的问题时,却被至今没有对象的胖虎无情嘲讽了? 沐芳老师:小明,你平时是如何启动.停止你的Sp ...