Comment synchroniser le temps sur le réveil de l'hôte dans VirtualBox?

j'exécute une boîte basée sur Ubuntu 12.04 à L'intérieur de Vagrant en utilisant VirtualBox. Jusqu'à présent, tout va bien - sauf une chose:

supposons que la VM fonctionne. Ensuite, l'hôte va en mode standby. Après l'avoir réveillé à nouveau, la VM est toujours en marche, mais son horloge interne continue là où elle s'est arrêtée lorsque l'hôte s'est arrêté. Donc cela signifie essentiellement: mettre l'hôte de dormir pendant 15 minutes, le réveiller à nouveau, puis l'horloge interne de la VM est de 15 minutes fin.

Comment puis-je corriger cela (paramétrer l'heure manuellement n'est pas une option pour des raisons évidentes; -))? Y a-t-il un moyen d'exécuter un script à l'intérieur d'une VM vagabonde chaque fois que le système hôte change d'état?

j'ai lu dans le documentation que par défaut les ajouts invités VirtualBox synchronisent le temps avec l'hôte toutes les 10 Secondes. Apparemment, ce n'est pas le cas, mais je ne trouve aucun endroit où elle est handicapée. Ainsi, toutes les idées?

PS: L'invité Les ajouts sont installés et correspondent à la version de VirtualBox utilisée.

43
demandé sur Golo Roden 2013-10-21 13:24:47

6 réponses

la documentation manque de détails ici.

ce que VirtualBox fait toutes les 10 Secondes n'est qu'un léger ajustement (quelque chose comme 0.005 secondes). Ce n'est que lorsque le décalage horaire atteint un seuil (20 minutes par défaut) qu'une "vraie" résync est effectuée.

Vous pouvez réduire le seuil (i.e. à 10 secondes) avec la commande suivante:

VBoxManage guestproperty set <vm-name> "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 10000
48
répondu Emyl 2013-10-21 10:48:24

résumant les réponses de @zilupe et @Slobodan Kovacevic, la solution est d'ajouter ce qui suit à Vagrantfile:

config.vm.provider 'virtualbox' do |vb|
   vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000 ]
end

cela synchronisera les horloges à chaque fois que desync devient > 1S (1000ms)

18
répondu Dan Key 2016-06-21 13:45:31

je donne une autre solution pour synchroniser le temps entre guest & host sans installer Virtualbox guest addition:

  1. installez ntp sur votre invité, et décommentez ces lignes dans /etc/ntp.conf:

    disable auth
    broadcastclient
    

puis, redémarrez ntpservice ntp restart

  1. diffusion Active sur votre hôte:

    • pour les utilisateurs de Linux, éditez votre /etc/ntp.conf fichier et configurer Diffusion (vous devez adapter IP):

      diffusion 192.168.123.255

    • pour les utilisateurs de Windows, activez le "Windows Time" de service. Vous pouvez ensuite lire cette page pour le configurer pour diffuser l'heure

    puis, redémarrez le temps de service sur l'hôte.

4
répondu fred727 2015-12-29 20:51:09

Pour moi d'obtenir timesync de travail que j'avais à faire ceci:

vboxmanage setextradata «machine-name» "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0

il active le synchronisme. C'était, pour une raison inconnue, éteint.

2
répondu ctrl-alt-delor 2016-04-30 20:23:34

j'ai trouvé une solution:

  1. install ntpdate
  2. ajouter la permission" s " pour ntpdate, ce qui permet aux utilisateurs non-root d'exécuter ntpdate comme root:sudo chmod u+s /usr/sbin/ntpdate
  3. ajouter une ligne dans ~/.bashrc:ntpdate -u ntp.ubuntu.com

Après cela, chaque fois que vous vous connectez au système linux, le temps sera synchronisation une fois.

2
répondu mengqi 2017-09-29 02:41:07

vous pouvez installer les ajouts invités VirtualBox dans la VM pour synchroniser le temps automatiquement par VB.

1
répondu che--- 2013-10-21 09:48:36