无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 8410|回复: 102
打印 上一主题 下一主题

[原创] VHD不同用法,Legacy BIOS + memdisk + 微型VHD引导跳板(三引导器集成版)

  [复制链接]
跳转到指定楼层
#
发表于 2025-8-26 14:27:15 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 seekyou2008 于 2025-11-10 19:03 编辑

Legacy BIOS + memdisk + 微型VHD引导跳板(三引导器集成版)

方案目标
  • Legacy BIOS 下,通过外层引导器加载一个微型 VHD
  • VHD 内集成 GRUBFM(i386‑pc)rEFInd(BIOS 模式)Clover(BIOS 版)
  • 内层菜单中一次性列出三引导器和直链目标系统的入口,实现最大兼容和集中管理

一、准备工作
  • 一台可运行 Linux 或 Windows 的环境(制作镜像)
  • memdisk 程序(来自 syslinux 包)
  • GRUB2、rEFInd、Clover 最新版本
  • 目标系统的 EFI 文件(用于测试)
  • 至少 128 MB 可用存储空间(VHD 固定大小)

二、创建微型 VHD Windows 下
diskpart
create vdisk file=D:\uniboot.vhd maximum=128 type=fixed
select vdisk file=D:\uniboot.vhd
attach vdisk
create partition primary
format fs=fat32 quick label=UNIBOOT
assign letter=B
exit



三、安装 DUET 到 VHD
Windows下:
用BOOTICE把主引导记录mbr.com和分区引导记录bd32.bin写入VHD,然后将Efildr20拷入VHD。


四、加入 rEFInd 和 Clover
  • 将 rEFInd 的 refind 目录复制到 B:\EFI\BOOT\,并配置 refind.conf
  • 将 Clover BIOS 版的 CLOVER 目录复制到 B:\EFI\CLOVER\
  • 确保:\EFI\BOOT\BOOTX64.EFI → rEFInd   \EFI\CLOVER\CLOVERX64.efi → Clover

五、 菜单效果 (VHD 内)







六、外层 GRUB2 调用 memdisk + VHD
在外层 GRUB2(例如 U 盘)的 grub.cfg 中:
menuentry "Universal BIOS→UEFI Boot" {
    linux16 /boot/memdisk raw
    initrd16 /boot/uniboot.vhd
}


七、启动流程
BIOS
→ 外层 GRUB2
   → memdisk (raw)
     → VHD (DUET)
       → rEFInd / Clover / grubFM
         → GPT/UEFI 系统


八、维护与扩展
  • 要更新引导器 → 挂载 VHD,替换 /EFI/BOOT、/EFI/CLOVER
  • 要增加系统入口 → 编辑 VHD 内 rEFInd/Clover 配置
  • 可制作多个不同配置的 VHD 文件,通过外层菜单切换

这样做的好处
  • 彻底避免多盘多 ESP 冲突
  • 外层稳定,内层灵活可替换
  • 同一菜单中三引导器共存,遇到硬件或系统挑剔随时切换

方案的最大长处
  • 双层链路:外层极简、稳定,内层灵活、可全替换
  • 完全集中化:所有引导逻辑都在 VHD 内,物理盘上可以完全无 EFI 分区,消除了多ESP互抢问题
  • 三合一引导器共存:GRUB2 / rEFInd / Clover
  • 通吃 BIOS + UEFI:不管机器是老 BIOS 还是新 UEFI,一套 VHD 都能进




另外,我们还可以基于上面的思路扩展延伸其它玩法1:
Legacy BIOS + memdisk + 微型VHD引导跳板 来制作一个几十 MB 的 VHD “万能 BIOS 启动入口”,不仅加载速度快,还能链到任意 Windows 系统。

制作步骤1. 准备小 VHD
diskpart
create vdisk file=D:\bootjump.vhd maximum=64 type=fixed
select vdisk file=D:\bootjump.vhd
attach vdisk
create partition primary
format fs=ntfs quick label=BOOTJUMP
assign letter=B
exit
这里最大 64 MB,类型 fixed(固定大小)。FAT32 也可以,NTFS 在 Bootmgr 下通用性好。

2. 写入引导代码

bootsect /nt60 B: /mbr

  • /nt60:写入 Bootmgr/Windows 6.x 引导代码
  • /mbr:同步写入 MBR(便于 memdisk raw 模式识别)

3. 生成 Bootmgr 和 BCD假设你的真实 Windows 系统在 C:,运行:

bcdboot C:\Windows /s B: /f BIOS

  • /f BIOS 强制生成 Legacy 引导结构
  • 会在 B: 上写入 \bootmgr 和 \Boot\BCD
  • 此时 BCD 会有一个指向 C: 系统的启动项

4. 检查/修改 BCD(可选)如果要链到其他盘/分区,可用:

bcdedit /store B:\Boot\BCD /set {default} device partition=C:
bcdedit /store B:\Boot\BCD /set {default} osdevice partition=C:


5. GRUB2 菜单配置(Legacy BIOS)在 Linux 的 /boot/grub/grub.cfg 添加:

menuentry "Windows via VHD (memdisk)" {
    linux16 /memdisk raw
    initrd16 /boot/bootjump.vhd
}

  • /memdisk 和 VHD 文件路径要按你的实际存放位置调整
  • raw 模式表示不解析分区表,直接交给 VHD 内 MBR

启动流程
  • BIOS 启动 GRUB2
  • GRUB2 → memdisk → 将 VHD 整个读入内存并映射成一块假硬盘
  • BIOS INT 13h 服务进入 VHD MBR
  • MBR → PBR → Bootmgr
  • Bootmgr 读取 VHD 内的 BCD,按配置链到真实系统
  • 真实系统正常启动

优势
  • 体积小,几十 MB,加载快
  • 内存占用低,适合老机器
  • BCD 可随时改,指向不同目标系统
  • 不需修改真实系统的引导扇区


最后,回答为什么要这么做?因为LEGACY BIOS + GPT需要这么做才能引导WINDOWS系统。




思路扩展玩法2:PXE+iPXE 脚本+memdisk+微型 VHD 

QEMU 直接测试命令(内置 TFTP 模式)
假设你在 D:\PXE-TFTP 放了:
boot.ipxe      # iPXE 脚本
memdisk        # syslinux 的 memdisk 程序
uniboot.vhd    # 你的微型 VHD 跳板

boot.ipxe 内容示例(HTTP 改成 TFTP 可避免防火墙干扰):
#!ipxe
kernel tftp:\/\/10.0.2.2\/memdisk raw
initrd tftp:\/\/10.0.2.2\/uniboot.vhd
boot

10.0.2.2 是 QEMU NAT 网络下宿主机的固定地址

QEMU 启动命令(调试模式):

cd "D:\Program Files\qemu"
qemu-system-x86_64.exe ^
  -m 1024 ^
  -net nic,model=e1000 ^
  -net user,tftp="D:\PXE-TFTP",bootfile=boot.ipxe ^
  -boot n


QEMU 启动命令(无控制台窗口):

cd "D:\Program Files\qemu"
qemu-system-x86_64w.exe ^
  -m 1024 ^
  -net nic,model=e1000 ^
  -net user,tftp="D:\PXE-TFTP",bootfile=boot.ipxe ^
  -boot n


运行后链路
  • QEMU PXE ROM → DHCP(内置 NAT 提供)
  • 下载 boot.ipxe
  • 脚本执行:下载 memdisk + uniboot.vhd
  • memdisk 映射 VHD → 内层 GRUB2/rEFInd/Clover 菜单
  • 选择目标系统启动



关于需要成品的,本人没有附件权限,也挂不上链接。发短消息吧!


评分

参与人数 2无忧币 +10 收起 理由
gutaiping2006 + 5 赞一个!
whyme22 + 5

查看全部评分

102#
发表于 3 天前 | 只看该作者
引导这块还得跟各位大神好好学习学习
回复

使用道具 举报

101#
发表于 5 天前 | 只看该作者
seekyou2008 发表于 2025-12-25 19:56
问题出在 支持bios+uefi双启的电脑上,duet在仅支持legacy引导的电脑上是正常的。

支持你的这个判断!
回复

使用道具 举报

100#
发表于 5 天前 | 只看该作者
哎,小白看的云里雾里,慢慢学习吧
回复

使用道具 举报

99#
发表于 6 天前 | 只看该作者
看着就很高级,感谢分享
回复

使用道具 举报

98#
 楼主| 发表于 6 天前 | 只看该作者
qj_tzy 发表于 2025-12-25 10:58
1.我曾经作过测试,在一台仅支持legacy引导的电脑上,用grub2用ntldr命令如ntldr /grldr引导g4d、clover ...

问题出在 支持bios+uefi双启的电脑上,duet在仅支持legacy引导的电脑上是正常的。

点评

支持你的这个判断!  详情 回复 发表于 5 天前
回复

使用道具 举报

97#
发表于 6 天前 | 只看该作者
本帖最后由 qj_tzy 于 2025-12-25 11:00 编辑
seekyou2008 发表于 2025-12-24 19:52
1,目前只有Legacy BIOS的机器可以启动,支持UEFI的机器哪怕关了安全启动都引导不了是吗?
2,如果是这样 ...

1.我曾经作过测试,在一台仅支持legacy引导的电脑上,用grub2用ntldr命令如ntldr /grldr引导g4d、clover菜单等均正常,但在多台支持bios+uefi双启的电脑上始终不能用grub2引导到g4d菜单、引导进clover菜单.

2.用uefi+grub2,及uefi+grub4efi(grub4dos的uefi版),引导你发的这个vhd正常,将其拷入esp分区后,uefi方式也引导正常。

所以我也估计,用bios引导不正常,问题出在duet上

点评

问题出在 支持bios+uefi双启的电脑上,duet在仅支持legacy引导的电脑上是正常的。  详情 回复 发表于 6 天前
回复

使用道具 举报

96#
 楼主| 发表于 7 天前 | 只看该作者
qj_tzy 发表于 2025-12-24 09:02
昨晚按这样试了,DUET未能引导esp分区中的\efi\boot\bootx64.efi

1,目前只有Legacy BIOS的机器可以启动,支持UEFI的机器哪怕关了安全启动都引导不了是吗?
2,如果是这样的话,有个参考点:VHD里的EFI扔到ESP后,UEFI启动能引导吗?
3,如果能引导,而DUET的模拟UEFI无法引导,那么可以百分百确定问题就在DUET本身。

点评

1.我曾经作过测试,在一台仅支持legacy引导的电脑上,用grub2用ntldr命令如ntldr /grldr引导g4d、clover菜单等均正常,但在多台支持bios+uefi双启的电脑上始终不能用grub2引导到g4d菜单、引导进clover菜单. 2.用u  详情 回复 发表于 6 天前
回复

使用道具 举报

95#
发表于 7 天前 | 只看该作者
学习
回复

使用道具 举报

94#
发表于 7 天前 | 只看该作者
seekyou2008 发表于 2025-12-22 22:18
如果你把VHD里的EFI目录拷到ESP里,DUET识别不到,就不要再折腾了。

昨晚按这样试了,DUET未能引导esp分区中的\efi\boot\bootx64.efi

点评

1,目前只有Legacy BIOS的机器可以启动,支持UEFI的机器哪怕关了安全启动都引导不了是吗? 2,如果是这样的话,有个参考点:VHD里的EFI扔到ESP后,UEFI启动能引导吗? 3,如果能引导,而DUET的模拟UEFI无法引导,那么  详情 回复 发表于 7 天前
回复

使用道具 举报

93#
发表于 2025-12-23 17:42:13 | 只看该作者
seekyou2008 发表于 2025-12-22 22:18
如果你把VHD里的EFI目录拷到ESP里,DUET识别不到,就不要再折腾了。

好的,晚上试试
回复

使用道具 举报

92#
 楼主| 发表于 2025-12-22 22:18:00 | 只看该作者
qj_tzy 发表于 2025-12-22 22:02
把uos_live那个分区格式化为ntfs分区,电脑中只有一个esp分区是FAT32分区了。
测试进入54楼的界面

如果你把VHD里的EFI目录拷到ESP里,DUET识别不到,就不要再折腾了。

点评

昨晚按这样试了,DUET未能引导esp分区中的\efi\boot\bootx64.efi  详情 回复 发表于 7 天前
好的,晚上试试  详情 回复 发表于 2025-12-23 17:42
回复

使用道具 举报

91#
 楼主| 发表于 2025-12-22 22:14:16 | 只看该作者
qj_tzy 发表于 2025-12-22 22:02
把uos_live那个分区格式化为ntfs分区,电脑中只有一个esp分区是FAT32分区了。
测试进入54楼的界面

54楼,那个界面是找不到ESP分区。你一直卡在这里没有进入模拟UEFI吗?这样的话,那进入不了SHELL界面。
回复

使用道具 举报

90#
发表于 2025-12-22 22:02:57 | 只看该作者
seekyou2008 发表于 2025-12-22 20:53
不需要改,你不是进入虚拟UEFI吗?

在 UEFI Shell 中

把uos_live那个分区格式化为ntfs分区,电脑中只有一个esp分区是FAT32分区了。
测试进入54楼的界面

不知如何进入uefi shell窗口,才能进行上述你说的操作

点评

如果你把VHD里的EFI目录拷到ESP里,DUET识别不到,就不要再折腾了。  详情 回复 发表于 2025-12-22 22:18
54楼,那个界面是找不到ESP分区。你一直卡在这里没有进入模拟UEFI吗?这样的话,那进入不了SHELL界面。  详情 回复 发表于 2025-12-22 22:14
回复

使用道具 举报

89#
 楼主| 发表于 2025-12-22 20:53:47 | 只看该作者
qj_tzy 发表于 2025-12-22 20:26
今晚我作了如下测试:
在83楼的基础上,把第2号固态,改为mbr分区模式,且各分区改为ntfs文件系统。除nv ...

不需要改,你不是进入虚拟UEFI吗?

在 UEFI Shell 中
操作顺序如下:

找到EFI分区:输入 fs0: 或 fs1:。

加载驱动:输入 load EFI\drivers\NvmExpressDxe.efi。

刷新识别:输入 map -r(此时你应该能看到 NVMe 磁盘的分区号出现了,比如 fs2:)。

引导系统:进入 NVMe 分区并执行引导文件,例如 fs2:\EFI\Microsoft\Boot\bootmgfw.efi。

点评

把uos_live那个分区格式化为ntfs分区,电脑中只有一个esp分区是FAT32分区了。 测试进入54楼的界面 不知如何进入uefi shell窗口,才能进行上述你说的操作  详情 回复 发表于 2025-12-22 22:02
回复

使用道具 举报

88#
发表于 2025-12-22 20:26:40 | 只看该作者
本帖最后由 qj_tzy 于 2025-12-22 20:28 编辑
seekyou2008 发表于 2025-12-22 16:16
/EFI/Drivers/NvmExpressDxe.efi

今晚我作了如下测试:
在83楼的基础上,把第2号固态,改为mbr分区模式,且各分区改为ntfs文件系统。除nvme硬盘中有一个esp分区外,已无esp分区。
且除esp分区和livecd分区(因要以uefi方式引导该分区的efi文件,就保持为FA32分区)外,其他均不是FAT32分区了。
但测试情况,只仍然如故:只能引导livecd分区的\efi\boot\bootx64.efi。 将其目录\efi\改为\efi_tmp,就出错。
是否与4T机械硬盘为gpt分区但无esp分区有关?但这个我不想改,因这个我的数据盘,不用于安装操作系统。


点评

不需要改,你不是进入虚拟UEFI吗? 在 UEFI Shell 中 操作顺序如下: 找到EFI分区:输入 fs0: 或 fs1:。 加载驱动:输入 load EFI\drivers\NvmExpressDxe.efi。 刷新识别:输入 map -r(此时你应该能看  详情 回复 发表于 2025-12-22 20:53
回复

使用道具 举报

87#
发表于 2025-12-22 17:11:27 | 只看该作者
seekyou2008 发表于 2025-12-22 16:16
/EFI/Drivers/NvmExpressDxe.efi

非常感谢!
回复

使用道具 举报

86#
 楼主| 发表于 2025-12-22 16:16:13 | 只看该作者
qj_tzy 发表于 2025-12-22 11:20
问下:uniboot1.vhd中的nvme的驱动是如何处理的呢,具体是哪一个文件是驱动的呢?

/EFI/Drivers/NvmExpressDxe.efi

点评

今晚我作了如下测试: 在83楼的基础上,把第2号固态,改为mbr分区模式,且各分区改为ntfs文件系统。除nvme硬盘中有一个esp分区外,已无esp分区。 且除esp分区和livecd分区(因要以uefi方式引导该分区的efi文件,就  详情 回复 发表于 2025-12-22 20:26
非常感谢!  详情 回复 发表于 2025-12-22 17:11
回复

使用道具 举报

85#
发表于 2025-12-22 11:20:38 | 只看该作者
seekyou2008 发表于 2025-12-22 08:32
1,你现在已经闭环了,LEGACY BIOS + UEFI BIOS。
2,你现在问题是多ESP冲突。
3,只要进入虚拟UEFI环 ...

问下:uniboot1.vhd中的nvme的驱动是如何处理的呢,具体是哪一个文件是驱动的呢?

点评

/EFI/Drivers/NvmExpressDxe.efi  详情 回复 发表于 2025-12-22 16:16
回复

使用道具 举报

84#
发表于 2025-12-22 11:09:32 | 只看该作者
seekyou2008 发表于 2025-12-22 08:32
1,你现在已经闭环了,LEGACY BIOS + UEFI BIOS。
2,你现在问题是多ESP冲突。
3,只要进入虚拟UEFI环 ...

可能是这个原因引起的,若试着把一个ESP分区删除或改为普通FAT32分区,不知能否解决这个问题,晚上回家试试
回复

使用道具 举报

83#
 楼主| 发表于 2025-12-22 08:32:13 | 只看该作者
qj_tzy 发表于 2025-12-21 21:11
我的电脑有
1.nvme2:gpt分区结构,有esp分区,有\efi\boot\bootx64.efi等引导文件,引导所有硬盘中安装 ...

1,你现在已经闭环了,LEGACY BIOS + UEFI BIOS。
2,你现在问题是多ESP冲突。
3,只要进入虚拟UEFI环境,引导其它硬盘分区就不是问题了。需要注意的是如果是nvme,可能引导前需要加载一下驱动。uniboot1.vhd已经集成了。

点评

问下:uniboot1.vhd中的nvme的驱动是如何处理的呢,具体是哪一个文件是驱动的呢?  详情 回复 发表于 2025-12-22 11:20
可能是这个原因引起的,若试着把一个ESP分区删除或改为普通FAT32分区,不知能否解决这个问题,晚上回家试试  详情 回复 发表于 2025-12-22 11:09
回复

使用道具 举报

82#
发表于 2025-12-21 21:11:02 | 只看该作者
本帖最后由 qj_tzy 于 2025-12-21 21:13 编辑
seekyou2008 发表于 2025-12-21 14:55
我看你前面说明,好像是双硬盘,两个EFI目录,你想通过改名的方式切换到另一个目录。如果是这种情况的话 ...

我的电脑有
1.nvme2:gpt分区结构,有esp分区,有\efi\boot\bootx64.efi等引导文件,引导所有硬盘中安装的win+linux+mac,其后的分区安装win10+win11分区系统
2.sata固态1:gpt分区结构,有esp分区,但无任何文件,其后的分区安装linux+mac
3.sata固态2:mbr分区结构,安装有live_cd(安装在fat32分区,有\efi\boot\bootx64.efi),其后仅一个ntfs分区,安装有win10/win8/win7/win2003/winxp的vhd/vhdx文件。
4.机械硬盘,gpt分区结构,4T,仅有2个分区soft+data,用于存放软件和用户个人数据,未安装任何操作系统。

bios+grub2或bios+g4d引导uniboot.vhd或uniboot1.vhd时 ,就引导了live_cd分区中的\efi\boot\bootx64.efi,若把该\efi\更名为\efi_tmp,就会出错,不会引导nvme2的esp分区中的\efi\boot\bootx64.efi。


点评

1,你现在已经闭环了,LEGACY BIOS + UEFI BIOS。 2,你现在问题是多ESP冲突。 3,只要进入虚拟UEFI环境,引导其它硬盘分区就不是问题了。需要注意的是如果是nvme,可能引导前需要加载一下驱动。uniboot1.vhd已经  详情 回复 发表于 2025-12-22 08:32
回复

使用道具 举报

81#
 楼主| 发表于 2025-12-21 14:55:03 | 只看该作者
qj_tzy 发表于 2025-12-21 11:09
谢谢!空时再测试下,到时再反馈!

我看你前面说明,好像是双硬盘,两个EFI目录,你想通过改名的方式切换到另一个目录。如果是这种情况的话,你前面的操作是有问题的:要不,两个ESP分区,这时会有冲突。要不,只有一个ESP分区,这不会冲突,但是你想改名切换时,另一个分区不是ESP,会识别不到。这样推理比较符合你上面的反馈结果。

所以验证最好的方式,是在U盘上做一个ESP,把VHD里的EFI丟进去,然后将硬盘里的所有ESP分区属性设为UNUSED,当然了,把硬盘直接卸了更省事。

点评

我的电脑有1.nvme2:gpt分区结构,有esp分区,有\efi\boot\bootx64.efi等引导文件,引导所有硬盘中安装的win+linux+mac,其后的分区安装win10+win11分区系统 2.sata固态1:gpt分区结构,有esp分区,但无任何文件,  详情 回复 发表于 2025-12-21 21:11
回复

使用道具 举报

80#
发表于 2025-12-21 11:09:42 | 只看该作者
seekyou2008 发表于 2025-12-20 20:57
duet中主引导记录和分区引导记录对应uniboot.vhd,duet1对应uniboot1.vhd,不能混一起。另外,这两者对gp ...

谢谢!空时再测试下,到时再反馈!

点评

我看你前面说明,好像是双硬盘,两个EFI目录,你想通过改名的方式切换到另一个目录。如果是这种情况的话,你前面的操作是有问题的:要不,两个ESP分区,这时会有冲突。要不,只有一个ESP分区,这不会冲突,但是你想  详情 回复 发表于 2025-12-21 14:55
回复

使用道具 举报

79#
 楼主| 发表于 2025-12-20 21:18:20 | 只看该作者
qj_tzy 发表于 2025-12-20 20:57
当然,我与你有一样的想法,若能从bios+grub2或bios+grub4dos引导,能读取并执行vhd内的\efi\boot\bootx6 ...

目前不行,DUET只支持读物理的ESP。唉,水平有限呀。
回复

使用道具 举报

78#
 楼主| 发表于 2025-12-20 21:13:46 | 只看该作者
qj_tzy 发表于 2025-12-20 20:19
Secure Boot已关闭

我的期望是:

如果你要做一个类似我这样的VHD,你最好先用我的来试,试过没问题了,再改造一个属于你自己的。
回复

使用道具 举报

77#
 楼主| 发表于 2025-12-20 20:57:57 | 只看该作者
qj_tzy 发表于 2025-12-20 20:11
在另台电脑上的测试情况:

一、用uniboot.vhd

duet中主引导记录和分区引导记录对应uniboot.vhd,duet1对应uniboot1.vhd,不能混一起。另外,这两者对gpt的esp分区下\efi\boot\bootx64.efi都是可以正常读取的,至少我环境是可以的。EF属性就是ESP的标识。我只能提供这样多的信息了。

点评

谢谢!空时再测试下,到时再反馈!  详情 回复 发表于 2025-12-21 11:09
回复

使用道具 举报

76#
发表于 2025-12-20 20:57:48 | 只看该作者
seekyou2008 发表于 2025-12-19 21:33
是不是与Secure Boot有关?uniboot1.vhd里的Efildr20用的是这个:https:\/\/r2.mywows.eu.org/tools/duet ...

当然,我与你有一样的想法,若能从bios+grub2或bios+grub4dos引导,能读取并执行vhd内的\efi\boot\bootx64.efi就是最好的了。

点评

目前不行,DUET只支持读物理的ESP。唉,水平有限呀。  详情 回复 发表于 2025-12-20 21:18
回复

使用道具 举报

75#
发表于 2025-12-20 20:19:37 | 只看该作者
seekyou2008 发表于 2025-12-19 21:33
是不是与Secure Boot有关?uniboot1.vhd里的Efildr20用的是这个:https:\/\/r2.mywows.eu.org/tools/duet ...

Secure Boot已关闭

我的期望是:
1.能搜索并执行gpt分区硬盘的esp分区下的\efi\boot\bootx64.efi,其实是想执行\efi\clover\CLOVERX64.efi,如行,只要把CLOVERX64.efi拷入\efi\boot\,覆盖bootx64.efi即可。
2. 希望自己能制作这样的一个vhd,能实现这样的功能。

点评

如果你要做一个类似我这样的VHD,你最好先用我的来试,试过没问题了,再改造一个属于你自己的。  详情 回复 发表于 2025-12-20 21:13
回复

使用道具 举报

74#
发表于 2025-12-20 20:11:27 | 只看该作者
seekyou2008 发表于 2025-12-19 21:33
是不是与Secure Boot有关?uniboot1.vhd里的Efildr20用的是这个:https:\/\/r2.mywows.eu.org/tools/duet ...

在另台电脑上的测试情况:

一、用uniboot.vhd
用bios+grub2和bios+g4d测试结果是一样的:
1.
能搜索并执行到mbr分区硬盘fat32分区下的\efi\boot\bootx64.efi
2.
因我还一个是gpt分区的esp分区下有\efi\boot\bootx64.efi,就把mbr分区硬盘fat32分区的\efi重命名为\efi_tmp,再测试
出现54楼的出错提示(已保存为电脑中本目录的图片),说明其不能搜索gpt分区硬盘的esp分区下的\efi\boot\bootx64.efi

二、用新上传的uniboot1.vhd
用duet\Efildr20替换uniboot1.vhd根目录下的同名文件;用新上传的memdisk替换我原用于测试的grub2的memdisk,再测试
用bios+grub2和bios+g4d测试结果是一样的:
1.
能搜索并执行到mbr分区硬盘fat32分区下的\efi\boot\bootx64.efi
2.
把mbr分区硬盘fat32分区的\efi重命名为\efi_tmp,再测试
出现54楼的出错提示,同样说明其不能搜索gpt分区硬盘的esp分区下的\efi\boot\bootx64.efi

三、自行创建uniboot.vhd
创建30M的fat16的分区格式,用你新传的duet1下的2个分区分别恢复到vhd的主引导记录和分区引导记录,拷入uniboot1.vhd中的内容,并用duet\Efildr20替换自创uniboot.vhd根目录下的同名文件,没有修改分区属性为EF(我不知为何要这样做)

测试出现BAD等的红字出错提示。


点评

duet中主引导记录和分区引导记录对应uniboot.vhd,duet1对应uniboot1.vhd,不能混一起。另外,这两者对gpt的esp分区下\efi\boot\bootx64.efi都是可以正常读取的,至少我环境是可以的。EF属性就是ESP的标识。我只能提  详情 回复 发表于 2025-12-20 20:57
回复

使用道具 举报

73#
 楼主| 发表于 2025-12-19 21:33:17 | 只看该作者
qj_tzy 发表于 2025-12-19 14:18
我对你的这个很感兴趣,因我有这个需要,是我在一台纯legacy(bios)引导的电脑上,用grub2模拟引导到uefi+ ...

是不是与Secure Boot有关?uniboot1.vhd里的Efildr20用的是这个:https:\/\/r2.mywows.eu.org/tools/duet1.rar

点评

当然,我与你有一样的想法,若能从bios+grub2或bios+grub4dos引导,能读取并执行vhd内的\efi\boot\bootx64.efi就是最好的了。  详情 回复 发表于 2025-12-20 20:57
Secure Boot已关闭 我的期望是: 1.能搜索并执行gpt分区硬盘的esp分区下的\efi\boot\bootx64.efi,其实是想执行\efi\clover\CLOVERX64.efi,如行,只要把CLOVERX64.efi拷入\efi\boot\,覆盖bootx64.efi即可。 2  详情 回复 发表于 2025-12-20 20:19
在另台电脑上的测试情况: 一、用uniboot.vhd 用bios+grub2和bios+g4d测试结果是一样的: 1. 能搜索并执行到mbr分区硬盘fat32分区下的\efi\boot\bootx64.efi 2. 因我还一个是gpt分区的esp分区下有\efi\boot\  详情 回复 发表于 2025-12-20 20:11
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-12-31 17:09

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表