无忧启动论坛

标题: GRUB2 中如何使用grub文件管理器启动wim ,iso,vhd等文件? [打印本页]

作者: nbhai2018    时间: 2025-5-14 13:12
标题: GRUB2 中如何使用grub文件管理器启动wim ,iso,vhd等文件?
如题,最近在研究Grub2 启动,小白一个,之前用grub4uefi,有些电脑菜单启动不了,于是想研究一下grub2的启动,花了二天时间发现在grub2中用 grub文件管理器 ,无法通过Grub2 来启动wim,iso.vhd等文件,特来求助,望各位大神们不吝赐教。谢谢。

menuentry "启动WIM" --class wim {
search -f /boot/PE/WIN.wim -s root;
grubfm;
grubfm_open "($root)/boot/PE/WIN.wim";
}


像这种菜单启动wim文件,如何实现

不要现成的单文件,我想自己做
作者: 青青草    时间: 2025-5-14 13:55
直接用grub2文件管理器呀
作者: guong    时间: 2025-5-14 14:23
来学习的
作者: nbhai2018    时间: 2025-5-14 14:44
青青草 发表于 2025-5-14 13:55
直接用grub2文件管理器呀

我的要求是直接用grub文件管理器 启动WIM,是用一个菜单,直接启动。
不是先启动 grub文件管理器,再在里面找wim文件来启动。
作者: 12956    时间: 2025-5-14 15:07
学习了
作者: hzyry2046    时间: 2025-5-14 15:11
wimboot,请
我不了解grub2 fm,但是我觉得grubfm本来就是图形化的工具,未必会有命令行选项。
作者: my9823    时间: 2025-5-14 15:35
ventoy讨论区不是有兄弟发了一个吗?
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
这个bootx64.efi就是grub2文件管理器,另外他还有一份解开的版本在压缩包里。
作者: dksoft    时间: 2025-5-14 15:38
感谢分享
作者: 青青草    时间: 2025-5-14 15:52
nbhai2018 发表于 2025-5-14 14:44
我的要求是直接用grub文件管理器 启动WIM,是用一个菜单,直接启动。
不是先启动 grub文件管理器,再在 ...
如:
menuentry "启动 winPE" --class wim {
search -f /boot/10PE.wim -s root;
set grubfm_file=($root)/boot/10PE.wim
configfile ${prefix}/rules/wim/wimboot.sh
}
作者: wintoflash    时间: 2025-5-14 16:20

你用的是官方版grub2,还是我修改的grub2?
你是想实现“grub2启动wim,iso.vhd”,还是想实现“grub2调用grub2-filemanager的功能”?
作者: nbhai2018    时间: 2025-5-14 22:06
wintoflash 发表于 2025-5-14 16:20
你用的是官方版grub2,还是我修改的grub2?
你是想实现“grub2启动wim,iso.vhd”,还是想实现“grub2调 ...

不是官方版,就是用你修改的版本,想用grub2 调用grub文件管理器,来实现动态启动wim、iso或vhd文件。
论坛里是别人做好的,拿来就用,这我知道,但是我就想知道这样的过程是如何实现的,能不能用cfg配置文件实现命令行式的启动wim,iso文件等功能。

还有就是 论坛里的版本不能用 run 脚本命令,而我修改的版本又不能实现grub2调用grub2-filemanager的功能 如 grubfm winpe.wim 这样的运行启动命令。
望wintoflash 大大能指教一二,谢谢。

作者: idcicp    时间: 2025-5-15 00:21
进来学习一下
作者: 菲菲18866    时间: 2025-5-15 00:25
学习了
作者: wintoflash    时间: 2025-5-15 07:20
nbhai2018 发表于 2025-5-14 22:06
不是官方版,就是用你修改的版本,想用grub2 调用grub文件管理器,来实现动态启动wim、iso或vhd文件。
...


你具体想了解哪个过程?
根据文件扩展名自动判断启动方式出菜单,还是具体如何启动wim?
前者看https://github.com/a1ive/grub2-filemanager/tree/master/samples
后者看wimboot源码
作者: nbhai2018    时间: 2025-5-15 08:26
wintoflash 发表于 2025-5-15 07:20
你具体想了解哪个过程?
根据文件扩展名自动判断启动方式出菜单,还是具体如何启动wim?
前者看https ...

前者看https://github.com/a1ive/grub2-filemanager/tree/master/samples  ,如何使用?
后者看wimboot源码,又如何使用??
我两者都要,怎么办。

源码看不懂,直接写个步骤出来好了,还请 wintoflash 大哥赐教,谢谢了。

PS:用 run 写的自动菜单,把该文件夹下的所有文件类型都显示出来了,没有过滤,不管能不能启动的,特别是EXE的执行文件,也显示出来,这样不好,是不是我不会用啊。

作者: wintoflash    时间: 2025-5-15 08:54
本帖最后由 wintoflash 于 2025-5-15 08:57 编辑
nbhai2018 发表于 2025-5-15 08:26
前者看https://github.com/a1ive/grub2-filemanager/tree/master/samples  ,如何使用?
后者看wimboot ...

原理都在源码里面,你看不懂我也没办法,可以自己去问ai。
如何使用?看了就知道如何使用。知道grub2基本语法就知道如何使用。
自动菜单原理就是正则表达式提取扩展名,判断对应启动方式。
run不是我写的,你可以去咨询开发者。
作者: nbhai2018    时间: 2025-5-15 09:54
wintoflash 发表于 2025-5-15 08:54
原理都在源码里面,你看不懂我也没办法,可以自己去问ai。
如何使用?看了就知道如何使用。知道grub2基 ...

说与没说一样,无语。大佬就是大佬。
作者: wintoflash    时间: 2025-5-15 10:53
nbhai2018 发表于 2025-5-15 09:54
说与没说一样,无语。大佬就是大佬。

我才无语呢。
你问了跟没问一样,一点不具体。
作者: mygamexxx    时间: 2025-5-15 12:16
wintoflash 发表于 2025-5-15 10:53
我才无语呢。
你问了跟没问一样,一点不具体。

我猜测楼主是要使用GRUB2菜单实现grubfm的启动特定位置、特定名称的wim\iso文件的功能(不通过grubrm)。菜单如何写?
作者: mygamexxx    时间: 2025-5-15 12:19
本帖最后由 mygamexxx 于 2025-5-15 12:21 编辑

grubfm是比较多的文件组成的,要用GRUB2菜单实现估计有点难度。iso/vhd可以用map或memdisk实现,wim有难度需要用wimboot。
作者: suangsuang    时间: 2025-5-15 12:46
menuentry "ventoy文件管理器" --class dir{
search --no-floppy --set --file /boot/voeny.vhd
map /boot/voeny.vhd (hd4)
boot
}

menuentry "启动 ISO" --class iso {
search -f /boot/WIN.iso -s root;
grubfm;
grubfm_open "($root)/boot/WIN.iso";
}
menuentry "启动WIM" --class wim {
search -f /boot/WIN.wim -s root;
grubfm;
grubfm_open "($root)/boot/WIN.wim";
}

menuentry "启动 VHD Windows" --class vhd {
search -f /boot/WIN.vhd -s root;
grubfm;
grubfm_open  "($root)/boot/WIN.vhd"

}
menuentry "启动 Windows" --class nt6 --class os {
search -n -s -f /EFI/Microsoft/Boot/bootmgfw.efi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
作者: mygamexxx    时间: 2025-5-15 13:33
本帖最后由 mygamexxx 于 2025-5-15 13:36 编辑
suangsuang 发表于 2025-5-15 12:46
menuentry "ventoy文件管理器" --class dir{
search --no-floppy --set --file /boot/voeny.vhd
map /boo ...

menuentry "启动 ISO" --class iso {
search -f /boot/WIN.iso -s root;
grubfm;
grubfm_open "($root)/boot/WIN.iso";
}
menuentry "启动WIM" --class wim {
search -f /boot/WIN.wim -s root;
grubfm;
grubfm_open "($root)/boot/WIN.wim";
}
这两个菜单不用grubfm,使用map/memdisk或wimboot如何实现运行。

找到解决方案,见 我这样配置grub2 (grub.cfg) - GRUB2 - 无忧启动论坛 - Powered by Discuz!  2楼


作者: wintoflash    时间: 2025-5-15 15:06
mygamexxx 发表于 2025-5-15 13:33
menuentry "启动 ISO" --class iso {
search -f /boot/WIN.iso -s root;
grubfm;

GRUB2区置顶的帖子里面就有用法

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1

我提供的文档里面也有示例菜单
https://a1ive.github.io/grub2_menu_zh.html
作者: 2011whp    时间: 2025-5-15 18:38
wim  vhd 用  ntloader

iso 用 isoldr.efi

以上两者 可以 直接  写菜单( 参数的 形式 指定  要启动的镜像)
作者: nbhai2018    时间: 2025-5-15 23:10
grub2 修改版用 ntloader 引导不了wim 和 vhd,运行后会重启,不知道是怎么回事,
用 grub4dos for UEFI 有些电脑可引导,有些却不行,可能兼容性有问题。
作者: wintoflash    时间: 2025-5-16 09:58
nbhai2018 发表于 2025-5-15 23:10
grub2 修改版用 ntloader 引导不了wim 和 vhd,运行后会重启,不知道是怎么回事,
用 grub4dos for UEFI  ...

ntloader版本号是多少?菜单是这么写的?
我的grub2有ntboot/wimboot功能,不用ntloader也行。
作者: nbhai2018    时间: 2025-5-16 10:34
wintoflash 发表于 2025-5-16 09:58
ntloader版本号是多少?菜单是这么写的?
我的grub2有ntboot/wimboot功能,不用ntloader也行。

ntloader版本号是3.0.6,菜单是用官方写的菜单:

menuentry "Boot Windows NT6+ WIM" {
search -s -f /path/to/ntloader
search -s dev -f /path/to/winpe.wim
probe -s dev_uuid -u $dev
if [ "${grub_platform}" = "efi" ]; then
linux /path/to/ntloader uuid=${dev_uuid} wim=/path/to/winpe.wim
initrd /path/to/initrd.cpio
else
linux16 /path/to/ntloader uuid=${dev_uuid} wim=/path/to/winpe.wim
initrd16 /path/to/initrd.cpio
fi;
}

其中内容文件路径可以按自己实际文件路径改,但是就是不能用,一用就是重启,最后还是放弃了。

作者: mygamexxx    时间: 2025-5-16 11:22
menuentry "wim的引导" --class dir{
search -n -s -f /boot/boot.wim
ntboot -e /bootmgfw.efi /boot/boot.wim
#ntboot --efi=/bootmgfw.efi --wim /boot/boot.wim

#search -n -s wimroot -f /boot/boot.wim
#wimboot @:bootmgfw.efi:/bootmgfw.efi \
#        @:boot.wim:($wimroot)/boot.wim
}

menuentry "iso的引导" --class dir{
search -n -s -f /isos/NewBeePlus_Server.iso
map /isos/NewBeePlus_Server.iso
#map --mem --type=CD /isos/NewBeePlus_Server.iso
##加载某磁盘/分区为虚拟盘
#map --type=HD (hd0)
##加载VHD文件。
#map --mem --rt (hd1,4)/ramos.vhd.xz
}

实机测试成功,QEMU会有问题。注释掉的代码还没测试。
作者: wintoflash    时间: 2025-5-16 11:23
nbhai2018 发表于 2025-5-16 10:34
ntloader版本号是3.0.6,菜单是用官方写的菜单:

menuentry "Boot Windows NT6+ WIM" {

我帖子和文档中已经写明了,这是 GRUB2(>=2.12)的菜单。
我修改的grub基于2.11,因此要用下面的菜单。
https://github.com/grub4dos/ntloader/blob/main/docs/menu.md
ntloader and initrd.cpio must be on the same ESP partition.
menuentry "Boot Windows NT6+ WIM" {
    search -s -f /path/to/ntloader
    search -s dev -f /path/to/winpe.wim
    probe -s dev_uuid -u $dev
    if [ "${grub_platform}" = "efi" ]; then
        chainloader /path/to/ntloader initrd=/path/to/initrd.cpio uuid=${dev_uuid} wim=/path/to/winpe.wim
    else
        linux16 /path/to/ntloader uuid=${dev_uuid} wim=/path/to/winpe.wim
        initrd16 /path/to/initrd.cpio
   fi;
}

作者: nbhai2018    时间: 2025-5-17 13:53
本帖最后由 nbhai2018 于 2025-5-17 14:00 编辑
wintoflash 发表于 2025-5-16 11:23
我帖子和文档中已经写明了,这是 GRUB2(>=2.12)的菜单。
我修改的grub基于2.11,因此要用下面的菜单。
...

可以了,成功启动WIM,vhdx等文件


作者: lhl_hb    时间: 2025-5-21 00:53
感谢分享
作者: lhl_hb    时间: 2025-5-21 01:14
感谢分享
作者: jpzsj    时间: 2025-6-1 17:59
有大神回复的贴子我也请教个问题,grub2如何启动linux版的iso文件?感谢感谢
作者: wintoflash    时间: 2025-6-1 21:50
jpzsj 发表于 2025-6-1 17:59
有大神回复的贴子我也请教个问题,grub2如何启动linux版的iso文件?感谢感谢

没有通用的方法。




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