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.
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
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)
je donne une autre solution pour synchroniser le temps entre guest & host sans installer Virtualbox guest addition:
installez ntp sur votre invité, et décommentez ces lignes dans
/etc/ntp.conf
:disable auth broadcastclient
puis, redémarrez ntp
service ntp restart
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.
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.
j'ai trouvé une solution:
- install ntpdate
- 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
- 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.
vous pouvez installer les ajouts invités VirtualBox dans la VM pour synchroniser le temps automatiquement par VB.