VirtualBox: ¿Cómo sincronizar la hora del host y el invitado?

39

El tiempo en mi máquina virtual invitada es más rápido que el tiempo del host en aproximadamente 20-30 minutos. ¿Qué puedo hacer para que el tiempo en el invitado sea el mismo que en el host?

Acumenus
fuente

Respuestas:

16

Para un host Linux, primero instale el paquete DKMS (Dynamic Kernel Module Support) en la máquina invitada ( fuente ):

$ sudo apt-get install dkms

Luego instale Guest Additions en el sistema invitado:

$ sudo apt-get install virtualbox-guest-additions

Además, aquí hay descripciones de algunos comandos para ajustar la sincronización de tiempo de VirtualBox .

Nikita Krupenko
fuente
3
En distribuciones recientes, cambiará esos paquetes para virtualbox-guest-dkmsy virtualbox-guest-utils.
Yvan
aptes un administrador de paquetes específicamente para distribuciones basadas en Debian. Esto no funcionará en otros invitados Linux.
Kyle Strand
33

La siguiente configuración le permite a mi invitado mantener de manera confiable un tiempo exacto dentro de 1 segundo de mi host. Se prueba con el host que ejecuta VirtualBox 4.3.26 y el invitado que ejecuta la misma versión de VirtualBox Guest Additions. En cuanto a VirtualBox 5.x, hasta ahora no he tenido necesidad de hacer estos cambios de configuración; el tiempo ha estado sincronizado automáticamente.

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


En el host, enumere las máquinas virtuales para determinar el nombre de la máquina virtual relevante.

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

En el host, configure los parámetros de sincronización horaria para el invitado ejecutando los comandos a continuación. Primero establecido $VMNAMEcon su valor apropiado. Si el valor de $VMNAMEcontiene un espacio, por supuesto, debe citarse.

$ 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

Los valores de los parámetros de tiempo anteriores se han limitado a múltiplos de 10. En su lugar, puede ser tentador establecer timesync-set-threshold10000, pero esto puede arriesgar un cambio de tiempo bastante drástico cuando se activa y, por lo tanto, puede interrumpir las aplicaciones.


En el host, vea los valores relevantes actualizados para el invitado. Estos se pueden volver a confirmar en cualquier momento.

$ 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:

En el invitado, detenga y deshabilite todos los servicios internos de NTP y de cronometraje relacionados. No deben usarse, ya que es probable que interfieran con VirtualBox. En un invitado de CentOS 6:

$ 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

En el invitado, reinicie el servicio nombrado vboxadd-service. Suponiendo que Guest Additions se haya instalado previamente, este servicio se habría instalado y habilitado. En un invitado de CentOS 6:

$ /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

Si el tiempo en el invitado aún no está sincronizado, reinicie el invitado.

Acumenus
fuente
¡Gracias! El último paso para reiniciar el vboxadd-serviceservicio es lo que hizo que las cosas funcionen para mí, y no parece estar documentado (al menos en el enlace que proporcionó).
j_random_hacker
Cuando intento esto en un invitado de CentOS 7, ¿no se encuentra vboxadd-service? Esta es una instalación mínima, sin GUI.
Br
1

Doy otra solución para sincronizar el tiempo entre el invitado y el host sin instalar la adición del invitado Virtualbox:

  1. Instale NTP en su invitado y descomente estas líneas /etc/ntp.conf.
disable auth
broadcastclient
  1. Activa la transmisión en tu host. Para usuarios de Linux, edite su /etc/ntp.confarchivo y configure la línea
broadcast 192.168.123.255 

Para usuarios de Windows, active el servicio "Hora de Windows". Luego puede leer esta página para configurarla para el tiempo de transmisión

fred727
fuente
1
¿Qué tiene de importante la dirección IP 192.168.123.255?
Br