47

The time in my guest VM is faster than the host time by about 20-30 minutes. What can can I do so that the time in the guest is the same as on the host?

3 Answers 3

17

For a Linux host, first install the DKMS (Dynamic Kernel Module Support) package on the guest machine (source):

$ sudo apt-get install dkms

Then install Guest Additions into guest system:

$ sudo apt-get install virtualbox-guest-additions

Also, here are descriptions of some commands to tune VirtualBox time synchronization.

2
  • 3
    On recent distributions, you will change those packages for virtualbox-guest-dkms and virtualbox-guest-utils.
    – Yvan
    May 11, 2018 at 9:39
  • 1
    apt is a package manager specifically for Debian-based distributions. This will not work on other Linux guests. Nov 19, 2019 at 18:36
40

The following setup allows my guest to reliably maintain a time that is accurate to within 1 second of my host. It is tested with the host running VirtualBox 4.3.26 and the guest running the same version of VirtualBox Guest Additions. As for VirtualBox 5.x, I haven't thus far had any need to make these configuration changes; the time has automatically been in sync.

Reference: https://www.virtualbox.org/manual/ch09.html#changetimesync


On the host, list VMs to ascertain the name of the relevant VM.

$ VBoxManage list vms | awk '{print $1}'
"CentOS6"

On the host, configure time synchronization parameters for the guest by running the commands below. First set $VMNAME with its appropriate value. If the value of $VMNAME contains a space, it should of course be quoted.

$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-interval" 10000
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-min-adjust" 100
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore" 1
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 1000

The values of the time parameters above have been constrained to multiples of 10. It may be tempting to set timesync-set-threshold to 10000 instead, but this can risk a rather drastic time change when it's triggered, and may therefore break applications.


On the host, view the updated relevant values for the guest. These can be reconfirmed at any time.

$ VBoxManage guestproperty enumerate ${VMNAME} | grep timesync | sort
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-interval, value: 10000, timestamp: 1402110397618554000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-min-adjust, value: 100, timestamp: 1402110777505446000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore, value: 1, timestamp: 1402110904964050000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold, value: 1000, timestamp: 1402110660162295000, flags:

On the guest, stop and disable all internal NTP and related timekeeping services. They should not be used as they are likely to interfere with VirtualBox. On a CentOS 6 guest:

$ sudo /sbin/chkconfig ntpd off
$ /sbin/chkconfig --list | grep ntp
ntpd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
ntpdate         0:off   1:off   2:off   3:off   4:off   5:off   6:off

On the guest, restart the service named vboxadd-service. Assuming Guest Additions was previously installed, this service would have been installed and enabled. On a CentOS 6 guest:

$ /sbin/service vboxadd-service status
Checking for VBoxService ...running
$ sudo /sbin/service vboxadd-service restart
Stopping VirtualBox Guest Addition service                 [  OK  ]
Starting VirtualBox Guest Addition service                 [  OK  ]
$ /sbin/service vboxadd-service status
Checking for VBoxService ...running

If the time on the guest is not yet synced, reboot the guest.

2
  • 1
    Thanks! The final step of restarting the vboxadd-service service is what got things working for me, and doesn't seem to be documented (at least at the link you gave). Feb 7, 2018 at 16:56
  • When I try this on a CentOS 7 guest, vboxadd-service is not found? This is a minimal install, no GUI.
    – Br.Bill
    Aug 6, 2019 at 17:35
2

I give an other solution to sync time between guest & host without installing Virtualbox guest addition :

  1. Install NTP on your guest, and de-comment these lines in /etc/ntp.conf.
disable auth
broadcastclient
  1. Activate broadcast on your host. For linux users, edit your /etc/ntp.conf file and configure the line
broadcast 192.168.123.255 

For Windows users, activate the “Windows Time” service. You can then read this page to configure it to broadcast time

1
  • 4
    What's significant about IP address 192.168.123.255?
    – Br.Bill
    Aug 6, 2019 at 17:40

You must log in to answer this question.