欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

VirtualBox下win10系统时间比实际时间慢8个小时

程序员文章站 2022-06-09 14:07:49
...

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)”开启也无济于事,不过网上有提到,这个原因是虚拟机与宿主机系统的时间同步出现了问题。后又经一番折腾,终于找到了解决办法:

  1. 关闭虚拟机系统,将virtualBox完全退出。
  2. 找到虚拟机目录下的 [虚拟机名].vbox 的配置文件,使用gedit打开。
  3. 找到如下位置:
   ……
     <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,如果大家遇到类似问题可以尝试这种方法修改一下!如果有其他更好的建议和意见,欢迎大家在下方留言讨论!