无忧启动论坛

标题: VHD不同用法,Legacy BIOS + memdisk + 微型VHD引导跳板(三引导器集成版) [打印本页]

作者: seekyou2008    时间: 2025-8-26 14:27
标题: VHD不同用法,Legacy BIOS + memdisk + 微型VHD引导跳板(三引导器集成版)
本帖最后由 seekyou2008 于 2025-11-10 19:03 编辑

Legacy BIOS + memdisk + 微型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
五、 菜单效果 (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 系统


八、维护与扩展
这样做的好处

方案的最大长处




另外,我们还可以基于上面的思路扩展延伸其它玩法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


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

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


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
}


启动流程
优势

最后,回答为什么要这么做?因为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


运行后链路


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



作者: 2012huguoliang    时间: 2025-8-26 15:06
成品呢
作者: gtzyxfx    时间: 2025-8-26 15:13
本帖最后由 gtzyxfx 于 2025-8-26 15:16 编辑

没有Linux ,期待楼主成品,谢啦!
作者: seekyou2008    时间: 2025-8-26 15:16
2012huguoliang 发表于 2025-8-26 15:06
成品呢

按上面操作下来就是成品,成品挂不上来。
作者: 201012121135    时间: 2025-8-26 15:37
谢谢分享
作者: wwwlhp    时间: 2025-8-26 15:42
多谢分享!!!
作者: 小灰兔    时间: 2025-8-26 15:52

多谢分享!!!
作者: 2012andyle113    时间: 2025-8-26 16:19
什么,先引导VHD,再引导其他?这本身就够麻烦了
作者: promrhxq    时间: 2025-8-26 16:24
感谢分享好东东
作者: wn168cn@163.com    时间: 2025-8-26 16:27
支持原创
作者: 肉仔    时间: 2025-8-26 16:33
感谢分享,楼主辛苦了!
作者: handsome_xiang    时间: 2025-8-26 16:54
感谢分享!
作者: fh123456    时间: 2025-8-26 17:25
好办法。。。

作者: seekyou2008    时间: 2025-8-26 17:29
gtzyxfx 发表于 2025-8-26 15:13
没有Linux ,期待楼主成品,谢啦!

改成WINDOWS下操作了。
作者: wang1126    时间: 2025-8-26 17:35
谢谢楼主分享
作者: 1801403    时间: 2025-8-26 21:39
我现在就是这样做的,而且,传统BIOS系统也可以启动UEFI分区硬盘。
作者: ootdyao    时间: 2025-8-26 21:50
感谢分享
作者: 2048    时间: 2025-8-26 22:12
谢谢大佬的分享
作者: luodeman    时间: 2025-8-26 22:16
感谢楼主分享,辛苦了
作者: seekyou2008    时间: 2025-8-26 22:43
1801403 发表于 2025-8-26 21:39
我现在就是这样做的,而且,传统BIOS系统也可以启动UEFI分区硬盘。

是的,还可以安装黑苹果。
作者: dksoft    时间: 2025-8-27 10:09
感谢分享
作者: guong    时间: 2025-8-27 11:35
谢谢分享
作者: 黄金圣斗士Saga    时间: 2025-8-27 13:59
厉害!
作者: 黄金圣斗士Saga    时间: 2025-8-27 13:59
下来看看
作者: 黄金圣斗士Saga    时间: 2025-8-27 14:00
牛逼软件
作者: ashchen    时间: 2025-8-27 17:26
感觉好曲折。。。
作者: fh123456    时间: 2025-8-27 19:27
思路别致,谢谢哦,
作者: ebaqiang    时间: 2025-8-28 08:46
谢谢分享!
作者: kfqzhw    时间: 2025-8-28 11:42
写的真详细,好好消化吸收一下
作者: kfqzhw    时间: 2025-8-28 11:55
楼主能提供下涉及的软件的吗?
作者: seekyou2008    时间: 2025-8-28 15:13
kfqzhw 发表于 2025-8-28 11:55
楼主能提供下涉及的软件的吗?

扩展玩法2:PXE+iPXE 脚本+memdisk+微型 VHD  这里QEMU是为了快速验证VHD实现效果,不是必需的,整体来说不需要其它软件。
作者: kfqzhw    时间: 2025-8-28 15:22
seekyou2008 发表于 2025-8-28 15:13
扩展玩法2:PXE+iPXE 脚本+memdisk+微型 VHD  这里QEMU是为了快速验证VHD实现效果,不 ...

memdisk 、GRUB2、rEFInd、Clover 能提供一下吗?
作者: seekyou2008    时间: 2025-8-28 15:34
本帖最后由 seekyou2008 于 2025-8-28 15:37 编辑
kfqzhw 发表于 2025-8-28 15:22
memdisk 、GRUB2、rEFInd、Clover 能提供一下吗?

这些东西网上都有,我可以直接给个现成的VHD给你,问题是挂不上来。比如,帖子里的:
kernel tftp:\/\/10.0.2.2\/memdisk raw
initrd tftp:\/\/10.0.2.2\/uniboot.vhd
都要加“\”才能上传。

作者: makoto23    时间: 2025-8-31 21:05
谢谢分享
作者: 我是喜羊羊    时间: 2025-9-3 07:18
学习了感谢分享
作者: ashchen    时间: 2025-9-4 14:33
谢谢分享
作者: hihk    时间: 2025-9-28 15:36
怎么过Secure Boot?能无视Secure Boot吗?
作者: fh123456    时间: 2025-10-25 23:29
seekyou2008 发表于 2025-8-28 15:34
这些东西网上都有,我可以直接给个现成的VHD给你,问题是挂不上来。比如,帖子里的:
kernel t ...

上传l蓝奏云
作者: ebaqiang    时间: 2025-10-26 04:42
期待楼主成品,谢啦!
作者: wawakuliao    时间: 2025-10-26 19:49
感谢分享
作者: wawakuliao    时间: 2025-10-26 19:51
期待成品
作者: seekyou2008    时间: 2025-11-2 21:19
hihk 发表于 2025-9-28 15:36
怎么过Secure Boot?能无视Secure Boot吗?

我的是老机器没有Secure Boot
作者: xpzzj    时间: 2025-11-7 15:25
多谢分享,上链接、附件的等级有点高了
作者: zz3286979    时间: 2025-11-11 10:02
感谢分享,支持原创。
作者: a272121742    时间: 2025-11-13 12:52
感谢分享!
作者: fh123456    时间: 2025-11-26 21:08
楼主加油升级
作者: seekyou2008    时间: 2025-11-27 08:14
fh123456 发表于 2025-11-26 21:08
楼主加油升级

你比较关注哪个点呢?新机器作用不大吧,老机器还可以搞搞。下载地址如下:
https:\/\/r2.mywows.eu.org/tools/uniboot.vhd
https:\/\/r2.mywows.eu.org/tools/duet.rar
相关说明:
当前VHD在加载和执行DUET时,可能会找不到EFI,即它所在目录,
在这种情况下,你可能需要在U盘或硬盘上另建一个ESP,然后把VHD里的EFI复制过来,
如果你当前有ESP,直接把VHD里的EFI复制过来。
最后,
menuentry "Universal BIOS→UEFI Boot" {
    linux16 /boot/memdisk raw
    initrd16 /boot/uniboot.vhd
}
即你还需要有GRUB2环境和另外的memdisk文件,才能执行。
下载地址\/\/换成//,好了,就啰嗦这么多,玩得愉快。
作者: fh123456    时间: 2025-11-27 10:50
seekyou2008 发表于 2025-11-27 08:14
你比较关注哪个点呢?新机器作用不大吧,老机器还可以搞搞。下载地址如下:
https:\/\/r2.mywows.eu.org ...

机器确实是UEFI, 我下载来玩玩,感谢!!
作者: 1e3e    时间: 2025-12-10 09:35
谢谢很强大啊
作者: john138    时间: 2025-12-11 14:52
感謝分享
作者: qj_tzy    时间: 2025-12-16 12:25
本帖最后由 qj_tzy 于 2025-12-16 12:26 编辑

感谢楼主提供的作品!

今天,我用bios+grub2.11按下段引导uniboot.vhd,出现“INT 6FH Unknown interrupt-HALT!!”,
memdisk用的是syslinux 6.03的,是否需要用grub2.12来引导?
但网上说grub2.12其bios和uefi版都有bug?

menuentry "5.[bios] uniboot【bios+uefi_三引导器集成】" --hotkey=5 --class=gnu-linux{
search --file --no-floppy --set=vdir /winpe/uniboot.vhd
linux16 /boot/grub2/memdisk raw
initrd16 (${vdir})/winpe/uniboot.vhd
}

还望指点为谢!



作者: chen463    时间: 2025-12-16 14:12
您先前不是有加载VENTOY.VHD的菜单,拿来用即可
作者: qj_tzy    时间: 2025-12-16 17:08
chen463 发表于 2025-12-16 14:12
您先前不是有加载VENTOY.VHD的菜单,拿来用即可

这下菜单,与加载ventoy.vhd的没区别,但运行后就出现这个错误
作者: qj_tzy    时间: 2025-12-16 19:26
本帖最后由 qj_tzy 于 2025-12-16 19:29 编辑

今晚又在一台电脑上测试,用uefi+grub2,或uefi+g4d,均成功引导uniboot.vhd进入vhd中的clover状态。

而用bios+grub2.11或bios+g4d(2025-11-25版)引导uniboot.vhd出现下图
title [bios] uniboot【bios+uefi_三引导器集成】
find --set-root --devices=h /winpe/uniboot.vhd
map (hd0) (hd)
map --mem /winpe/uniboot.vhd  (hd0)
#map /winpe/uniboot.vhd  (hd0)
map --hook
chainloader (hd0)+1




白天是在另台电脑上用bios+grub2测试,出现“INT 6FH Unknown interrupt-HALT!!”(满屏红字)



作者: qj_tzy    时间: 2025-12-17 09:26
好像问题出在Efildr20上,可能与电脑配置有关,看本贴的网友反馈,他们按bios方式引导成功,我只有两台电脑支持bios引导,两台都失败(uefi引导是成功的),前面已反馈过,请教下,有好的解决办法没?

作者: seekyou2008    时间: 2025-12-17 09:38
qj_tzy 发表于 2025-12-16 19:26
今晚又在一台电脑上测试,用uefi+grub2,或uefi+g4d,均成功引导uniboot.vhd进入vhd中的clover状态。

而 ...

图片显示的,就是前面给你解释过的“当前VHD在加载和执行DUET时,可能会找不到EFI,即它所在目录。”,简单说就是找不到EFI。这个问题我一直想解决它,但水平有限。如果能解决它,那这个主题就完美闭环了。
作者: seekyou2008    时间: 2025-12-17 09:43
qj_tzy 发表于 2025-12-17 09:26
好像问题出在Efildr20上,可能与电脑配置有关,看本贴的网友反馈,他们按bios方式引导成功,我只有两台电脑 ...

出现“INT 6FH Unknown interrupt-HALT!!”,这种提示我没有见过。没法给你提供相关指导意见。
作者: seekyou2008    时间: 2025-12-17 10:05
qj_tzy 发表于 2025-12-17 09:26
好像问题出在Efildr20上,可能与电脑配置有关,看本贴的网友反馈,他们按bios方式引导成功,我只有两台电脑 ...

我已经上传了uniboot1.vhd和memdisk,你用原来的下载链接,换掉最后文件名,下载试一下。如果还是不行,我也没招了。哈
作者: chen463    时间: 2025-12-17 10:13
我上次就明示了,注意{定位}问题,您没完成定位,命令当然找不到文件而失败。
作者: promrhxq    时间: 2025-12-17 10:45
感谢分享好东东~
作者: dawensger    时间: 2025-12-17 10:51
路过看看
作者: qj_tzy    时间: 2025-12-17 11:17
seekyou2008 发表于 2025-12-17 09:38
图片显示的,就是前面给你解释过的“当前VHD在加载和执行DUET时,可能会找不到EFI,即它所在目录。”,简 ...

电脑中可能有1个或以上esp分区中有/efi/boot/bootx64.efi,有的电脑还可能有mbr分区硬盘FAT32分区中有/efi/boot/bootx64.efi.
bios方式引导uniboot.vhd时,要执行vhd内的/efi/boot/bootx64.efi,而不是执行硬盘中的这些/efi/boot/bootx64.efi,我认为这才是问题的关键。

作者: qj_tzy    时间: 2025-12-17 11:18
seekyou2008 发表于 2025-12-17 10:05
我已经上传了uniboot1.vhd和memdisk,你用原来的下载链接,换掉最后文件名,下载试一下。如果还是不行, ...

谢谢!下载测试后反馈
作者: qj_tzy    时间: 2025-12-17 11:39
seekyou2008 发表于 2025-12-17 10:05
我已经上传了uniboot1.vhd和memdisk,你用原来的下载链接,换掉最后文件名,下载试一下。如果还是不行, ...

我用47楼的下载地址,下载后还是原来那个uniboot.vhd及duet,与原来是一样的。没有看到你说的uniboot1.vhd和memdisk,麻烦你给个新地址,谢谢!
作者: seekyou2008    时间: 2025-12-17 12:02
qj_tzy 发表于 2025-12-17 11:39
我用47楼的下载地址,下载后还是原来那个uniboot.vhd及duet,与原来是一样的。没有看到你说的uniboot1.vh ...

https:\/\/r2.mywows.eu.org/tools/uniboot1.vhd
https:\/\/r2.mywows.eu.org/tools/memdisk

作者: seekyou2008    时间: 2025-12-17 12:06
qj_tzy 发表于 2025-12-17 11:17
电脑中可能有1个或以上esp分区中有/efi/boot/bootx64.efi,有的电脑还可能有mbr分区硬盘FAT32分区中有/ef ...

当前duet只能找到物理ESP分区,找不前VHD内虚拟的ESP,如果你能通过其它方面解决这个问题,就可以实现:“完全集中化:所有引导逻辑都在 VHD 内,物理盘上可以完全无 EFI 分区,消除了多ESP互抢问题”。
作者: qj_tzy    时间: 2025-12-17 12:41
本帖最后由 qj_tzy 于 2025-12-17 12:43 编辑
seekyou2008 发表于 2025-12-17 12:02
https:\/\/r2.mywows.eu.org/tools/uniboot1.vhd
https:\/\/r2.mywows.eu.org/tools/memdisk

刚才,用新上传的uniboot1.vhd,并用新上传的memdisk代替我用grub2的memdisk,在我的办公电脑上用grub2按51楼的代码测试,不再出现上述出错提示,而是进入内存测试后挂机。再用g4d按54楼的代码测试,也是在内存测试中挂机。
我的办公电脑中有FAT32分区下的\efi\boot\bootx64.efi



作者: seekyou2008    时间: 2025-12-18 09:09
qj_tzy 发表于 2025-12-17 12:41
刚才,用新上传的uniboot1.vhd,并用新上传的memdisk代替我用grub2的memdisk,在我的办公电脑上用grub2按 ...

如果你怀疑是你的办公电脑中有FAT32分区下的\efi\boot\bootx64.efi所致,可以备份一下它,然后用VHD里的EFI替换来试一下。
作者: qj_tzy    时间: 2025-12-18 11:59
seekyou2008 发表于 2025-12-18 09:09
如果你怀疑是你的办公电脑中有FAT32分区下的\efi\boot\bootx64.efi所致,可以备份一下它,然后用VHD里的E ...

我不是怀疑这个,而是觉得应能引导esp中的\efi\boot\bootx64.efi,但未能,不知问题在何处。

另:我按如下处理未成功:把你发的uniboot1.vhd导出到某个目录下,自己创建了一个vhd,固定大小、30M、mbr分区格式、fat16,主引导记录和分区引导记录用bootice软件写入duet中的2个文件,然后把刚才导出的拷入vhd中,用bios+grub2或g4d引导,屏幕上仅有光标在闪动,等待无反应。用你的vhd查看,发现其分区有AF等设置,不知你如何设置该vhd的,可分享下吗,谢谢!
作者: wuxinwei110    时间: 2025-12-18 19:42
gtfhjytughjhgj
作者: seekyou2008    时间: 2025-12-18 19:51
qj_tzy 发表于 2025-12-18 11:59
我不是怀疑这个,而是觉得应能引导esp中的\efi\boot\bootx64.efi,但未能,不知问题在何处。

另:我按 ...

1,你有没有试过前面我说的替换?替换后不行,那可能机器确实不兼容。
2,关于你说的AF,是EF吧?另外,你用bootice软件写入duet中的2个文件是不配的,需要另外的。
3,我记得FAT32,30M这个大小是不行的,我没有试过FAT16的。
作者: 1e3e    时间: 2025-12-19 09:14
思路非常强悍
作者: qj_tzy    时间: 2025-12-19 14:18
seekyou2008 发表于 2025-12-18 19:51
1,你有没有试过前面我说的替换?替换后不行,那可能机器确实不兼容。
2,关于你说的AF,是EF吧?另外, ...

我对你的这个很感兴趣,因我有这个需要,是我在一台纯legacy(bios)引导的电脑上,用grub2模拟引导到uefi+clover是没有问题的,但在bios+uefi的几台双启电脑上,用bios+grub2引导至uefi+clover均失败。因此,若你这个能引导通过,就解决了我的这一问题。所以希望得到你的指导,能解决这一问题。
另:你说自行创建vhd写入duet中的2个文档是不够的,还需另外的,可传我不。还有如何替换?

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

是不是与Secure Boot有关?uniboot1.vhd里的Efildr20用的是这个:https:\/\/r2.mywows.eu.org/tools/duet1.rar
作者: qj_tzy    时间: 2025-12-20 20:11
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等的红字出错提示。



作者: qj_tzy    时间: 2025-12-20 20:19
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,能实现这样的功能。
作者: qj_tzy    时间: 2025-12-20 20:57
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就是最好的了。
作者: seekyou2008    时间: 2025-12-20 20:57
qj_tzy 发表于 2025-12-20 20:11
在另台电脑上的测试情况:

一、用uniboot.vhd

duet中主引导记录和分区引导记录对应uniboot.vhd,duet1对应uniboot1.vhd,不能混一起。另外,这两者对gpt的esp分区下\efi\boot\bootx64.efi都是可以正常读取的,至少我环境是可以的。EF属性就是ESP的标识。我只能提供这样多的信息了。
作者: seekyou2008    时间: 2025-12-20 21:13
qj_tzy 发表于 2025-12-20 20:19
Secure Boot已关闭

我的期望是:

如果你要做一个类似我这样的VHD,你最好先用我的来试,试过没问题了,再改造一个属于你自己的。
作者: seekyou2008    时间: 2025-12-20 21:18
qj_tzy 发表于 2025-12-20 20:57
当然,我与你有一样的想法,若能从bios+grub2或bios+grub4dos引导,能读取并执行vhd内的\efi\boot\bootx6 ...

目前不行,DUET只支持读物理的ESP。唉,水平有限呀。
作者: qj_tzy    时间: 2025-12-21 11:09
seekyou2008 发表于 2025-12-20 20:57
duet中主引导记录和分区引导记录对应uniboot.vhd,duet1对应uniboot1.vhd,不能混一起。另外,这两者对gp ...

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

作者: seekyou2008    时间: 2025-12-21 14:55
qj_tzy 发表于 2025-12-21 11:09
谢谢!空时再测试下,到时再反馈!

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

所以验证最好的方式,是在U盘上做一个ESP,把VHD里的EFI丟进去,然后将硬盘里的所有ESP分区属性设为UNUSED,当然了,把硬盘直接卸了更省事。
作者: qj_tzy    时间: 2025-12-21 21:11
本帖最后由 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。



作者: seekyou2008    时间: 2025-12-22 08:32
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已经集成了。
作者: qj_tzy    时间: 2025-12-22 11:09
seekyou2008 发表于 2025-12-22 08:32
1,你现在已经闭环了,LEGACY BIOS + UEFI BIOS。
2,你现在问题是多ESP冲突。
3,只要进入虚拟UEFI环 ...

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

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

问下:uniboot1.vhd中的nvme的驱动是如何处理的呢,具体是哪一个文件是驱动的呢?
作者: seekyou2008    时间: 2025-12-22 16:16
qj_tzy 发表于 2025-12-22 11:20
问下:uniboot1.vhd中的nvme的驱动是如何处理的呢,具体是哪一个文件是驱动的呢?

/EFI/Drivers/NvmExpressDxe.efi
作者: qj_tzy    时间: 2025-12-22 17:11
seekyou2008 发表于 2025-12-22 16:16
/EFI/Drivers/NvmExpressDxe.efi

非常感谢!
作者: qj_tzy    时间: 2025-12-22 20:26
本帖最后由 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分区有关?但这个我不想改,因这个我的数据盘,不用于安装操作系统。



作者: seekyou2008    时间: 2025-12-22 20:53
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。
作者: qj_tzy    时间: 2025-12-22 22:02
seekyou2008 发表于 2025-12-22 20:53
不需要改,你不是进入虚拟UEFI吗?

在 UEFI Shell 中

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

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

54楼,那个界面是找不到ESP分区。你一直卡在这里没有进入模拟UEFI吗?这样的话,那进入不了SHELL界面。
作者: seekyou2008    时间: 2025-12-22 22:18
qj_tzy 发表于 2025-12-22 22:02
把uos_live那个分区格式化为ntfs分区,电脑中只有一个esp分区是FAT32分区了。
测试进入54楼的界面

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

好的,晚上试试
作者: qj_tzy    时间: 2025-12-24 09:02
seekyou2008 发表于 2025-12-22 22:18
如果你把VHD里的EFI目录拷到ESP里,DUET识别不到,就不要再折腾了。

昨晚按这样试了,DUET未能引导esp分区中的\efi\boot\bootx64.efi
作者: sd631267    时间: 2025-12-24 14:08
学习
作者: seekyou2008    时间: 2025-12-24 19:52
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本身。
作者: qj_tzy    时间: 2025-12-25 10:58
本帖最后由 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上

作者: seekyou2008    时间: 2025-12-25 19:56
qj_tzy 发表于 2025-12-25 10:58
1.我曾经作过测试,在一台仅支持legacy引导的电脑上,用grub2用ntldr命令如ntldr /grldr引导g4d、clover ...

问题出在 支持bios+uefi双启的电脑上,duet在仅支持legacy引导的电脑上是正常的。
作者: mozartdzg    时间: 2025-12-25 20:04
看着就很高级,感谢分享




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3