VirtualBox: How to sync host and guest time?
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.
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.
I give an other solution to sync time between guest & host without installing Virtualbox guest addition :
- Install NTP on your guest, and de-comment these lines in
/etc/ntp.conf
.
disable auth
broadcastclient
- 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