P2V to HyperV Host Causes Boot Failure with VID.SYS

I’ve spent a lot of time recently doing P2V conversions to HyperV hosts. For each server, I performed a P2V and after installing the HyperV integration tools, I received a Windows Boot Manager error on file Vid.sys with Status 0xc0000098 and an error message Windows failed to load because a required file is missing, or corrupt as shown on next reboot:

DellP2VVidSysError

The immediate resolution is (please see below, however):

  • Shut off the VM and mount the System VHD/VHDX file in the HyperV host machine;
  • Browse to <Drive>:\windows\system32\drivers and rename vid.sys to vid_old.sys;
  • Unmount the drive from the host and start the VM;
  • Remove the device from Device Manager by going to View > Show Hidden Devices, then opening Non Plug and Play Devices and removing the Vid driver.

Now, I don’t advocate randomly deleting device drivers, but I was completely unable to get my servers to start any other way. I’ve had this happen with three different machines each having the same resolution. Here’s what I’ve found:

  • All servers involved have been converting from Dell PowerEdge servers – this may be circumstantial;
  • I’ve not had the issue with newly-built Server 2008R2 SP1 VMs or machines converted from HP ProLiant hardware, each with the same versions seen below;
  • For all converted machines, I used Disk2VHD or ShadowProtect to create the VHD file. On one server, I attempted both suspecting an issue in conversion, both had same issue;
  • On each server, I mounted the VHD and performed a CHKDSK to be sure there was no filesystem corruption – none was found;
  • On each server, the issue occurred immediately after installation of Hyper-V Integration Tools v. 6.2.9200.16433 (from Server 2012RTM host) or 6.3.9600.16384 (from Server 2012R2 host).
  • On all servers (affected or unaffected), the VID.SYS file had a version of 6.1.7600.17514 (from Server 2008R2 SP1) and an MD5 hash of 1720d283bdb1eaa7f21976586ff52b95.
  • However, a Server 2008R2 non-SP1 server converted from the exact same Dell server as an affected server did not have the issue with VID.SYS version 6.0.6002.18005.
  • On one customer server, a P2V conversion had the same issue, but two fresh Server 2008R2 SP1 installs on the same host with the same integration services installation did not have the issue with the same VID.SYS driver file;
  • Each server had separate A/V software installed (ESET, Trend WFBS and WebRoot);
  • The Integration Services installation cabinet file does not contain a VID.SYS image, and so I have to assume it’s not actually touched by the installation software.
  • None of the servers converted had HyperV installed on them prior to (or after) the P2V.

All of this information leads me to believe that the issue has nothing to do with the VID.SYS file or the integration tools, but some other interaction I have not been able to sniff out. However, the purpose of the VID.SYS driver is to facilitate communication between the Parent OS installation and the Hypervisor software, which isn’t necessary for any of my VMs (since they aren’t running HyperV in that manner). Thus, I feel it safe to leave the driver off of the system.