ubuntu与windows双系统时间同步问题——简明指南

(51 封私信 / 80 条消息) ubuntu与windows双系统时间同步问题——简明指南 - 知乎

一个阳光明媚的大中午,你打开了windows,却发现它显示当前时间为4点:

啊这

原因

一个概念:BIOS时间系统的硬件时间。

时间不同步,原因非常简单

windows认为,BIOS时间就是当地时间。所以windows会直接显示BIOS时间。

ubuntu认为,BIOS时间应当是UTC时间格林尼治标准时间)。所以ubuntu会将BIOS时间加上8小时后再显示出来(在中国)。

所有的操作系统(不论是ubuntu还是windows)在启动后都会更新系统时间。流程如下:

1.电脑开机,读取BIOS时间并显示。(windows直接显示,ubuntu加8后再显示)

2.联网后,获取当地时间并显示。

3.更新BIOS时间。

联网后大家获取到的时间都是当地时间,这没问题。但ubuntu和windows在更新BIOS时间时,做法不同。windows获取到当地时间后,直接把BIOS时间设为当地时间;而ubuntu把BIOS时间设为UTC时间。比如现在是北京时间12点,UTC时间就是12-8=4点,ubuntu就会把BIOS时间设为4点。

案例

请您退出windows,进入ubuntu,在终端里输入一条指令,就可以验证上面的分析:

timedatectl status 

这个指令用来查看系统时间状态。如果您的显示如下:

timedatectl这个工具管理时间,特别方便

第一行,Local time=12点,是ubuntu联网获取到的当地时间。

第三行,RTC time=4点,是电脑的BIOS时间。可以看到,ubuntu把当地时间减去8小时,得到了UTC时间并赋给了BIOS。

最后一行,RTC in local TZ=no,这句话代表系统时间和BIOS时间不同步,即BIOS存储的是UTC时间,而系统时间是当地时间。

那么问题就来了,下次重启进入windows时,windows读到的BIOS时间是4点,而windows认为BIOS时间就是当地时间,所以就会直接显示4点。不过,windows也会联网,等他得到正确的12点后,他又会将BIOS设为12点,那么等你下次进ubuntu的时候,ubuntu又会把12点加上8,得到20点,再输出——如此循环,每次更换系统的时候显示的时间都不对。

解决方案

解决方案非常简单。直接在ubuntu终端中输入:

timedatectl set-local-rtc 1

这句话的作用是让ubuntu将系统时间和BIOS时间同步。现在,ubuntu和windows一样,都认为BIOS时间就是当地时间,联网更新时,也是直接将BIOS时间设为当地时间。这样就没问题了。

现在再输入timedatectl status查看系统时间状态:

warning是给你们的开发者看的,不是给我看的

第一行,Local time=12点。

第三行,RTC time=12点,即BIOS也被设为了12点。

最后一行,RTC in local TZ变为了yes。系统时间和BIOS时间完成同步。

弹出一个Warning,告诉你这种方法不太好,但我们为了同步两个系统的时间,也只能这么做了。

现在再重启进入windows,看到时间已经对了:

对了对了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值