qemu-kvm 使用 seabios 的作为 bios 实现,位于/usr/share/qemu-kvm/bios.bin。该 bios.bin 仅包含部分来自宿主机的 SLIC 信息,但不完整,无法通过 Window OEM 验证。在KVM上安装完成的windows2008虚拟机会因为上面的原因而无法激活。下面介绍的方法是如何使用seaslic工具来生成一个新有可用于 OEM激活windows 2008 的QEMU bios.bin文件
一、下载文件链接:
1、sealic项目源码,(seaslic 项目对 seabios 项目打了一个 patch 用于解决预安装正版 windows 的宿主机,改装 linux 运行 kvm 后,让虚拟机 bios 也有和宿主机一样的 SLIC,或是生成一个指定的SLIC 。简单的说就是把宿主机 bios 里的 SLIC 信息导入到虚拟机的 bios.bin 文件中去,或是把指定的SLIC信息导入到虚拟机的bios.bin文件中去。让虚拟机也有正确的 OEM 标识)。
git clone git://github.com/ghuntley/seaslic
2、seabios 文件
wget http://code.coreboot.org/p/seabios/downloads/get/seabios-1.7.3.2.tar.gz
3、SLIC 2.1 BINS 1-31-2011.7z 文件,此文件可以提供很多OEM机器的 SLIC 文件和OEM证书
wget http://rghost.net/download/25221821/71a02846b35d0959cee57ea415c7e03211c44a5d/SLIC%202.1%20BINS%201-31-2011.7z
4、seabios 生成后的验证工具
http://forums.mydigitallife.info/threads/6925-SLIC-ToolKit-x86-x64-(Includes-PKey-amp-Cert-Backup
二、操作方法:
1、把比较新的seabios源文件放入seaslic项目目录中
cd /root/seaslic
git clone git://github.com/ghuntley/seaslic
wget http://code.coreboot.org/p/seabios/downloads/get/seabios-1.7.3.2.tar.gz
tar xf seabios-1.7.3.2.tar.gz
mv seabios-1.7.3.2/* seaslic/seabios.submodule
2、解压SLIC 2.1 BINS 1-31-2011.7z文件,我这里使用了DELL的SLIC
wget http://rghost.net/download/25221821/71a02846b35d0959cee57ea415c7e03211c44a5d/SLIC%202.1%20BINS%201-31-2011.7z
7za x SLIC\ 2.1\ BINS\ 1-31-2011.7z -r -o ./
mv SLIC\ 2.1\ BINS/DELL/2.1\ BIN\ \&\ 2.0\ Certificate/Dell[DELL-PE_SC3-DELL]2.1.BIN ./SLIC
3、用seaslic工具把DELL的SLIC,生成一个新的给qemu-kvm使用的seabios文件bios.bin。
yum install -y make gcc patch iasl
cd /root/seaslic/seaslic
vi patch.sh ####更改如下的内容,其实就是把DELL的SLIC替代实体机系统的SLIC,因为不是所有的机器都支持OEM的
#sudo xxd -i /sys/firmware/acpi/tables/SLIC | grep -v -E “len “| sed ‘s/unsigned char./static char SLIC[] = {/‘ > seabios.submodule/src/acpi-slic.hex
sudo xxd -i /root/seaslic/SLIC | grep -v -E “len “| sed ‘s/unsigned char./static char SLIC[] = {/‘ > seabios.submodule/src/acpi-slic.hex
./patch.sh
###新的SLIC的bios.bin文件就在 ./seabios.submodule/out/bios.bin目录下面。
mkdir /opt/bios
mv ./seabios.submodule/out/bios.bin /opt/bios/
4、更改kvm虚拟机的配置
virsh edit windows2008R2
#把下面
#改为
#增加下面几行
5、在虚拟机上用seabios 生成后的验证工具SLIC toolkit 对bios进行校验。
6、激活 windows 客户机
在windows2008虚拟机上使用下面的命令:
#导入DELL的OEM证书
C:\tools\SLIC 2.1 BINS\DELL\2.1 BIN & 2.0 Certificate~Certificate~>slmgr -ilc DELL-DELL-2.0.XRM-MS
#安装DELL OEM 的 license
slmgr -ipk BKCJJ-J6G9Y-4P7YF-8D4J7-7TCWD
#license可以在这里下到
http://forums.mydigitallife.info/threads/2827-Server-2008-Server-2008-R2-OEM-SLP-Keys
好,大功告成了,看看,你的windows2008虚拟机是不是已经激活了。
三、再给一个不用更新qemu bios的方法,但要求安装windows VOL大客户版本。
本文档针对使用KVM安装win2008虚拟机的激活。 系统建议采用WIN2008 VOL版本,VOL版本为微软的大客户版,可以使用同一个CDKEY来激活多台主机系统。
激活软件采用Microsoft Toolkit.exe。这个工具没有官网下载地址,可以在以下地址下载:http://www.dayanzai.me/microsoft-toolkit-2-5.html。
下载的版本为2.5。使用前需要安装dotNetFx40 ,使用时建议关闭杀毒软件
相关链接:
http://forums.mydigitallife.info/threads/33723-Crafting-an-SLIC-BIOS-for-Linux-KVM-Guests
http://blog.icy1900.me/2014/06/13/kvm%E7%8E%AF%E5%A2%83%E4%B8%8Bwindows%E6%BF%80%E6%B4%BB%E6%96%B9%E6%B3%95.html
http://codelife.me/blog/2012/12/07/qemu-kvm-add-slic-2-dot-1-to-bios-and-activate-windows-server-2008-r2-sucessfully/