您的位置:首页 > 运维架构 > Linux

如何修正因Windows和Linux或者Mac双系统引起的系统时间错误

2014-02-28 20:49 1576 查看

如何修正因Windows和Linux或者Mac双系统引起的系统时间错误

 
曾经装过Windows和Linux或OS X双系统的人肯定都遇到过这样的情况:在Linux或OS X系统中设置好时区(+8)和系统时间以后,当再次重启返回Windows系统中后,会发现Windows系统的时间会错误,而误差刚好是在Linux或 OS X系统中设置的时区数。

出现这种情况的原因是由于两种系统在设定时间时均以主板CMOS中的时间为依据,却又使用不同的时间计算标准。具体来说:

Linux和苹果操作系统(UNIX变种)以当前主板CMOS时间做为国际协调时间(UTC), 再根据系统设置的时区来最终确定当前系统时间。比如时区设置为UTC+8(北京时间)而当前CMOS时间为02:00,那么系统会将这两个时间相加,显示
在桌面的当前系统时间为10:00。而Windows 操作系统则直接把CMOS时间认定为当前显示时间,不根据时区转换。

* Windows把系统硬件时间当作本地时间(Local Time),即操作系统中显示的时间跟CMOS中显示的时间是一样的。

* Linux/Unix/Mac把CMOS时间当作UTC,操作系统中显示的时间是硬件时间经过换算得来的,比如说北京时间是UTC+8,则系统中显示时间是CMOS时间+8。

这样,当电脑中同时有多系统时,就出现了问题。假如你的Linux和Windows中设置的时区都为北京时间东八区,而你在Linux中把当前系统时间更 改为10:00,则此时硬件中存储的实际是UTC时间02:00。这时你重启进入Windows后,你会发现windows系统中显示的时间是 02:00,比Linux中慢了八个小时。同理,你在Windows中更改或用网络同步了系统时间后,再到Linux中去看,系统就会快了8小时。那怎么 来解决这种冲突呢?一种就是让Windows把CMOS时间当作UTC,与Linux/Unix
/Mac保持一致。另一种就是让Linux/Unix/Mac把系统时间当作本地时间,与Windows保持一致。

一、下面先介绍修改windows的设置,(以Windows7 64-bit为例):

使用组合键Win+R打开运行窗口,输入regedit 回车,找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control \TimeZoneInformation”,右键新建New > DWORD (32-bit) Value,命名为RealTimeIsUniversal,键值为1




添加好的记录如下图所示




二、Linux系统中的修改方法

编辑/etc/default/rcS,把其中的“UTC=yes”改成“UTC=no”,保存后重启系统就可以了。

更新:Windows7 64-bit系统中不知道什么原因系统时间会自动增加8小时,即使是已经通过网络同步以后,10分钟左右就会自己重置回去。具体原因还在核查中……

更新二:原因查明,原来是Windows系统未能修改CMOS时间导致网络同步时间后又被Windows系统自动修改回去,到BIOS中把时间调前8个小时后问题解决!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: