我正在使用VirtualBox在Vagrant中运行基于Ubuntu 12.04的盒子。到目前为止,一切都很好 - 除了一件事:
我们假设VM正在运行。然后,主机进入待机模式。在再次唤醒之后,VM仍在运行,但其内部时钟继续在主机发生故障时停止的位置。所以这基本上意味着:让主机进入睡眠状态15分钟,再次唤醒它,然后VM的内部时钟延迟15分钟。
如何解决这个问题(手动设置时间不是明显的原因;-))?有没有办法在主机系统更改其状态时在Vagrant VM内运行脚本?
我在documentation中读到,默认情况下,VirtualBox Guest Additions每隔10秒与主机同步一次。显然这没有发生,但我找不到它被禁用的任何地方。那么任何想法?
PS:安装了Guest Additions并匹配正在使用的VirtualBox版本。
答案 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虚拟机的主机:
在您的访客上安装ntp,并在/etc/ntp.conf
中取消评论这些行:
disable auth
broadcastclient
然后,使用ntp
service ntp restart
主持人的有效广播:
对于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)
我找到了解决方案:
sudo chmod u+s /usr/sbin/ntpdate
~/.bashrc
中添加一行:ntpdate -u ntp.ubuntu.com
之后,每次登录linux系统时,时间都会同步一次。
答案 5 :(得分:1)
您可以在VM中安装VirtualBox Guest Additions以通过VB自动同步时间。