In Part 1 of this series I introduced Hyper-V Manager and some of the things you should do prior to creating virtual machines, including configuring the Hyper-V settings and creating the required virtual networks. In Part 2 I will cover the basics of creating new virtual machines, with a focus on Generation 1 virtual machines before covering Generation 2 virtual machines in the next post. This difference is important to know if you have to have VM portability between different machines with different Hyper-V capabilities. Let’s get things started with a Gen 1 virtual machine, and explain the steps involved in creating and configuring one.

To start off, if we right click on our Hyper-V machine, we can select New and then Virtual Machine.

This launches the New Virtual Machine Wizard, and you can prevent this page from appearing again if you choose the Do not show this page again checkbox.

Here we give the new VM a name and can choose to store it in a different location to the default location.

Now we come to the Generation 1 versus Generation 2 decision. What are some of the things you need to consider? Take a look at the following tables with Windows compatilibty from Technet. Check the link for more information on supported non-Microsoft operating system compatibility listings.

64-bit versions of Windows

Generation 1

Generation 2

Windows Server 2012 R2
Windows Server 2012
Windows Server 2008 R2
Windows Server 2008
Windows 10®
Windows 8.1
Windows 8
Windows 7

32-bit versions of Windows

Generation 1

Generation 2

Windows 10®
Windows 8.1
Windows 8
Windows 7

Another important difference is around the boot methods that are supported, here you can see that it’s not all ticks for Gen 1, as Gen 2 provides PXE using the synthetic adapter which provides performance and configuration benefits, and it also supports booting from SCSI versus booting from IDE.

Boot method

Generation 1

Generation 2

PXE boot by using a standard network adapter
PXE boot by using a legacy network adapter
Boot from a SCSI virtual hard disk (.VHDX) or virtual DVD (.ISO)
Boot from IDE Controller virtual hard disk (.VHD) or virtual DVD (.ISO)
Boot from floppy (.VFD)
There are more differences than I have covered, but I’ll save those for tomorrow’s post

We can assign a fixed amount of memory, or alternatively you can use Dynamic Memory which allows higher VM density by allowing VMs to only use the memory they need, and release that which they don’t. We will revisit this one later in the post.

In the last post we saw how to create a Virtual Switch, and here we can see how we consume them within a VM.

Now we get to give the virtual hard drive a different name if needed, and can also change the location. Alternatively we can either use an existing disk, such as one you’ve created or a vendor supplied one, or attach a disk later.

This is where we can choose how to install the OS, from mounting a physical or virtual CD/DVD-ROM, a bootable floppy or from a PXE based solution like WDS.

The final page of the wizard is the summary where you can double check your settings, but after you click Finish you will probably still need to go in and make a few adjustments, which we wil do next.

The new virtual machine has been created, and if I right click on it and select Settings, I can start making more advanced changes to the VMs configuration. Note that many of these settings cannot be changed while the VM is running.

The first thing we can see is that if there is any additional virtualised hardware we need to provide to the VM we can do it here.

I’m selecting the RemoteFX 3D Video Adpater that I enabled in the previous post, as it’s probably the least self-explanatory of the hardware options presented here.

With RemoteFX we can select the number of monitors the VM can support, the resolution and the amount of dedicated video memory.

In contrast to the previous RemoteFX screenshot, you can see that this one has a 4K monitor with 1GB of dedicated video memory.

Memory allows us to adjust the amount of RAM available to the VM, and if we enable Dynamic Memory we can set minimum and maximum amounts, as well as configuring the buffer. Then we can specify the memory weight of the VM in order for it get the appropriate memory priority when other VMs are running.

Next up we can configure the hard drive. With Gen 1 VMs we can add additional drives, including SCSI drives, but we can’t boot from SCSI drives, that requires Gen 2 VMs.

With the CPU we can choose the number of virtual CPUs, up to the total number of cores the PC has, and with we can also implement some resource control options here to ensure the VM receives an adequate CPU allocation against the other VMs that are running.

The final thing that I’ll cover in today’s post is the Compatibility Configuration for CPUs, which allows the VM to be more easily moved between different generations of CPUs within the same product family. This is generally seen as more of a server requirement than a client side requirement, as it has a big impact in scenarios like Live Migrations with Windows Server and Hyper-V server.