如何在VirtualBox内同步主机唤醒时间?
我使用VirtualBox在Vagrant内部运行一个基于Ubuntu 12.04的盒子。 到目前为止,一切都很好 – 除了一件事情:
假设虚拟机正在运行。 然后,主机进入待机模式。 再次唤醒后,虚拟机仍在运行,但内部时钟继续在主机closures时停止。 所以这主要是指:让主机hibernate15分钟,再次唤醒,然后虚拟机的内部时钟延迟15分钟。
我怎样才能解决这个问题(手动设置时间不是一个显而易见的select;-))? 当主机系统改变其状态时,是否有办法在Vagrant虚拟机内运行脚本?
我已经阅读了文档 ,默认情况下,VirtualBox Guest Additions每隔10秒就会与主机同步一次。 显然这没有发生,但我找不到任何地方,它被禁用。 那么有什么想法?
PS:Guest Additions已安装,并且与正在使用的VirtualBox版本相匹配。
文档在这里缺less一些细节。
什么VirtualBox每10秒只是轻微的调整(如0.005秒)。 只有在时差达到阈值(默认20分钟)时才会进行“真实”重新同步。
你可以用下面的命令减lessthresold(即10秒):
VBoxManage guestproperty set <vm-name> "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 10000
总结@zilupe和@Slobodan Kovacevic的答案,解决方法是将以下内容添加到Vagrantfile
:
config.vm.provider 'virtualbox' do |vb| vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000 ] end
每次当desync> 1s(1000ms)时,这将同步时钟,
我给出了另一个解决scheme来同步guest和host之间的时间而不安装Virtualbox guest添加:
-
在你的guest虚拟机上安装ntp,并在
/etc/ntp.conf
注释这些行:disable auth broadcastclient
然后,用service ntp restart
启动ntp
-
在您的主机上进行广播:
-
对于Linux用户,编辑
/etc/ntp.conf
文件并configuration广播(您必须修改IP):广播192.168.123.255
-
对于Windows用户,请激活“ Windows时间 ”服务。 然后你可以阅读这个页面来configuration它来广播时间
然后,在主机上重新启动时间服务。
-
对于我来得到timesync工作,我不得不这样做:
vboxmanage setextradata «machine-name» "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0
它打开时间同步。 出于某种原因,这是closures的。
您可以在VM中安装VirtualBox Guest Additions,以便通过VB自动同步时间。
我find一个解决scheme:
- 安装ntpdate
- 为ntpdate添加“s”权限,这允许非root用户以root身份运行ntpdate:
sudo chmod u+s /usr/sbin/ntpdate
- 在
~/.bashrc
添加一行:ntpdate -u ntp.ubuntu.com
之后,每次login到linux系统时,都会同步一次。