首页 文章

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

提问于
浏览
48

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

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

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

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

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

6 回答

  • 1

    文档中缺少一些细节 .

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

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

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

    总结@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)时,这将同步时钟

  • 24

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

    • 在您的访客上安装ntp,并在 /etc/ntp.conf 中取消注释这些行:
    disable auth
    broadcastclient
    

    然后,使用 service ntp restart 重新启动 ntp

    • 您主机上的有效广播:

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

    广播192.168.123.255

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

  • 4

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

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

    它打开了时间同步 . 出于某种原因,这是关闭的 .

  • 6

    我找到了解决方案:

    • 安装ntpdate

    • 为ntpdate添加"s"权限,这允许非root用户以root身份运行ntpdate: sudo chmod u+s /usr/sbin/ntpdate

    • ~/.bashrc 中添加一行: ntpdate -u ntp.ubuntu.com

    之后,每次登录linux系统时,时间都会同步一次 .

  • 2

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

相关问题