VirtualBox: How to sync host and guest time?

40

17

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?

kokloong

Posted 2012-08-16T04:46:50.890

Reputation:

Answers

16

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.

Nikita Krupenko

Posted 2012-08-16T04:46:50.890

Reputation: 424

3On recent distributions, you will change those packages for virtualbox-guest-dkms and virtualbox-guest-utils. – Yvan – 2018-05-11T09:39:14.563

apt is a package manager specifically for Debian-based distributions. This will not work on other Linux guests. – Kyle Strand – 2019-11-19T18:36:18.503

34

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.

Acumenus

Posted 2012-08-16T04:46:50.890

Reputation: 902

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). – j_random_hacker – 2018-02-07T16:56:23.960

When I try this on a CentOS 7 guest, vboxadd-service is not found? This is a minimal install, no GUI. – Br.Bill – 2019-08-06T17:35:40.180

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

fred727

Posted 2012-08-16T04:46:50.890

Reputation: 21

2What's significant about IP address 192.168.123.255? – Br.Bill – 2019-08-06T17:40:39.870