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.ROM
, EFI64.ROM
, EFI20-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.CFG
, EFI/BOOT/BOOT.CFG
,加入 allowLegacyCPU=true autoPartitionOSDataSize=4096 cpuUniformityHardCheckPanic=false
等参数优化系统安装并提高兼容性。
至此,我们已经制作好了包含 SLIC 的自定义 ESXi 镜像,即装即用。
SLIC2.6激活的Windows Server 2022
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/8684.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~