Linux下vmware虚拟机中永久激活Windows7

时间:2022-07-24 14:26:48
Linux vmware 虚拟机中永久激活 Windows7

  1. 简述

    vmware 可以指定一个外部文件作为其虚拟机的BIOS ,那么就可以通过把品牌机的SLIC2.1 的信息写到这个BIOS 文件中来激活Windows 7. 只要能够生成这个BIOS 文件,其余的步骤就和兼容机刷BIOS 永久激活Windows 7 的方法一样了,网上教程到处可见,比如这篇就是个不错的教程。

  2. 基本环境

    1. 主机操作系统:Ubuntu 13.04 64bit
    2. 虚拟机软件:vmware player for linux 64bit
    3. 目标虚拟机:Windows 7 64bit 旗舰版

  3. 所需工具

    1. SLIC Toolkit V3.2 ( 用来验证SLIC 是否成功写入)
    2. rw-everything
      下载地址: http://rweverything.com/
    3. PhoenixTool ( 需要.Net Framework 2.0)

  4. 流程

    1. 第一步:提取 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) 。得到结果如下:

      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 解压:
      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 了。


    2. 第二步:用 rw-everything 提取 ACPI Tables

      启动虚拟机, 运行rw.exe . Access 菜单->ACPI Tables ,从ACPI Tables 的子窗口上选Save All 按钮(或Ctrl+F2), 保存文件名就用缺省的即可AcpiTbls.rw 。如图:
      Linux下vmware虚拟机中永久激活Windows7

    3. 第三步:用 PhoenixTool 合并 SLIC 生成 bios

      vmware 虚拟机的BIOS 是属于Phoenix 类的。感谢PhoenixTool 的作者,有了这个工具,就不必再用Phoenix BIOS Editor WinHex 繁琐无比的操作来生成Phoenix bios 了。
      1. Original 里输入从vmware-vmx 里抽出的bios440.rom 。 等待PhoenixTool 完成分析。
      2. Manufacturer 里选择厂商,这个取决于你准备好的SLIC2.1 OEM 证书文件是那个厂商的。
      3. SLIC File 里输入你的SLIC2.1 的文件。
      4. RW File 里输入刚才rw-everything 生成的AcpiTbls.rw .
        Linux下vmware虚拟机中永久激活Windows7

      5. 点击Advanced 按钮,出现可能会刷砖的警告,点“是”,出现advanced option 对话框,确保” Only alter RSDT and XSDT tables” 选中,点Done 按钮退出设置。
        Linux下vmware虚拟机中永久激活Windows7

      6. Go 按钮开始生成。
        成功生成的话,新的BIOS 文件会在bios440.rom 所在的目录里,文件名是bios440_SLIC.rom

    4. 第四步修改 .vmx 文件

      虚拟机关机。用文本编辑软件打开要修改的虚拟机对应的.vmx 文件,在文件尾加上:
      bios440.filename = “bios440_SLIC.rom”
      理论上bios440_SLIC.rom 可以放在任何目录,只要配置文件写上绝对路径即可。
      重新启动虚拟机。运行SLIC Toolkit V3.2 检查SLIC2.1 是否成功加入BIOS 。如下图红框中字样表示成功提取到SLIC ,厂商是LENOVO, 型号TC-5K ,版本2.1.
      Linux下vmware虚拟机中永久激活Windows7


最后提供一个各品牌SLIC 和证书的下载地址。 http://www.360doc.com/content/12/0229/14/1309227_190545700.shtml


另外,如果需要序列号的话,请注意序列号要和你的windows 版本匹配,比如你的BIOS 烧的是联想的SLIC Windows7 是旗舰版,则需要找个联想OEM Windows 7 旗舰版的序列号,否则可能还是不能成功激活Windows

本文同时发布在我的Blogger日志中。http://royer-wang.blogspot.ca/2013/09/linux-vmware-windows-7.html