I’ve been doing some Windows 10 deployments on Mac OS running VMware Fusion (version 11.5.7) and have been struggling with DRIVER_PNP_WATCHDOG blue screens booting Windows PE. After some investigation, I narrowed it down to the network adapter on the virtual machine: Remove it, everything works fine. Leave it, and the VM blue screens after a few minutes. But some virtual machines worked fine, it just depended on the OS type that was chosen when the VM was created; sometimes, I chose “Other” instead of “Windows 10” (using the same VM to run Linux, so there was a reason).
Comparing the “working” versus “non-working” VMs, there was one significant difference: The working VM was configured to use an e1000e network adapter; the non-working one was using e1000. OK, so what’s the difference? From the VMware documentation, there are a number of (relevant) different network adapter types available:
- E1000, an emulated version of the Intel 82545EM Gigabit Ethernet NIC.
- E1000E, an emulated version of the Intel 82574 Gigabit Ethernet NIC.
- VMXNET3, a VMware-specific paravirtualized NIC that avoids emulation a random piece of hardware.
In a perfect world, you would want the best performance, and you’d get that from VMXNET3 – but that requires the right drivers in Windows PE. Since I didn’t want to mess with that, I changed the network adapter from “e1000” to “e1000e” and my blue screens went away.
Interestingly, the VMware Fusion UI doesn’t let you change this (it’s “smarter” than you are), but you can edit the .vmx file associated with the VM:
(You might ask “why not just use Hyper-V?” In this particular case, that would work fine, but I have a different issue on Hyper-V, maybe more on that at a later date.)