Prior to Windows Server 2012 Hyper-V, there was also a setting to enable running
older operating systems, such as NT 4, but this option has been removed from the
Hyper-V manager graphical user interface. The problem for older operating systems is
that modern processors return more information about the capabilities than can be
handled by the operating system, and it will blue screen (this was fixed in Windows
NT 4 SP6). This option can still be set, but it must be configured using PowerShell:
Set-VMProcessor -CompatibilityForOlderOperatingSystemsEnabled $true
A great way to understand these two settings is by leveraging the Coreinfo utility from
Sysinternals, which can list all features for a processor. You’ll find it at the following
location:
http://technet.microsoft.com/en-us/sysinternals/cc835722.aspx
When running Coreinfo on a processor without any compatibility enabled, I see all the
features available for the operating system. An enabled feature shows an * instead of a
- . When I run Coreinfo on the same virtual machine but after setting
CompatibilityForMigrationEnabled, all of the items in bold change from * to -, which
means that they are now hidden, as shown in the following listing. In this example,
SSSE3, SSE4.1, SSE4.2, and POPCNT were hidden. Running with
CompatibilityForOlderOperatingSystemsEnabled removed the entire Logical
Processor to Cache Map section from the returned data, which means that it was
hidden from the operating system. It is important to use these features only when
required, because you are removing capability from the processor, which you don’t
want to do unless you absolutely have to.
S:\Tools>coreinfo
Coreinfo v3.2 - Dump information on system CPU and memory topology
Copyright (C) 2008-2012 Mark Russinovich
Sysinternals - www.sysinternals.com
Intel(R) Xeon(R) CPU E5530 @ 2.40GHz
Intel64 Family 6 Model 26 Stepping 5, GenuineIntel
HTT Hyperthreading enabled
HYPERVISOR Hypervisor is present
VMX - Supports Intel hardware-assisted virtualization
SVM - Supports AMD hardware-assisted virtualization
EM64T * Supports 64-bit mode
SMX - Supports Intel trusted execution
SKINIT - Supports AMD SKINIT
NX Supports no-execute page protection
SMEP - Supports Supervisor Mode Execution Prevention
SMAP - Supports Supervisor Mode Access Prevention
PAGE1GB - Supports 1 GB large pages
PAE Supports > 32-bit physical addresses
PAT Supports Page Attribute Table
PSE Supports 4 MB pages