In most technology environments, automation is everything. Part of that automation is the deployment of operating systems to servers and workstations via Windows Deployment Services, with help of PXE boot. Here’s how to PXE boot a guest in Hyper-V.
Problem
You might have tried this before, and discovered that navigating to Properties -> Hardware -> firmware and changing the startup order so that PXE was first. And it didn’t work, did it? Why doesn’t it work?! It’s first in the boot order, right?!
What is PXE?
PXE is short for Preboot eXecution Environment, and is pronounced PXE. You can think of it as kind of a Windows version of a Linux LiveCD. We use PXE in the Windows-based enterprise to load a boot image from a network location, from which we can select a pre-configured OS image from a list stored on our WDS server.
This makes things easy for building a uniform, easy to deploy environment, with easily repeatable results every time.
So Why Won’t it Work with my Virtual Machine?
By default, SCVMM (or Hyper-V 3) utilizes a synthetic network adapter as part of the initial VM configuration. The downer of this is that synthetic card doesn’t start until after the guest OS does, which means it’s not really there before Windows boots up. Funky, right?
So to get around this, remove the synthetic card, and add a legacy network card to the virtual machine configuration, thus:
- Power down the guest
- In SCVMM, right-click the guest, and select Properties.
- In the Properties window, click Hardware Configuration
- Click the network adapter, usually labelled Network Adapter 1, then click Remove at the top of the window.
- Now click Add, and select Legacy network adapter from the list.
- Click Ok
Power on your guest, and you should see it PXE booting. Be sure to press F12 to select an image to boot from!