web-dev-qa-db-fra.com

Comment synchroniser correctement l'heure sous Linux en tant qu'invité virtuel après que l'hôte ait quitté l'hibernation?

J'utilise plusieurs boîtes virtuelles pour le développement et la date et l'heure correctes sont importantes pour moi lorsque je commets des commits git. Je n'arrête pas mon hôte - il fonctionne pendant des mois sans redémarrer. Je l'hiberne seulement pour les nuits et les week-ends. Cela introduit un problème étrange aux systèmes d’exploitation invités (tous les fichiers debian de turnkeylinux.org) - après un certain temps, la date des systèmes d’exploitation invités est décalée de quelques jours.

Bien que tous les invités utilisent NTP, il ne fonctionne pas s'il détecte que la date est décalée de quelques valeurs importantes (quelques heures semblent suffire). Existe-t-il un moyen de forcer la synchronisation NTP même pour les grandes différences de temps? Ou toute autre solution permettant de restaurer la date et l'heure correctes sur les boîtes d'invité après la reprise de l'hôte en mode veille?

17
SiliconMind

En bref: Installer (le paquet ntp et les additions invité de VirtualBox) :)

  • Hôte: Windows 6.1 SP1, x64, 3 Go
  • VirtualBox: v4.3.6
  • Invité: Debian 7.3, 32 bits, 768 Ko

A partir de VirtualBox, attachez le fichier Oracle\VirtualBox\VBoxGuestAdditions.iso au système invité (Settings/Storage) et en tant que root.

cd /media/cdrom0
sh ./VBoxLinuxAdditions.run

L’Aide de VirtualBox à la section "9.4. Configuration avancée pour les invités Linux et Solaris" décrit les étapes, mais j’ai dû installer le package linux-headers-3.2.0-4-486.
Ensuite, en tant que racine,

/usr/lib/VBoxGuestAdditions/vboxadd setup
/usr/lib/VBoxGuestAdditions/vboxadd-service setup
/usr/lib/VBoxGuestAdditions/vboxadd setup

Ensuite, redémarrez l'invité.

J'ai vérifié en quittant le système invité (Alt+F4, puis commandez à VirtualBox de sauvegarder l’état de l’invité), attendez 5 minutes, puis redémarrez le système invité.
Au début, l'horloge a été restaurée à partir de sa valeur précédente, mais après quelques secondes tout s'est bien passé (horloge synchronisée)

17
Pierre

Le serveur NTP n'a pas été conçu pour s'exécuter à l'intérieur d'une machine virtuelle. Cela nécessite une horloge système haute résolution, avec des temps de réponse aux interruptions d'horloge traités avec un niveau de précision élevé. NTP le client peut s'exécuter dans certaines solutions de virtualisation. Exécutez NTP sur le système d'exploitation de base de la machine, puis demandez à vos différents systèmes d'exploitation invités de tirer parti de la bonne horloge créée sur le système. Même cela peut ne pas suffire, car il se peut que vous deviez activer des outils supplémentaires ou des options du noyau pour que les clients de machine virtuelle puissent synchroniser correctement leurs horloges virtuelles sur l'horloge système physique.

Source: Support NTP Problèmes connus

A partir de cette déclaration, et en lisant que votre partie importante est le temps de validation de git, il serait alors trivial d'écrire un point d'ancrage de pré-commit pour collecter l'heure sur votre ordinateur hôte. Vous pouvez l'obtenir simplement en demandant à votre ordinateur hôte:

ssh hostmachine "date +%Y%m%d%H%M%s"

1
vgoff