双系统下windows与ubuntu系统时间不同步
我的笔电是windows系统,工作需要安装了ubuntu,于是成为双系统,于是从18年我就遇到了装了ubuntu系统之后windows时间显示错误的。这种情况下我会按照学长给出的帮助文档来输入命令,之后可以解决问题,但是后来重装系统之后会再次遇到这样的错误,忘记了当时输入的命令是啥,之后再去找就会感到非常的麻烦,那么,这个时候我决定,如果能够自己搞清楚问题的来龙去脉就好了,之后遇到这样的问题就可以自己漂亮地解决。
问题原因
查阅了这篇文章:link
原因就是,两个操作系统对时间的管理方式不一样,在linux下,他会默认把BIOS时间(也就是硬件时间)当成GMT+0时间,是世界标准时间,那么我们设置的上海也就是东八区时间,计算起来就是GMT+8,那么显示的时间就是BIOS+8。
当你把系统切换到windows,win会认为BIOS时间就是本地时间,那么这个BIOS时间已经被ubuntu设置成了伦敦时间,所以你的windows刚进去那会儿,时间会提早八个小时(我指的早,在这里应该被理解成数字上的小)。但是如果你设置了网络同步时间,那么过一段时间,windows的时间显示会自动恢复为正确的时间。
至于,硬件时间在windows下会不会被改,(也就是往后调8个小时),导致回到ubuntu之后会变成(8+8)在往后调的基础上再加上八个小时,我没有考证,因为我印象中我的ubuntu时间一直都是对的。
由于Window和linux两个系统设定时间时以主板CMOS内的时间为依据,但却有不同的时间计算标准。所以导致了系统时间的纠纷问题。
上面这句话,总结了原因。
windows/linux处理时间和时区
win直接将cmos时间认定为当前显示时间(本地时间),也不会去做时区的转换。这样如果调整系统时区的话,根据时区计算时间之后也会修改CMOS时间,设置保存之后,cmos的时间就被改变了,这是表示硬件上的时间被修改了。
linux,以当前的住吧你的时间作为伦敦时间(零时区),再根据系统设置的时区来最终确定当前系统时间。
解决方法
推荐在ubuntu下进行操作,也就是让ubuntu按照win的方式管理时间,禁止使用世界协调时间。
调出终端,输入
sudo vim /etc/default/rcS
修改文件中UTC=yes 为UTC=no
这个是从根源上的解决。解决办法其实很多,但是满足需求就够了。