修改vSphere ESXi中虚拟机的三大件CPUID,硬盘ID,MAC地址

勤求古训 / 2024-01-26 / 原文

1、查看硬件信息

 

wmic diskdrive get serialnumber 查看磁盘序列号

wmic bios get serialnumber 查询BIOS序列号

wmic nicconfig get macaddress 查询网卡MAC信息

wmic cpu get processorid 查询cpu的ID

wmic beseboard get serialnumber 查询主板序列号

 

2、修改CPUID,注意需要intel CPU才支持修改

某些软件的加密会通过读取机器的CPUID来识别,如果在虚拟机中运行,可以更改CPUID,操作如下:

使用wmic CPU get ProcessorID命令,可以查看本机的CPUID,如下图:

cpuid01

目前CPUID为1FABFBFF000306E4,通过修改虚拟机的*.vmx文件来达到修改CPUID的目的,在*.vmx最后添加如下两行:

cpuid.1.eax = "CPUID的后32位"
cpuid.1.edx = "CPUID的前32位"

将现在的CPUID转换成2进制并拆分成两段,如下:

1FABFBFF转换成2进制后的CPUID的前32位为:00011111101010111111101111111111
000306E4转换成2进制后的CPUID的后32位为:00000000000000110000011011100100

假设本次想将CPUID修改为0FABFBFF000306E4,

则转换成2进制后的两段码为(使用十六进制转二进制工具,不足的位数在前面补0):

0FABFBFF转换成2进制后的CPUID的前32位为:00001111101010111111101111111111
000306E4转换成2进制后的CPUID的后32位为:00000000000000110000011011100100

最终在*.vmx中添加如下两行:

cpuid.1.eax = "00000000000000110000011011100100"
cpuid.1.edx = "00001111101010111111101111111111"

首先将虚拟机关机,再将*.vmx下载至本地,如下图

v6.5vmrc06

再使用Notepad++打开刚才下载的win2008-2.vmx,并添加红框中的两行内容,完成后保存退出。

 

3、虚修改拟硬盘ID

SCSI类型的虚拟硬盘不存在序列号。但是IDE或者SATA类型的虚拟硬盘会初始化一个序列号,所以必须把硬盘类型切换成IDE类型或者SATA类型。

但是一般情况下,这时候虚拟机的硬盘类型已经是SCSI了,切换类型电脑的文件会损坏吗?这里给你肯定的答案:不会。

下面就是切换硬盘类型的步骤(一步一步探索艰辛哪):第一步:关闭虚拟机
第二步:找到你的虚拟机目录下的后缀是vmdk的文件,使用记事本打开。查找ddb.adapterType属性,并把这个属性的值换成IDE。结果:ddb.adapterType = "IDE"。保存文件
第三步:虚拟机-->设置-->硬盘-->移除
第四步:虚拟机-->设置-->添加硬盘-->选择IDE类型的硬盘-->使用已有虚拟磁盘-->选择旧的硬盘文件(后缀为vmdk)完成。
第三步:重启虚拟机
第四部:查看序列号,打开cmd命令窗口,输入命令:wmic diskdrive get serialnumber。
完成。

4、修改MAC地址,虚拟机.vmx配置文件

 

关于虚拟机修改MAC地址遇到的错误

“静态以太网地址不允许使用:“00:0C:29:AC:9A:19”。它与 VMware 预留的 MAC 冲突。”

在存储里面找到对应虚拟机的配置文件以.vmx结尾,本人的为 centos63.vmx

因为本人修改的是ethernet1的MAC地址,所以需要配置的是ethernet1相关的信息,
这点特别要注意,网络上的文章大部分针对的是ethernet0的,所以要根据个人的实际情况去配置

在本人环境原文中有如下几行:
ethernet1.addressType = "static" 保持不变
ethernet1.generatedAddress = "00:0c:29:03:b0:d4" 系统自动分配的 去掉
ethernet1.address = "00:0C:29:AC:9A:19" 手工设置的 保留

只需要增加如下一行即可(这个看人的环境,网络上一般是增加三行)
ethernet1.checkMACAddress = "false" 无需自动分配

如下是网络上常见解决方案:
ethernet0.addressType = "static"
ethernet0.checkMACAddress = "false"
ethernet0.address = "your mac addr"