admin 管理员组文章数量: 887021
-
简述
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 是否成功写入) 下载地址: http://www.bios/down/BIOSsggj/2009-12-04/448.html
- rw-everything 下载地址: http://rweverything/
-
PhoenixTool (
需要.Net Framework 2.0)
下载地址:
http://www.sendspace/file/178p30
-
流程
-
第一步:提取
vmware
的
bios
在Ubuntu 中, vmware 的bios 在 /usr/lib/vmware/bin/vmware-vmx 中。用objcopy 提取 bios440section 。
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) 。得到结果如下:
28bios440 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 解压:<div class="dp-highlighter bg_plain" style="font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px; width: 621.713px; overflow: auto; padding-top: 1px; margin: 18px 0px !important; background-color: rgb(231, 229, 220);"><div class="bar" style="padding-left: 45px;"><div class="tools" style="padding: 3px 8px 10px 10px; font-stretch: normal; font-size: 9px; line-height: normal; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: silver; border-left-width: 3px; border-left-style: solid; border-left-color: rgb(108, 226, 108); background-color: rgb(248, 248, 248);"><strong>[plain]</strong> <a target=_blank href="http://blog.csdn/royer/article/details/11313611#" class="ViewSource" title="view plain" style="color: rgb(160, 160, 160); text-decoration: none; border: none; padding: 1px; margin: 0px 10px 0px 0px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); background-attachment: initial; background-color: inherit; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0% 0%; background-repeat: no-repeat;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a target=_blank href="http://blog.csdn/royer/article/details/11313611#" class="CopyToClipboard" title="copy" style="color: rgb(160, 160, 160); text-decoration: none; border: none; padding: 1px; margin: 0px 10px 0px 0px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-image: url(http://static.blog.csdn/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); background-attachment: initial; background-color: inherit; background-size: initial; background-origin: initial; background-clip: initial; background-position: 0% 0%; background-repeat: no-repeat;">copy</a></span><div style="position: absolute; left: 557px; top: 1906px; width: 18px; height: 18px; z-index: 99;"></div><span class="tracking-ad" data-mod="popu_169"> </span></div></div><ol start="1" style="padding: 0px; border: none; color: rgb(92, 92, 92); margin: 0px 0px 1px 45px !important; background-color: rgb(255, 255, 255);"><li class="alt" style="border-style: none none none solid; border-left-width: 3px; border-left-color: rgb(108, 226, 108); list-style: decimal-leading-zero outside; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important;"><span style="margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;"><span style="margin: 0px; padding: 0px; border: none; background-color: inherit;">perl -e 'use Compress::Zlib; my $v; read STDIN, $v, 212295; $v = uncompress($v); print $v;' < bios440.rom.z > bios440.rom </span></span></li></ol></div>
这里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
生成
bios
vmware 虚拟机的BIOS 是属于Phoenix 类的。感谢PhoenixTool 的作者,有了这个工具,就不必再用Phoenix BIOS Editor 和 WinHex 繁琐无比的操作来生成Phoenix 的bios 了。- 在Original 里输入从vmware-vmx 里抽出的bios440.rom 。 等待PhoenixTool 完成分析。
- 在Manufacturer 里选择厂商,这个取决于你准备好的SLIC2.1 和OEM 证书文件是那个厂商的。
- 在SLIC File 里输入你的SLIC2.1 的文件。
-
在RW File
里输入刚才rw-everything
生成的AcpiTbls.rw .
-
点击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 可以放在任何目录,只要配置文件写上绝对路径即可。 重新启动虚拟机。运行SLIC Toolkit V3.2 检查SLIC2.1 是否成功加入BIOS 。如下图红框中字样表示成功提取到SLIC ,厂商是LENOVO, 型号TC-5K ,版本2.1.
最后提供一个各品牌SLIC 和证书的下载地址。 http://www.360doc/content/12/0229/14/1309227_190545700.shtml 。
另外,如果需要序列号的话,请注意序列号要和你的windows 版本匹配,比如你的BIOS 烧的是联想的SLIC ,Windows7 是旗舰版,则需要找个联想OEM 版Windows 7 旗舰版的序列号,否则可能还是不能成功激活Windows 。
原文地址: http://blog.csdn/royer/article/details/11313611
版权声明:本文标题:Linux下vmware虚拟机中永久激活Windows7 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1715771006h648388.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论