如何在VirtualBox中同步主机唤醒时间?

时间:2013-10-21 09:24:47

标签: virtual-machine virtualbox vagrant clock

我正在使用VirtualBox在Vagrant中运行基于Ubuntu 12.04的盒子。到目前为止,一切都很好 - 除了一件事:

我们假设VM正在运行。然后,主机进入待机模式。在再次唤醒之后,VM仍在运行,但其内部时钟继续在主机发生故障时停止的位置。所以这基本上意味着:让主机进入睡眠状态15分钟,再次唤醒它,然后VM的内部时钟延迟15分钟。

如何解决这个问题(手动设置时间不是明显的原因;-))?有没有办法在主机系统更改其状态时在Vagrant VM内运行脚本?

我在documentation中读到,默认情况下,VirtualBox Guest Additions每隔10秒与主机同步一次。显然这没有发生,但我找不到它被禁用的任何地方。那么任何想法?

PS:安装了Guest Additions并匹配正在使用的VirtualBox版本。

6 个答案:

答案 0 :(得分:54)

文档中缺少一些细节。

VirtualBox每10秒做一次只是轻微的调整(类似于0.005秒)。只有当时差达到阈值(默认为20分钟)时才会进行“真正的”重新同步。

您可以使用以下命令减少thresold(即10秒):

VBoxManage guestproperty set <vm-name> "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 10000

答案 1 :(得分:24)

总结@zilupe和@Slobodan Kovacevic的答案,解决方案是在Vagrantfile添加以下内容:

config.vm.provider 'virtualbox' do |vb|
   vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000 ]
end

每当desync变为&gt;时,这将同步时钟。 1s(1000ms)

答案 2 :(得分:6)

我提供了另一种解决方案来同步客人和客人之间的时间。没有安装Virtualbox guest虚拟机的主机:

  1. 在您的访客上安装ntp,并在/etc/ntp.conf中取消评论这些行:

    disable auth
    broadcastclient
    
  2. 然后,使用ntp

    重新启动service ntp restart
    1. 主持人的有效广播:

      • 对于Linux用户,编辑/etc/ntp.conf文件并配置广播(必须调整IP):

        广播192.168.123.255

      • 对于Windows用户,请激活&#34; Windows Time&#34;服务。然后,您可以read this page将其配置为广播时间

      然后,在主机上重启时间服务。

答案 3 :(得分:4)

为了让我获得时间同步工作,我必须这样做:

vboxmanage setextradata «machine-name» "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0

它打开了timeync。出于某种原因,这是关闭的。

答案 4 :(得分:2)

我找到了解决方案:

  1. 安装ntpdate
  2. 添加&#34; s&#34;对ntpdate的权限,这允许非root用户以root身份运行ntpdate:sudo chmod u+s /usr/sbin/ntpdate
  3. ~/.bashrc中添加一行:ntpdate -u ntp.ubuntu.com
  4. 之后,每次登录linux系统时,时间都会同步一次。

答案 5 :(得分:1)

您可以在VM中安装VirtualBox Guest Additions以通过VB自动同步时间。