Heure correcte dans une VM Linux

Si vous avez travaillé avec des machines virtuelles Linux sous Windows (Virtual PC, Virtual Server ou Hyper-V), peut-être aurez-vous déjà remarqué une différence d'une ou deux heures entre l'heure du système Windows et l'heure de la machine virtuelle Linux. Voici pourquoi, et comment résoudre le problème.

Windows et Linux n'ont pas la même gestion de de l'horloge de la machine. Windows suppose que l'horloge de la machine est à l'heure locale. C'est à dire, s'il est 15h35 (heure d'été) en France, alors l'horloge interne est à 15h35. Linux de son coté suppose que l'horloge interne est à l'heure GMT (aussi appelée UTC). Donc à 15h35 (heure d'été) en France, l'horloge est supposée être à 13h35. Si l'horloge est à 15h35, alors le système Linux affiche 17h35 (heure d'été) en France.

Or la machine virtuelle démarre avec son horloge virtuelle initialisée à l'heure du système hôte, c'est à dire l'heure locale. Le système Linux croira donc qu'il s'agit de l'heure GMT, et ajoutera par exemple 2 heures pour l'heure d'été française (17h35 au lieu de 15h35.)

Pour résoudre le problème, il sufit d'indiquer au système Linux que l'horloge de la machine n'est pas à l'heure GMT, mais à l'heure locale :

  • en tant que root, éditer le fichier /etc/default/rcS
  • remplacer la ligne UTC=yes par : UTC=no

Cela s'applique aux systèmes Debian et dérivés.