继上一篇:《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
参考: