问题
我有一台HP服务器,附带了Windows Server 2008的OEM副本。我在硬件上安装了CentOS 5.4,并试图将Windows Server 2008安装为KVM guest虚拟机。 当我尝试安装Windows Server 2008时,它抱怨说我试图安装在不受支持的硬件上。 此问题是由于硬件SMBIOS信息未传递给KVM来宾而引起的。
背景
在我走之前,我想说明我正在尝试做的是在许可证范围内。 惠普为VMWare提供支持的解决scheme,但没有KVM的正式解决scheme。 经过多番研究,我打算使用的平台是CentOS和KVM,所以请不要build议其他平台。
我通过电子邮件发送了KVM开发人员邮件列表,并被告知这是可能的,并得到如下build议:
“你可以转储你的主机BIOS的SLIC表,并使用-acpitable参数将它提供给客户的BIOS。
我用dmidecode,并得到了需要传递的参数,但我不知道在哪里传递参数。
更新
看起来像CentOS 5.4使用virt-install而不是qemu。 Qemu是在包pipe理器,我可以在卸载qemu-img后安装它们(它们发生冲突,qemu包含qemu-img中的包)。 所以现在我知道如何传递可运行的参数,但是我无法将从dmidecode出来的映射映射为-acpitable。
您可能还必须使用MS签名的驱动程序与KVM来宾。 http://www.linux-kvm.com/content/tip-how-setup-windows-guest-paravirtual-network-drivers http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
我知道RHEV提供的驱动程序已经签名,不太清楚CentOS
对不起,挖掘旧的话题,但我发现这是可能的:
品牌媒体的问题是KVM的BIOS虚拟机带有不同的ACPI表。 安装程序另一方面validation它。 在写这篇文章的时候,我使用了virtlib 1.2.9和qemu-system-x86 1.7.0(qemu-kvm)的Debian 8。
因此,只需要在VM上匹配ACPI( dmidecode -t 0和dmidecode -t 1 )表即可完成。
联想的这个表格如下所示:
# 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 OEM
对于惠普:
# 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
对于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
我不得不在联想硬件上安装联想的Windows 2012 Fundation品牌媒体。
我通过添加qemu参数来实现它:
-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
或者通过添加到libvirtd的VM xml文件中:
<domain type='kvm' id='18' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> ... <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>
还有更好的做法,但不幸的是我的libvirt不想把ACPI表传递给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>
如何创buildACPI表的转储? 只是:
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
它将适用于Windows 2008/2012品牌媒体。 检查这些参数是否正确传递非常重要,请检查虚拟机的日志: /var/log/libvirt/ vm_name .log 。 在VM中运行一些live distro,例如sysresccd,检查dmidecode -t 0; dmidecode -t 1输出dmidecode -t 0; dmidecode -t 1 dmidecode -t 0; dmidecode -t 1它必须与硬件版本匹配。
作为一名教授(Windows 2012 Foundation AFAIK只有品牌):
从您的主板提取SLIC表,并使用以下代码推出自己的seabios: https : //github.com/ghuntley/seaslic
不幸的是,涉及Windows签名驱动程序的答案并不反映OEM / SLP激活。 这些驱动程序可能会提高性能,但Windows OEM / SLP激活严格涉及存储在BIOS中的数据,特别是ACPI表。
Michael Tokarev能够自己做到这一点,通过修改源代码将SLIC表格包含在整个表格格式中,但是他也提到可以使用几个选项来完成这个操作 – “可用”( http://kerneltrap.org/mailarchive/linux- kvm / 2010/3/24/6260060 )。 他对源代码的改变只是让他包含一个完整的ACPI表,而不是传递几个参数来在命令行上包含它的不同方面。
我现在正在考虑这个,因为我想在我们办公室的一些设置上实现这个testing目的。 我们有很多OEM机器,我们可以在每台机器上安装,但是虚拟化为testing提供了很多好处以及非常快速的部署,所以我希望看到这一点。
我想要这个post的OP,rancidfishbreath,他从dmidecode中提取的内容,他是如何在给kvm的选项中格式化的。如果你可以添加任何开发人员给你的input,我将不胜感激。
检查http://jamar.org/2012/09/28/installing-windows-2008-hp-oem-as-kvm-guest/
提供smbios信息到客户xmlconfiguration文件(/ etc / libvirt / qemu),可以使用dmidecode转储
更多信息: http : //libvirt.org/formatdomain.html#elementsSysinfo
它工作做我的win2k12