Error: BIOS time gets set as local time after every VM reboot
search cancel

Error: BIOS time gets set as local time after every VM reboot

book

Article ID: 419717

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

  • After the reboot a VM sees time as UTC instead of UTC+1
  • Cron jobs cannot be run on the specified time as time is not correct
  • VMs were cloned from one specific template and all VMs from that template have the same issue
  • Once VM is rebooted ntp slowly drift the system clock until is set correctly, and after reboot is again 53 minutes away

Environment

VMware vSphere ESXi 8.0.X

Cause

  • When template was created the time was off by 3 minutes in one direction during summer time, then off by 57 minutes in the opposite direction during standard time, which makes an hour in total  57 + 3 = 60.
  • The offset in the .nvram file (in the CMOStimB section) is 3439 seconds (57 minutes and 19 seconds) and 3439 seconds is almost 3 minutes behind CET (UTC+1), therefore expected to see that value as a 3 minute error if you created a VM that expects CET+1 in the RTC

Resolution

  1. Using UTC in the RTC would make sense for Linux; it can use either UTC (generally preferred) or local time (configurable, mostly for dual-boot with Windows).
  2. Set the BIOS time via the guest OS
  3. Setting rtc.diffFromUTC = 0