Not quite an Exchange post, but technically related depending on your circumstances. Today I decided to “bite the bullet” and migrate all of my Virtual Machines to Windows Hyper-V 2012 server away from Windows 2008 R2 with Hyper-V 2.
There were a number of reasons why I wanted to do this:
- My current test rig was using Windows Server 2008 R2 with Hyper-V 2. I was also using Microsoft Virtual Machine Manager 2012 – this all culminated in a base memory utilisation of about 2.3 – 3GB of RAM before I had even booted up a Virtual Machine instance. As Windows Hyper-V Server is based on a cut down version of Windows Server Core (containing just the Virtualisation components) The memory overhead is slightly less at around 1.2 GB.
- I had a full O/S running on the server which was probably a waste of a license given that I did nothing else with it aside from run virtual instances – if I had less to update and manage I could simplify my environment.
Of course, moving to this new platform presented its own set of unique challenges, not least of which the loss of a GUI – which (as I found) was about to cause me a number of issues in the context of installing drivers.
Although Hyper-V 2012 Server installed with no issues – The problem that I had straight away was a lack of network connectivity. The Asus P8Z68-V PRO has an on-board Intel 82579LM Network Interface Adapter (see below)– which is a traditional Desktop based NIC, and unsurprisingly neither Asus or Intel supply native drivers for server operating systems.
Now, this is not a huge problem, as generally speaking the driver software does not vary a huge amount between Windows 8 and Windows Server 2012 – so the theory is that you can download the Windows 8 driver which will work correctly with Windows Server 2012. However the truth is that it does, but not without a bit of messing about!
The driver packs from either Asus or Intel contain no provision within the Windows 8 installation INF files to allow for an installation on Windows Server 2012 Server. So, you have to bodge the INF file so that the installation process will work on the server platform.
Modifying the Driver Pack
I downloaded the Intel Driver from Intel’s website and extracted the contents to a folder on my local PC. Within the extracted package there was a folder called “PRO1000” (Pro drivers for Gigabit Network Adapters). I drilled down further within PRO1000 to WinX64\NDIS63\ and located the file entitled “e1c63x64.inf” this is the INF installation file for Windows 8 x64 platforms for the 82579LM NIC.
I opened the file in Notepad and located the [ControlFlags] section (see image below) – I removed all entries (but not the ControlFlags section).
I then located the section [Intel.NTamd22.214.171.124] – selected the last 3 highlighted entries (shown the image below) and copied them to the clipboard:
I then pasted these to the bottom of the entries located in the [Intel.NTamd64.6.2] section – see the image below.
I then saved the INF file.
Installing the Driver on Windows Hyper-V Server 2012
This process needs to be done from the command line on Windows Hyper-V Server 2012 – however, before this was attempted I needed to disable the “Driver Signature Enforcement” security function on Windows Hyper-V Server.
In essence most drivers and associated files from reputable manufacturers are signed with a unique digital ID. By modifying the INF file – it no longer conforms to the signature within the package catalog file – so Windows will choke and not install the driver.
I disabled Driver Signature Enforcement by executing the following commands at the Windows Hyper-V Server 2012 command line:
bcdedit /set LOADOPTIONS DISABLE_INTEGRITY_CHECKS bcdedit /set TESTSIGNING ON bcdedit /set nointegritychecks ON
After entering the above commands I rebooted the server. When the server had restarted I checked to see that my options had been configured by running the bcdedit command with no parameters – which produced output that looked like the following:
I was now ready to install the modified driver package onto my system. Now, as there is no GUI in Windows Hyper-V Server 2012 you cannot use the GUI install for drivers software – you need to manually install using the pnputil tool.
I copied the relevant files over to the server and then from the command line typed:
pnputil –i –a h:\<path>\e1c63x64.inf
The process then started and I was prompted if I really wanted to install the unsigned driver – to which I said yes. The install completed successfully.
I then rebooted the server – where I then found that I had network connectivity.
To tidy up, I then switched Driver Enforcement back on (for security reasons) but using the following commands:
bcdedit /set LOADOPTIONS ENABLE_INTEGRITY_CHECKS bcdedit /set TESTSIGNING OFF bcdedit /set nointegritychecks OFF
I hope that someone might find this useful if they find themselves in the same (or similar situation). The above process can also apply to Windows Server 2012 Core edition.