Jamarův blog

...o všem, co mě napadne

Installing Windows 2008 HP OEM as KVM Guest

I have bought HP Proliant MicroServer N40L (a nice cube-like entry level server for home or small bussiness) with OEM installation of Windows Server 2008 R2 from HP. Since I’d like to run more operating systems on this server, I decided to install Win 2008 as Virtual Machine on Linux KVM server. But, a little while after installation CD boots up, some HP utility popped up and informed me, that „This system is not supported platform“.

From the licensing point of view it’s okay to install it as Virtual Machine, because Microsoft provides one hardware and one virtual license for Windows Server 2008 R2 Standard. Even HP supports this scenario and provides a workaroud for it’s installation media for VMware ESX via addin a „SMBIOS.reflectHost=TRUE“ parameter to guest configuration, which makes VMware to pass BIOS and System information from host hardware to virtual gues. But, KVM doesn’t have such option, so I needed to find another way how to fool that stupid HP check that it’s being installed on HP hardware. After a bit of googling I’ve found, that libvirt can read manually configured BIOS and System information which will be shown into Guest.
So, at first we need to get the information from host hardware, so we’ll run „dmidecode“ command, which returns something like this:

# dmidecode 2.11
 SMBIOS 2.6 present.
 35 structures occupying 1145 bytes.
 Table at 0x000FB330.
Handle 0x0000, DMI type 0, 24 bytes
 BIOS Information
 Vendor: HP
 Version: O41
 Release Date: 07/29/2011
 ....
 Handle 0x0001, DMI type 1, 27 bytes
 System Information
 Manufacturer: HP
 Product Name: ProLiant MicroServer
 Version:
 Serial Number: 123456AB
 UUID: 1E3BD500-1DD2-11B2-8000-009C02ABDD39
 Wake-up Type: Power Switch
 SKU Number: 987654-321
 Family:
 ...

Now just open your Guest XML file and into <os> tag add:

<smbios mode='sysinfo'/>

an then, somewhere into <domain> tag add this, with values from dmidecode output:

<sysinfo type='smbios'>
 <bios>
  <entry name='vendor'>HP</entry>
 </bios>
 <system>
  <entry name='manufacturer'>HP</entry>
  <entry name='product'>ProLiant MicroServer</entry>
  <entry name='serial'>123456AB</entry>
  <entry name='sku'>987654-321</entry>
 </system>
</sysinfo>

And that’s all, now just start your  Guest and the Windows Server 2008  installation shoud pass the HP hardware check.

Also remember to connect ISO with VirtIO drivers before installation, If you’re going to use VirtIO storage controller for best performance. After manually loading VirtIO drivers,  Windows Installer loads your virtual Hard Drive correctly and the installation process then went flawlessly.

5 Comments

Add a Comment
  1. To successful start HP OEM 2008 (ROK edition also)… In Xen 4.3 You only need to hex-edit hvmloader (seabios) file and change only one set: /bios-strings/bios-vendor/ from „Xen“ to „HP“, delete space sign and insert it to /bios-strings/system-version/ section (all to keep correct file block size). Another way is to compile smbios.c if You like ;) Thanks Jamar!

  2. Great article! Solved my problem on a new Fujitsu machine.
    Thanks!

  3. What about Windows server 2012? This solution down’t work. Has any additional info to be provided in the smbios tag? Wich one?

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

© 2007-2016 Jaroslav Martínek | Licence Creative Commons | powered by Wordpress Frontier Theme