Linux
下vmware
虚拟机中永久激活Windows
7
- 简述vmware 可以指定一个外部文件作为其虚拟机的BIOS,那么就可以通过把品牌机的SLIC2.1的信息写到这个BIOS文件中来激活Windows 7. 只要能够生成这个BIOS文件,其余的步骤就和兼容机刷BIOS永久激活Windows 7的方法一样了,网上教程到处可见,比如这篇就是个不错的教程。
- 基本环境
- 主机操作系统:Ubuntu 13.04 64bit
- 虚拟机软件: vmware player for linux 64bit
- 目标虚拟机: Windows 7 64bit 旗舰版
- 所需工具
- SLIC Toolkit V3.2 (用来验证SLIC 是否成功写入)
- rw-everything
- PhoenixTool (需要 .Net Framework 2.0)
- 流程
- 第一步:提取vmware的bios在Ubuntu中, vmware的bios在 /usr/lib/vmware/bin/vmware-vmx 中。用objcopy 提取bios440 section。
objcopy vmware-vmx -O binary -j bios440 --set-section-flags bios440=a bios440.rom.z
注:这里我先把/usr/lib/vmware/bin/vmware-vmx 拷贝到里临时目录下。
如果不能提取,可以用objdump命令:objdump -h vmware-vmx | grep bios440
确认下 bios440 section是否存在或名称是否正确(有些版本的vmware section 名字是 .bios440)。得到结果如下:
28 bios440 00033d47 0000000000000000 0000000000000000 00d6c0d0 2**0
另外也可以根据objdump的信息用dd 命令把bios440 section dump 出来。dd skip=14074064 bs=1 count=212295 ibs=1 obs=1 if=vmware-vmx of=bios440.rom.z
其中14074064 对应与objdump 中 00d6c0d0,即bios440 seciton 在vmware-vmx 中起始位置,而212295是大小,对应objdump的00033d47 段。
用下面的命令对刚才提出的bios440.room.z 解压:perl -e 'use Compress::Zlib; my $v; read STDIN, $v, 212295; $v = uncompress($v); print $v;' < bios440.rom.z > bios440.rom
这里212295 就是bios440.rom.z 的文件大小,vmware版本不同,大小可能略有不同。这样的的bios440.rom 就是vmware 的 512K 的虚拟机BIOS了。 - 第二步:用rw-everything 提取ACPI Tables启动虚拟机, 运行 rw.exe . 选Access菜单->ACPI Tables ,从ACPI Tables 的子窗口上选Save All 按钮(或Ctrl+F2), 保存文件名就用缺省的即可 AcpiTbls.rw 。如图:
- 第三步:用PhoenixTool 合并SLIC 生成biosvmware 虚拟机的BIOS是属于Phoenix类的。感谢PhoenixTool 的作者,有了这个工具,就不必再用Phoenix BIOS Editor 和 WinHex 繁琐无比的操作来生成Phoenix的bios了。
- 在 Original 里输入从vmware-vmx里抽出的bios440.rom。 等待PhoenixTool完成分析。
- 在Manufacturer 里选择厂商,这个取决于你准备好的SLIC2.1 和OEM证书文件是那个厂商的。
- 在SLIC File里输入你的SLIC2.1 的文件。
- 点击Advanced 按钮,出现可能会刷砖的警告,点“是”,出现advanced option对话框,确保”Only alter RSDT and XSDT tables” 选中,点Done按钮退出设置。
- 点Go按钮开始生成。成功生成的话,新的BIOS文件会在bios440.rom 所在的目录里,文件名是bios440_SLIC.rom。
- 第四步:修改 .vmx 文件虚拟机关机。用文本编辑软件打开要修改的虚拟机对应的.vmx文件,在文件尾加上:bios440.filename = “bios440_SLIC.rom”理论上bios440_SLIC.rom 可以放在任何目录,只要配置文件写上绝对路径即可。
另外,如果需要序列号的话,请注意序列号要和你的windows版本匹配,比如你的BIOS烧的是联想的SLIC,Windows
7是旗舰版,则需要找个联想OEM版
Windows 7旗舰版的序列号,否则可能还是不能成功激活Windows。
本文同步发布在我的CSDN Blog中。http://blog.csdn.net/royer/article/details/11313611
本文同步发布在我的CSDN Blog中。http://blog.csdn.net/royer/article/details/11313611