我正在使用VirtualBox在Vagrant内部运行基于Ubuntu 12.04的盒子 . 到目前为止,一切都很好 - 除了一件事:
我们假设VM正在运行 . 然后,主机进入待机模式 . 在再次唤醒之后,VM仍在运行,但其内部时钟继续在主机发生故障时停止的位置 . 所以这基本上意味着:让主机进入睡眠状态15分钟,再次唤醒,然后VM的内部时钟延迟15分钟 .
我该如何解决这个问题(由于明显的原因,手动设置时间不是一个选项;-))?有没有办法在主机系统更改其状态时在Vagrant VM内运行脚本?
我在_2537879中读到,默认情况下,VirtualBox Guest Additions每隔10秒与主机同步一次 . 显然这没有发生,但我找不到它被禁用的任何地方 . 那么任何想法?
PS:安装Guest Additions并匹配正在使用的VirtualBox版本 .
6 回答
文档中缺少一些细节 .
VirtualBox每10秒做一次只是轻微的调整(类似于0.005秒) . 仅当时间差达到阈值(默认为20分钟)时才进行“真实”重新同步 .
您可以使用以下命令减少thresold(即10秒):
总结@zilupe和@Slobodan Kovacevic的答案,解决方案是在
Vagrantfile
添加以下内容:每当desync变为> 1s(1000ms)时,这将同步时钟
我提供了另一种解决方案来同步客户端和主机之间的时间,而无需安装Virtualbox guest虚拟机:
/etc/ntp.conf
中取消注释这些行:然后,使用
service ntp restart
重新启动ntp
您主机上的有效广播:
对于Linux用户,编辑
/etc/ntp.conf
文件并配置广播(必须调整IP):广播192.168.123.255
然后,重新启动主机上的时间服务 .
为了让我获得时间同步工作,我必须这样做:
vboxmanage setextradata «machine-name» "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0
它打开了时间同步 . 出于某种原因,这是关闭的 .
我找到了解决方案:
安装ntpdate
为ntpdate添加"s"权限,这允许非root用户以root身份运行ntpdate:
sudo chmod u+s /usr/sbin/ntpdate
在
~/.bashrc
中添加一行:ntpdate -u ntp.ubuntu.com
之后,每次登录linux系统时,时间都会同步一次 .
您可以在VM中安装VirtualBox Guest Additions以通过VB自动同步时间 .