Sorry for digging out old topic, but I found out this is possible:
The problem with branded media is that KVM's BIOS VM ships with diffrent ACPI tables. Installer on the other hand validates it. In the time of writing this I am using Debian 8 with virtlib 1.2.9 and qemu-system-x86 1.7.0 (qemu-kvm).
So simply you need to have matched ACPI (dmidecode -t 0
and dmidecode -t 1
) tables on VM to get it done.
Those tables for Lenovo look like:
# dmidecode 2.12
SMBIOS 2.8 present.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: LENOVO
Version: FBKTB4AUS
Release Date: 07/01/2015
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 6656 kB
Characteristics:
PCI is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
BIOS ROM is socketed
EDD is supported
5.25"/1.2 MB floppy services are supported (int 13h)
3.5"/720 kB floppy services are supported (int 13h)
3.5"/2.88 MB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
Printer services are supported (int 17h)
ACPI is supported
USB legacy is supported
BIOS boot specification is supported
Targeted content distribution is supported
UEFI is supported
BIOS Revision: 1.180
Firmware Revision: 1.13
# dmidecode 2.12
SMBIOS 2.8 present.
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: LENOVO
Product Name: 30AH001GPB
Version: ThinkStation P300
Serial Number: S4M88119
UUID: CECF333D-6603-E511-97D5-6C0B843F98BA
Wake-up Type: Power Switch
SKU Number: LENOVO_MT_30AH
Family: To be filled by O.E.M.
For HP:
# dmidecode 2.11
SMBIOS 2.7 present.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: HP
Version: W07
Release Date: 05/05/2011
Address: 0xF0000
Runtime Size: 64 kB
ROM Size: 8192 kB
Characteristics:
PCI is supported
PNP is supported
BIOS is upgradeable
BIOS shadowing is allowed
ESCD support is available
Boot from CD is supported
Selectable boot is supported
EDD is supported
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
CGA/mono video services are supported (int 10h)
ACPI is supported
USB legacy is supported
BIOS boot specification is supported
Function key-initiated network boot is supported
Targeted content distribution is supported
Firmware Revision: 2.23
# dmidecode 2.11
SMBIOS 2.7 present.
Handle 0x0100, DMI type 1, 27 bytes
System Information
Manufacturer: HP
Product Name: ProLiant ML330 G6
Version: Not Specified
Serial Number: CZ104601XF
UUID: 30303734-3536-5A43-3130-343630315846
Wake-up Type: Power Switch
SKU Number: 470065-183
Family: ProLiant
For IBM:
# dmidecode 2.12
# SMBIOS entry point at 0x7f6be000
SMBIOS 2.5 present.
Handle 0x002F, DMI type 0, 24 bytes
BIOS Information
Vendor: IBM Corp.
Version: -[D6E154AUS-1.13]-
Release Date: 09/23/2011
Address: 0xE0000
Runtime Size: 128 kB
ROM Size: 4096 kB
Characteristics:
PCI is supported
PNP is supported
BIOS is upgradeable
BIOS shadowing is allowed
Boot from CD is supported
Selectable boot is supported
EDD is supported
3.5"/2.88 MB floppy services are supported (int 13h)
Print screen service is supported (int 5h)
8042 keyboard services are supported (int 9h)
Serial services are supported (int 14h)
CGA/mono video services are supported (int 10h)
ACPI is supported
USB legacy is supported
LS-120 boot is supported
ATAPI Zip drive boot is supported
Function key-initiated network boot is supported
Targeted content distribution is supported
BIOS Revision: 0.0
Firmware Revision: 0.0
# dmidecode 2.12
# SMBIOS entry point at 0x7f6be000
SMBIOS 2.5 present.
Handle 0x0030, DMI type 1, 27 bytes
System Information
Manufacturer: IBM
Product Name: System x3650 M3 -[7945J4G]-
Version: 00
Serial Number: KD50NCR
UUID: 49B2EFEE-5E45-3522-8FE3-C230FF137F25
Wake-up Type: Other
SKU Number: XxXxXxX
Family: System x
I had to install Lenovo's Windows 2012 Fundation branded media on Lenovo hardware.
I achieved it by adding to qemu parammeters:
-smbios type=1,manufacturer=LENOVO,product=30AH001GPB,version=ThinkStation P300,serial=S4M88119,uuid=cecf333d-6603-e511-97d5-6c0b843f98ba,sku=LENOVO_MT_30AH,family=P300 -acpitable file=/var/lib/libvirt/images/slic.bin -acpitable file=/var/lib/libvirt/images/msdm.bin
Or by adding to libvirtd's VM xml file:
<domain type='kvm' id='18' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
# ^^^ be aware of XML's namespace for the prefixes ^^^
# without it qemu:arg tag won't work
...
<qemu:commandline>
<qemu:arg value='-smbios'/>
<qemu:arg value='type=0,vendor=LENOVO,version=FBKTB4AUS,date=07/01/2015,release=1.180'/>
<qemu:arg value='-smbios'/>
<qemu:arg value='type=1,manufacturer=LENOVO,product=30AH001GPB,version=ThinkStation P300,serial=S4M88119,uuid=cecf333d-6603-e511-97d5-6c0b843f98ba,sku=LENOVO_MT_30AH,family=P300'/>
<qemu:arg value='-acpitable'/>
<qemu:arg value='file=/var/lib/libvirt/images/slic.bin'/>
<qemu:arg value='-acpitable'/>
<qemu:arg value='file=/var/lib/libvirt/images/msdm.bin'/>
</qemu:commandline>
</domain>
There is also more elegant way of doing it, but unfortunately my libvirt didn't want to pass ACPI tables to VM:
<os>
....
<sysinfo type='smbios'>
<bios>
<entry name='vendor'>LENOVO</entry>
</bios>
<system>
<entry name='manufacturer'>HP</entry>
<entry name='product'>30AH001GPB</entry>
<entry name='serial'>S4M88119</entry>
<entry name='sku'>LENOVO_MT_30AH</entry>
</system>
</sysinfo>
</os>
How to create dump of ACPI table?
Simply:
root@node0:/sys/firmware/acpi/tables# ls -l
total 0
-r-------- 1 root root 146 Sep 23 13:44 APIC
-r-------- 1 root root 165 Sep 23 13:44 ASF!
-r-------- 1 root root 56 Sep 23 13:44 BGRT
-r-------- 1 root root 52 Sep 23 13:44 DBGP
-r-------- 1 root root 184 Sep 23 13:44 DMAR
-r-------- 1 root root 96238 Sep 23 13:44 DSDT
drwxr-xr-x 2 root root 0 Sep 23 13:44 dynamic
-r-------- 1 root root 268 Sep 23 13:44 FACP
-r-------- 1 root root 64 Sep 23 13:44 FACS
-r-------- 1 root root 156 Sep 23 13:44 FIDT
-r-------- 1 root root 68 Sep 23 13:44 FPDT
-r-------- 1 root root 56 Sep 23 13:44 HPET
-r-------- 1 root root 207330 Sep 23 13:44 LUFT
-r-------- 1 root root 60 Sep 23 13:44 MCFG
-r-------- 1 root root 85 Sep 23 13:44 MSDM
-r-------- 1 root root 374 Sep 23 13:44 SLIC
-r-------- 1 root root 1337 Sep 23 13:44 SSDT1
-r-------- 1 root root 2776 Sep 23 13:44 SSDT2
-r-------- 1 root root 877 Sep 23 13:44 SSDT3
-r-------- 1 root root 13608 Sep 23 13:44 SSDT4
root@node0:/sys/firmware/acpi/tables# cat SLIC > /var/lib/libvirt/images/slic.bin
It'll work for Windows 2008/2012 branded media. It's very important to check if those arguments are passed correctly, check VM's log in : /var/log/libvirt/
vm_name.log
. Run some live distro in VM, for example sysresccd and check output of dmidecode -t 0; dmidecode -t 1
it must match with hardware version.
As a prof (Windows 2012 Foundation AFAIK is branded only):