VirtualBox下win10系统时间比实际时间慢8个小时
因工作需要,博主主机系统是Ubuntu14.04,平时可能会用到windows系统,装双系统又太麻烦,所以自然而然就想到了虚拟机。之前用过virtualBox,感觉挺不错,在Ubuntu下安装也方便,所以随便找了个4.3.36的版本就装上了,又到网上找了一个win10的iso,以下安装过程省略1000字……
- But,,,win10系统装上了以后,发现时间不对呀,总比正常时间晚了8个小时,why???
首先想到的,自然是win10系统的系统时间同步问题,一检查,window Time服务是正常开着的呀,会不会是没有同步?好,打开控制面板的时间设置,找到“Internet 时间”,更新了下时间,时间对了,嗯,感觉就是一个小问题嘛,以为就这样过了,高高兴兴干活去了!
- But,,,第二天开机,发现时间又晚了8个小时,有些莫名其妙。。。。
以为是服务启动延时,没太理它,,,可一个上午过去了,这时间还是没更新,有些蛋蛋地忧伤,总不能让我每次开机都要手动更新一次吧,妈蛋!心想既然更新不对,那就别更新了,手动设置吧。于是又打开控制面板,到“时间和日期”里,把自动设置时间和自动设置时区开关关了,手动把时间日期都设置了一遍,然后又高高兴兴干活去了!
- But,,,第三天开机,发现时间还是晚了8个小时,尼玛。。。。心里面一万只草泥马奔腾而过!
自动更新和手动设置都不行,我意识到了这里面肯定出现了问题。大家都知道正常的win10系统,就算是没开启系统时间的同步功能,手动设置时间以后,最多每天慢个几秒钟,十天半个月也就会相差一两分钟,怎么可能一晚上就慢8个小时呢?而且我的宿主机Ubuntu系统时间完全是正确的,所以问题很可能不在虚拟机的win10系统,而是virtualBox!于是到Oracle官网上面去看看,未果。。。那就度娘呗,上去一看,什么安装增强功能,在虚拟机设置里面,把“硬件时钟使用国际标准时间(UTC)”开启也无济于事,不过网上有提到,这个原因是虚拟机与宿主机系统的时间同步出现了问题。后又经一番折腾,终于找到了解决办法:
- 关闭虚拟机系统,将virtualBox完全退出。
- 找到虚拟机目录下的 [虚拟机名].vbox 的配置文件,使用gedit打开。
- 找到如下位置:
……
<ExtraData>
<ExtraDataItem name="GUI/LastGuestSizeHint" value="1855,1031"/>
<ExtraDataItem name="GUI/LastNormalWindowPosition" value="65,24,960,432,max"/>
<ExtraDataItem name="GUI/LastScaleWindowPosition" value="-109,112,1657,798,max"/>
<ExtraDataItem name="GUI/MiniToolBarAlignment" value="top"/>
<ExtraDataItem name="GUI/SaveMountedAtRuntime" value="yes"/>
<ExtraDataItem name="GUI/ShowMiniToolBar" value="yes"/>
<ExtraDataItem name="VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" value="0"/>
<!--增加如下一行代码-->
<ExtraDataItem name="VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" value="0"/>
</ExtraData>
……
4 修改TimeOffset:
……
<BIOS>
<ACPI enabled="true"/>
<IOAPIC enabled="true"/>
<Logo fadeIn="true" fadeOut="true" displayTime="0"/>
<BootMenu mode="MessageAndMenu"/>
<TimeOffset value="28800000"/>
<PXEDebug enabled="false"/>
</BIOS>
……
这里的 <TimeOffset value="28800000"/>
,默认是<TimeOffset value="0"/>
,这个时间差异主要还是调整这里,单位是ms,计算公式为(以我现在晚8个小时为例):8*60*60*1000 = 28800000
修改完毕,保存,打开虚拟机,再重启几次尝试一下,时间都完全正确了!如果正确修改并保存后打开虚拟机时间还是不对,就要检查一下是否是因为没有完全关闭虚拟机,可以到终端里面使用top命令查看一下vritualbox相关的进程是否有完全关闭!
这个问题的原因没有去深究,在同一个virtualbox下,我装了一个xp系统和一个win10系统,xp系统的时间在修改前后都没有问题,只有win10系统才出现这个问题,个人推测可能是virtualbox的某些版本和win10系统的兼容性bug,如果大家遇到类似问题可以尝试这种方法修改一下!如果有其他更好的建议和意见,欢迎大家在下方留言讨论!