Injecting network drivers into a Hyper-V Server (or Windows Server) installation

A couple of weeks ago, I blogged about running Windows from a flash drive – specifically running Hyper-V Server 2008 R2. One thing I hadn’t got around to at that time though was injecting the necessary drivers to provide network access to/from the server – which is pretty critical for a virtualisation host! Under network settings, the Hyper-V Server Configuration (sconfig.vbs) showed that there were no active network adapters found but I knew this should be pretty easy to fix.

One of the strengths of the Hyper-V architecture is that it uses the standard Windows device driver model. This is in stark contrast to the monolithic model used for VMware ESX (and ESXi) and is the reason that I can’t do something similar with ESXi. In fact, adding network drivers to Hyper-V Server (or for that matter Windows Server 2008 running in server core mode, or even for command line administration of a full Windows Server 2008 installation) is pretty straightforward.

The network card I needed to support is a Marvell Yukon 88E8055 PCI-E Gigabit Ethernet Controller and, even though Windows 7 recognised the hardware and installed the appropriate drivers at installation time, I couldn’t find the drivers in the install.wim file on the DVD. That was no problem – Marvell’s download site had x64 drivers for Windows 7 available and these are also be suitable for Windows Server 2008 R2 and Hyper-V Server 2008 R2. Armed with the appropriate driver (yk62x64.sys v11.10.7.3), I ran pnputil -i -a yk62x64.inf on my Hyper-V Server:

Microsoft PnP Utility

Processing inf :            yk62x64.inf
Successfully installed the driver on a device on the system.
Driver package added successfully.
Published name :            oem0.inf

Total attempted:              1
Number successfully imported: 1

(oem0.inf and an associated oem0.pnf file were created in the %windir%\inf\ folder)

With drivers loaded, I restarted the server (probably not necessary but I wanted to ensure that all services were running) and Hyper-V Server recognised the network card, allowing me to make configuration changes if required.

To validate the configuration, I ran pnputil -e, to which the response was:

Microsoft PnP Utility

Published name :            oem0.inf
Driver package provider :   Marvell
Class :                     Network adapters
Driver date and version :   07/20/2009 11.10.7.3
Signer name :               Microsoft Windows Hardware Compatibility Publisher

So, that’s installing network drivers on Hyper-V Server, what about removing them? Here, I was less successful. I tried removing the plug and play package with pnputil -f -d oem0.inf and this removed the package from %windir%\inf but, after a reboot, my network settings persisted. I also used devcon.exe, the command line equivalent to the Windows Device Manager (making sure I had the amd86 version, not i386 or ia64) to successfully remove the PnP package (devcon -f dp_delete oem0.inf) as well as the network interface (devcon remove "PCI\VEN_11AB&DEV_4363") but this still left several copies of yk62x64.sys available in various Windows system folders. Again, after a reboot the network card was re-enabled. Uninstalling network drivers is not a very likely scenario in most cases but, with a bootable flash device potentially roaming between hardware platforms, it would be good to work out how to do this. Of course, my work is based on the release candidate – the RTM version of Hyper-V Server 2008 R2 is yet to be released to web.

(Failing to) run VMware ESXi on a notebook computer

In an attempt to re-acquaint myself with some of the VMware product set (it’s now over 3 and a half years since I studied for my VMware Certified Professional accreditation and I’ve hardly touched a VMware product since), I decided to have a play with VMware ESXi.

In fact, one of my colleagues wants to have a system whereby his colleagues, who get supplied with images from EMC in VMware format and Microsoft in VHD format, can dual-boot between hypervisors. I couldn’t see why that wouldn’t work (I suggested just using VMware Server and Virtual Server on the same box but he was worried about future-proofing the solution), so I set about trying to dual-boot Microsoft Hyper-V Server 2008 and VMware ESXi on the same machine.

First up, I downloaded ESXi 4.0 and started to run the installer, which detected my hardware but then returned:

Failed to load
Failed to load lvmdriver

It turns out that ESXi 4.0 requires that a compatible network card is available before it will install and, not surprisingly, the Marvell Yukon 88E8055 PCI-E Gigabit Ethernet Controller in my notebook PC is not the kind of server-class hardware that ESX is designed for!

So I gave up on ESXi 4.0 and tried ESXi 3.5. This installed pretty quickly but, of course the network card was still unsupported and my IP address was 0.0.0.0 (no way of managing the box!).

As this is a notebook computer, I can’t upgrade the network card (unless I use a USB-connected NIC) but my plea for help on the VMware forums didn’t turn up anything useful. It seems I can run VMware ESX in VMware Workstation or I can run VMware Player from a USB drive. The long and the short of it is that, if VMware don’t provide driver support in ESX/ESXi, you are stuffed. No great surprises there but it’s really frustrating not to be able to get something working!