用 Clover 在 bios 机子上模拟 uefi 安装 Windows 2022 系统
继上一篇:《grub2 + 虚拟磁盘 或 grub2 + ntboot 启动 bios + gpt 上的 Windows 2022》,因为网友反馈用方案A和B的Windows系统安装关键更新失败,这里实验方案D:用 clover 在 bios 机上模拟 uefi,让Windows以为这就是uefi启动的。
过程:
- 将分好区的虚拟磁盘 win2022.vhd 挂到 debian 11 的虚拟机里,准备安装 clover
- 如下载到当前最新版本 Clover-5145-X64.iso.7z,解压后 Clover-5145-X64.iso
- mount -o loop Clover-5145-X64.iso /mnt/iso # 挂载iso文件
- dd if=/dev/sdb2 of=/tmp/origPBR bs=512 count=1 conv=notrunc # 假如 win2022.vhd 上的 esp 分区为 /dev/sdb2
- cp /mnt/iso/usr/standalone/i386/boot1f32 /tmp/newPBR
- dd if=/tmp/origPBR of=/tmp/newPBR skip=3 seek=3 bs=1 count=87 conv=notrunc
- dd if=/tmp/newPBR of=/dev/sdb2 bs=512 count=1 conv=notrunc
- dd if=/mnt/iso/usr/standalone/i386/boot0ss of=/dev/sdb bs=440 count=1 conv=notrunc
- mount /dev/sdb2 /mnt/1 # 将 esp 分区挂载到 /mnt/1
- cp -r /mnt/iso/efi /mnt/1/ # 复制efi目录到esp分区
- cp /mnt/iso/usr/standalone/i386/x64/boot6 /mnt/1/boot
如果仅启动Windows,可编辑配置文件 /mnt/1/EFI/clover/config.plist ,内容如下:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Boot</key> <dict> <key>DefaultVolume</key> <string>EFI</string> <key>DefaultLoader</key> <string>\efi\Microsoft\Boot\bootmgfw.efi</string> <key>Fast</key> <true/> </dict> <key>GUI</key> <dict> <key>Custom</key> <dict> <key>Entries</key> <array> <dict> <key>Hidden</key> <false/> <key>Disabled</key> <false/> <key>Image</key> <string>os_win</string> <key>Volume</key> <string>EFI</string> <key>Path</key> <string>\efi\Microsoft\Boot\bootmgfw.efi</string> <key>Title</key> <string>Windows 2022</string> <key>Type</key> <string>Windows</string> </dict> </array> </dict> </dict> </dict> </plist>
- clover安装好后,释放Windows 2022,添加引导等操作和前边的方案A差不多
- 在VirtualBox里的bios虚拟机启动,可以正常安装Windows及进行更新。在系统信息中显示为UEFI类型
在一台线上超微atom C2750的机子上测试,失败,clover未能启动,报错:
X64 Exception type - 0000000000000000D !!!
RIP - 000000007D34F7C5, CS - 00000000000038, RFLAGS - 00000000010206
ExceptionData - 000000000000000
参考: