virtual-machine - puente - red interna virtualbox
¿Cómo sincronizar la hora en el servidor de activación dentro de VirtualBox? (6)
Estoy ejecutando un cuadro Ubuntu 12.04 dentro de Vagrant usando VirtualBox. Hasta el momento, todo está bien, excepto por una cosa:
Supongamos que la máquina virtual se está ejecutando. Luego, el host pasa al modo de espera. Después de reactivarlo, la máquina virtual aún se está ejecutando, pero su reloj interno continúa donde se detuvo cuando el host se caía. Así que esto básicamente significa: Poner el host a dormir durante 15 minutos, reactivarlo nuevamente, luego el reloj interno de la VM se retrasa 15 minutos.
¿Cómo puedo solucionar esto (configurar la hora manualmente no es una opción por razones obvias ;-))? ¿Hay alguna manera de ejecutar un script dentro de una VM Vagrant cada vez que el sistema host cambie su estado?
He leído en la documentation que, de forma predeterminada, las Adiciones de invitados de VirtualBox sincronizan el tiempo con el host cada 10 segundos. Aparentemente esto no está sucediendo, pero no puedo encontrar ningún lugar donde esté desactivado. Entonces, ¿alguna idea?
PD: Las Adiciones a los invitados están instaladas y coinciden con la versión de VirtualBox que se está utilizando.
Doy otra solución para sincronizar el tiempo entre el invitado y el host sin instalar la adición de invitados de Virtualbox:
instale ntp en su invitado, y
/etc/ntp.conf
comentario de estas líneas en/etc/ntp.conf
:disable auth broadcastclient
Luego, reinicie ntp
con service ntp restart
Transmisión activa en tu host:
Para usuarios de Linux, edite su archivo
/etc/ntp.conf
y configure broadcast (debe adaptar IP):emisión 192.168.123.255
Para usuarios de Windows, active el servicio " Tiempo de Windows ". A continuación, puede leer esta página para configurarla para transmitir el tiempo
Luego, reinicie el servicio de tiempo en el host.
Encontré una solución:
- instalar ntpdate
- agregue el permiso "s" para ntpdate, esto permite a los usuarios no root ejecutar ntpdate como root:
sudo chmod u+s /usr/sbin/ntpdate
- agregue una línea en
~/.bashrc
:ntpdate -u ntp.ubuntu.com
Después de eso, cada vez que inicie sesión en el sistema Linux, la hora se sincronizará una vez.
La documentación carece de algunos detalles aquí.
Lo que VirtualBox hace cada 10 segundos es solo un ligero ajuste (algo así como 0.005 segundos). Solo cuando la diferencia de tiempo alcanza un umbral (20 minutos por defecto) se realiza una resincronización "real".
Puede reducir el umbral (es decir, a 10 segundos) con el siguiente comando:
VBoxManage guestproperty set <vm-name> "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 10000
Para que funcione sincronizando el tiempo, tenía que hacer esto:
vboxmanage setextradata «machine-name» "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0
Enciende el timesync. Por alguna razón, estaba apagado.
Resumiendo las respuestas de @zilupe y @Slobodan Kovacevic, la solución es agregar lo siguiente a Vagrantfile
:
config.vm.provider ''virtualbox'' do |vb|
vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000 ]
end
Esto sincronizará los relojes cada vez que desync llegue a ser> 1s (1000ms)
puede instalar VirtualBox Guest Additions en la VM para sincronizar la hora automáticamente con VB.