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

Gol*_*den 53 virtualbox clock virtual-machine vagrant

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

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

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

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

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

Emy*_*myl 57

文档中缺少一些细节.

VirtualBox每10秒做一次只是轻微的调整(类似于0.005秒).仅当时间差达到阈值(默认为20分钟)时才进行"真实"重新同步.

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

VBoxManage guestproperty set <vm-name> "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 10000
Run Code Online (Sandbox Code Playgroud)

  • @GoloRoden感谢`vb.customize`,但参数错误.正确的命令是`vb.customize ["guestproperty","set",:id,"/ VirtualBox/GuestAdd/VBoxService/ - timesync-set-threshold",10000]` (30认同)
  • 可能值得一提的是,vb.customize应该在一个块内,例如:`config.vm.provider"virtualbox"do | vb |` (12认同)
  • 好吧,我想通了:`vb.customize ["guestproperty","set",:id," - timesync-threshold",10000]` (5认同)

Dan*_*hka 26

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

config.vm.provider 'virtualbox' do |vb|
   vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000 ]
end
Run Code Online (Sandbox Code Playgroud)

每当desync变为> 1s(1000ms)时,这将同步时钟


fre*_*727 6

我提供了另一种解决方案来同步客户端和主机之间的时间,而无需安装Virtualbox guest虚拟机:

  1. 在您的guest虚拟机上安装ntp,并在以下位置取消注释/etc/ntp.conf:

    disable auth
    broadcastclient
    
    Run Code Online (Sandbox Code Playgroud)

然后,重新启动ntpservice ntp restart

  1. 主持人的主动广播:

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

      广播192.168.123.255

    • 对于Windows用户,请激活" Windows时间 "服务.然后,您可以阅读此页面以将其配置为广播时间

    然后,重新启动主机上的时间服务.