04
2024
12
19:01:27

为 ESXi 集成 SLIC 以及其他自定义 (6.7-8.0)

SLIC 是什么

SLIC ( Software Licensing Internal Code) 是微软在合作的 OEM 厂商主板BIOS中写入的特定信息,用于激活 OEM 版本的 Windows。当前最新的 SLIC 版本为2.6, 可以激活最新的 Windows Server 2022 LTSC。

集成进 VMware 产品

VMware 产品当然有自己的 BIOS 或 EFI 固件,我们可以提取 OEM 厂商固件中的 SLIC 信息并写入到 VMware 的固件中,提取和写入的过程本文不进行叙述,相关成品和教程可以在各大网站搜索到,本文重点叙述如何将修改好的固件写入 VMware 产品中。

Workstation 和 Fusion

VMware 面向桌面端的产品主要是 Workstation (Windows & Linux) 和 Fusion (macOS),这两款产品替换 BIOS 非常简单,直接将安装目录下的 BIOS.440.ROMEFI64.ROMEFI20-64.ROM 替换为修改好的对应固件即可。

而 ESXi 由于涉及到一个类似 SIP 的机制,一般情况下无法替换而且替换后重启会被原文件覆盖,6.7版本后无法使用直接替换文件的方法

ESXi

ESXi 的 ROM 文件位于 /usr/lib/vmware/roms 下,ESXi开机时会解压 /bootbank/vmx.v00 并替换关键的系统文件,其中包括了 roms 目录,也就是说我们只需要替换 vmx.v00 中的固件就可以完成修改了。而 ESXi8 收紧了 /bootbank/vmx.v00 的权限,不再可以直接更改,只能更改安装镜像中的 vmx.v00 文件,这样安装后的 /bootbank/vmx.v00 就是我们已经改好的版本。

v00 文件本质上是经过多重打包的,但是有一些压缩方式是 ESXi 独有的,我们需要在 ESXi 上操作:

mkdir "/vmfs/volumes/datastore1/vmvisor-sys/"
mkdir "/vmfs/volumes/datastore1/tmp/"
mkdir "/vmfs/volumes/datastore1/tmp/vmvisor-sys/"
cp "/bootbank/vmx.v00" "/vmfs/volumes/datastore1/vmvisor-sys/vmx.gz"
pigz -d "/vmfs/volumes/datastore1/vmvisor-sys/vmx.gz"
sigfilesize=$(wc -c < "/usr/share/weasel/s.sigblob"); \
sysfilesize=$(wc -c < "/vmfs/volumes/datastore1/vmvisor-sys/vmx"); \
head -c $((sysfilesize-sigfilesize)) "/vmfs/volumes/datastore1/vmvisor-sys/vmx" > "/vmfs/volumes/datastore1/vmvisor-sys/vmx-nosig.xz"
xz -d "/vmfs/volumes/datastore1/vmvisor-sys/vmx-nosig.xz"
vmtar -x "/vmfs/volumes/datastore1/vmvisor-sys/vmx-nosig" -o "/vmfs/volumes/datastore1/vmvisor-sys/vmx.tar"
tar xf "/vmfs/volumes/datastore1/vmvisor-sys/vmx.tar" -C "/vmfs/volumes/datastore1/tmp/vmvisor-sys/"

这时候已经把当前系统的 vmx.v00 解压到 /vmfs/volumes/datastore1/tmp/vmvisor-sys/ 目录了,我们可以在 /vmfs/volumes/datastore1/tmp/vmvisor-sys/usr/lib/vmware/roms 找到固件并替换,替换后我们需要修改被替换文件的权限:

chmod 755 /vmfs/volumes/datastore1/tmp/vmvisor-sys/usr/lib/vmware/roms/EFI64.ROM
chmod 755 /vmfs/volumes/datastore1/tmp/vmvisor-sys/usr/lib/vmware/roms/EFI20-64.ROM
chmod u+s /vmfs/volumes/datastore1/tmp/vmvisor-sys/usr/lib/vmware/roms/BIOS.440.ROM
chmod u+s /vmfs/volumes/datastore1/tmp/vmvisor-sys/usr/lib/vmware/roms/EFI64.ROM
chmod u+s /vmfs/volumes/datastore1/tmp/vmvisor-sys/usr/lib/vmware/roms/EFI20-64.ROM
chown 201:201 /vmfs/volumes/datastore1/tmp/vmvisor-sys/usr/lib/vmware/roms/BIOS.440.ROM
chown 201:201 /vmfs/volumes/datastore1/tmp/vmvisor-sys/usr/lib/vmware/roms/EFI64.ROM
chown 201:201 /vmfs/volumes/datastore1/tmp/vmvisor-sys/usr/lib/vmware/roms/EFI20-64.ROM

打包:

rm -R "/vmfs/volumes/datastore1/vmvisor-sys/"
mkdir "/vmfs/volumes/datastore1/vmvisor-sys/"
cd "/vmfs/volumes/datastore1/tmp/vmvisor-sys/"; \
tar cf "/vmfs/volumes/datastore1/vmvisor-sys/vmx.tar" *
vmtar -c "/vmfs/volumes/datastore1/vmvisor-sys/vmx.tar" -o "/vmfs/volumes/datastore1/vmvisor-sys/vmx-nosig"

运行完成后会报错,是 ESXi 的安全机制,可以忽略,继续打包:

xz --compress --stdout --lzma2=dict=2048KiB --check=crc32 --threads=8 "/vmfs/volumes/datastore1/vmvisor-sys/vmx-nosig" > "/vmfs/volumes/datastore1/vmvisor-sys/vmx"
cat "/usr/share/weasel/s.sigblob" >> "/vmfs/volumes/datastore1/vmvisor-sys/vmx"
pigz -9 -p 60 -n -T "/vmfs/volumes/datastore1/vmvisor-sys/vmx"

此时我们可以得到 /vmfs/volumes/datastore1/vmvisor-sys/vmx.gz 文件,这个就是 vmx.v00 了,我们可以直接重命名为 vmx.v00,后续我们再使用 UltraISO 替换对应版本的安装镜像即可。

此外我们还可以编辑 BOOT.CFGEFI/BOOT/BOOT.CFG,加入 allowLegacyCPU=true autoPartitionOSDataSize=4096 cpuUniformityHardCheckPanic=false 等参数优化系统安装并提高兼容性。

至此,我们已经制作好了包含 SLIC 的自定义 ESXi 镜像,即装即用。

SLIC2.6激活的Windows Server 2022




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/8684.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: