Thursday, March 19, 2009

Make VMWare stop syncing your guest clock with your host

Here's a little trick which I've just sumbled upon. If you're ever doing some sort of software or malware testing and you need your VM to stick to a time far in the past or in the future and persist this through suspend, resume, reboot, etc. add these properties to your .vmx file:

tools.syncTime = FALSE
time.synchronize.continue = FALSE
time.synchronize.restore = FALSE
time.synchronize.resume.disk = FALSE
time.synchronize.shrink = FALSE
time.synchronize.tools.startup = FALSE

This will pretty much prevent your VM from ever syncing its clock with your host. At first, I thought that disabling the clock sync option in VMWare tools was enough, but it turned out not to work so well. Your clocks would stay out of sync while the VM was running, but the second you suspended and resumed it or rebooted it the VM would sync. The above options will prevent that.

Also, you'll want to make sure that you disable any NTP or similar services within the guest OS so that it doesn't end up syncing with an internet time server.

I can't tell you how long I've been trying to figure this out. At some point I just gave up because I didn't think it possible.

Here's the great PDF which describes VMWare's timekeeping and where I found those options.

Cheers and happy VM-ing!

17 comments:

  1. Thanks, this is a very succinct description and just what I was looking for!

    ReplyDelete
  2. thanks for posting this... saved me tons of time..

    ReplyDelete
  3. I just tested this solution without success after reading the documentation (page 17, specifically). I am running VMware Workstation v7.1.3 build 324285 (latest). Guest is Windows 2008 Enterprise Evaluation which I am using solely for a temporary testing environment (60 days at most). I load data into SQL databases and test applications locally while the client sets up their physical environment. Then I toss the whole guest after I move the tested data to the physical server.

    I want to stop the time in this guest so that I can clone it in a pristine condition (just my tools) and not have to reinstall everything every time I need a new temporary test environment.

    I tried your method, but the clock still advanced and synchronized with the host on reboot of the guest. I also turned off Windows Time Service inside the guest and isolated the guest from the internet, network, and the host.

    I'm baffled again. Could it be M$FT has defeated this solution since your 2009 post? Any further testing or assistance you can provide would be sincerely appreciated.

    ReplyDelete
  4. It's a great idea, I'm sorry to say it just doesn't work! :-(

    I tried this on Windows 7, rebooting still syncs the clock the host unfortunately. Hopes dashed, I can't find an working answer to this problem anywhere...

    ReplyDelete
  5. Yeah, I just tried this with Fusion (on a Mac) with a Win98 VM, and it didn't work.

    ReplyDelete
  6. Yeah, it does not work for me too. I noted the added lines in .vmx (... = "FALSE") disappear after I reboot the guest OS. My guest OS = Windows 7.

    ReplyDelete
  7. It works great. Thanks for the solution.

    ReplyDelete
  8. Works great for me w/ Windows 7 x64

    ReplyDelete
  9. Your solution works great. Just found it myself the other day on VMware.com.

    I still have a problem though... If you leave the guest running and suspend/sleep the host, then the guest time gets updated when the host resumes. Any ideas on how to fix that?

    ReplyDelete
  10. Hey! I found the answer. That is how it works, ask a question, then find the answer 10 minutes later. The VMware document on time keeping is not up to date.

    There is another vmx setting to disable time synchronization when the host resumes after sleep/hibernation. See the knowledge base article link below.

    time.synchronize.resume.host = "FALSE"

    http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1189

    You can use this option and leave the Windows OS w32time (windows time) service running.

    I tested this with a windows XP Pro guest on a Win 7 Home Prem host running VMware 7.1.4 build-385536.

    ReplyDelete
  11. it works good.for those did't get try this way.first line is already there just remove quotes for and paste remaining down to that.

    ReplyDelete
  12. Does not works for me, I am on VMware Workstation 8.0.0 build-471780 and my guest OS is Win 7.

    I have tried uninstalling VM Tools too with no luck.

    ReplyDelete
  13. For people where it's not working correctly; please refer to this page http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1189

    It states that some versions require a '0' instead of false.

    ReplyDelete
  14. Perfect. Thanks a lot.

    ReplyDelete
  15. Thank you very much! It works fine for WinXP and workstation 6

    ReplyDelete