无忧启动论坛

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

[求助] GRUB2 中如何使用grub文件管理器启动wim ,iso,vhd等文件?

[复制链接]
跳转到指定楼层
1#
发表于 5 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,最近在研究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文件,如何实现

不要现成的单文件,我想自己做
2#
发表于 5 天前 | 只看该作者
直接用grub2文件管理器呀

点评

我的要求是直接用grub文件管理器 启动WIM,是用一个菜单,直接启动。 不是先启动 grub文件管理器,再在里面找wim文件来启动。  详情 回复 发表于 5 天前
回复

使用道具 举报

3#
发表于 5 天前 | 只看该作者
来学习的
回复

使用道具 举报

4#
 楼主| 发表于 5 天前 | 只看该作者
青青草 发表于 2025-5-14 13:55
直接用grub2文件管理器呀

我的要求是直接用grub文件管理器 启动WIM,是用一个菜单,直接启动。
不是先启动 grub文件管理器,再在里面找wim文件来启动。

点评

menuentry "启动 winPE" --class wim { search -f /boot/10PE.wim -s root; set grubfm_file=($root)/boot/10PE.wim configfile ${prefix}/rules/wim/wimboot.sh }  详情 回复 发表于 5 天前
回复

使用道具 举报

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

使用道具 举报

6#
发表于 5 天前 | 只看该作者
wimboot,请
我不了解grub2 fm,但是我觉得grubfm本来就是图形化的工具,未必会有命令行选项。
回复

使用道具 举报

7#
发表于 5 天前 | 只看该作者
ventoy讨论区不是有兄弟发了一个吗?
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
这个bootx64.efi就是grub2文件管理器,另外他还有一份解开的版本在压缩包里。
回复

使用道具 举报

8#
发表于 5 天前 | 只看该作者
感谢分享
回复

使用道具 举报

9#
发表于 5 天前 | 只看该作者
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
}
回复

使用道具 举报

10#
发表于 5 天前 | 只看该作者

你用的是官方版grub2,还是我修改的grub2?
你是想实现“grub2启动wim,iso.vhd”,还是想实现“grub2调用grub2-filemanager的功能”?

点评

不是官方版,就是用你修改的版本,想用grub2 调用grub文件管理器,来实现动态启动wim、iso或vhd文件。 论坛里是别人做好的,拿来就用,这我知道,但是我就想知道这样的过程是如何实现的,能不能用cfg配置文件实现命  详情 回复 发表于 5 天前
回复

使用道具 举报

11#
 楼主| 发表于 5 天前 | 只看该作者
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 大大能指教一二,谢谢。

点评

你具体想了解哪个过程? 根据文件扩展名自动判断启动方式出菜单,还是具体如何启动wim? 前者看https://github.com/a1ive/grub2-filemanager/tree/master/samples 后者看wimboot源码  详情 回复 发表于 4 天前
回复

使用道具 举报

12#
发表于 4 天前 | 只看该作者
进来学习一下
回复

使用道具 举报

13#
发表于 4 天前 | 只看该作者
学习了
回复

使用道具 举报

14#
发表于 4 天前 | 只看该作者
nbhai2018 发表于 2025-5-14 22:06
不是官方版,就是用你修改的版本,想用grub2 调用grub文件管理器,来实现动态启动wim、iso或vhd文件。
...


你具体想了解哪个过程?
根据文件扩展名自动判断启动方式出菜单,还是具体如何启动wim?
前者看https://github.com/a1ive/grub2-filemanager/tree/master/samples
后者看wimboot源码

点评

前者看https://github.com/a1ive/grub2-filemanager/tree/master/samples ,如何使用? 后者看wimboot源码,又如何使用?? 我两者都要,怎么办。 源码看不懂,直接写个步骤出来好了,还请 wintoflash 大哥赐  详情 回复 发表于 4 天前
回复

使用道具 举报

15#
 楼主| 发表于 4 天前 | 只看该作者
wintoflash 发表于 2025-5-15 07:20
你具体想了解哪个过程?
根据文件扩展名自动判断启动方式出菜单,还是具体如何启动wim?
前者看https ...

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

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

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

点评

原理都在源码里面,你看不懂我也没办法,可以自己去问ai。 自动菜单原理就是正则表达式提取扩展名,判断对应启动方式。 run不是我写的,你可以去咨询开发者。  详情 回复 发表于 4 天前
回复

使用道具 举报

16#
发表于 4 天前 | 只看该作者
本帖最后由 wintoflash 于 2025-5-15 08:57 编辑

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

点评

说与没说一样,无语。大佬就是大佬。  详情 回复 发表于 4 天前
回复

使用道具 举报

17#
 楼主| 发表于 4 天前 | 只看该作者
wintoflash 发表于 2025-5-15 08:54
原理都在源码里面,你看不懂我也没办法,可以自己去问ai。
如何使用?看了就知道如何使用。知道grub2基 ...

说与没说一样,无语。大佬就是大佬。

点评

我才无语呢。 你问了跟没问一样,一点不具体。  详情 回复 发表于 4 天前
回复

使用道具 举报

18#
发表于 4 天前 | 只看该作者
nbhai2018 发表于 2025-5-15 09:54
说与没说一样,无语。大佬就是大佬。

我才无语呢。
你问了跟没问一样,一点不具体。

点评

我猜测楼主是要使用GRUB2菜单实现grubfm的启动特定wim\iso的功能(不通过grubrm)。菜单如何写?  详情 回复 发表于 4 天前
回复

使用道具 举报

19#
发表于 4 天前 | 只看该作者
wintoflash 发表于 2025-5-15 10:53
我才无语呢。
你问了跟没问一样,一点不具体。

我猜测楼主是要使用GRUB2菜单实现grubfm的启动特定位置、特定名称的wim\iso文件的功能(不通过grubrm)。菜单如何写?
回复

使用道具 举报

20#
发表于 4 天前 | 只看该作者
本帖最后由 mygamexxx 于 2025-5-15 12:21 编辑

grubfm是比较多的文件组成的,要用GRUB2菜单实现估计有点难度。iso/vhd可以用map或memdisk实现,wim有难度需要用wimboot。
回复

使用道具 举报

21#
发表于 4 天前 | 只看该作者
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
}

点评

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; gru  详情 回复 发表于 4 天前
回复

使用道具 举报

22#
发表于 4 天前 | 只看该作者
本帖最后由 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楼

点评

GRUB2区置顶的帖子里面就有用法 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=417545&extra=page%3D1 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=417233&extra=page%3D1 我提供的文档里面也  详情 回复 发表于 4 天前
回复

使用道具 举报

23#
发表于 4 天前 | 只看该作者
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
回复

使用道具 举报

24#
发表于 4 天前 | 只看该作者
wim  vhd 用  ntloader

iso 用 isoldr.efi

以上两者 可以 直接  写菜单( 参数的 形式 指定  要启动的镜像)
回复

使用道具 举报

25#
 楼主| 发表于 4 天前 | 只看该作者
grub2 修改版用 ntloader 引导不了wim 和 vhd,运行后会重启,不知道是怎么回事,
用 grub4dos for UEFI 有些电脑可引导,有些却不行,可能兼容性有问题。

点评

ntloader版本号是多少?菜单是这么写的? 我的grub2有ntboot/wimboot功能,不用ntloader也行。  详情 回复 发表于 3 天前
回复

使用道具 举报

26#
发表于 3 天前 | 只看该作者
nbhai2018 发表于 2025-5-15 23:10
grub2 修改版用 ntloader 引导不了wim 和 vhd,运行后会重启,不知道是怎么回事,
用 grub4dos for UEFI  ...

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_platf  详情 回复 发表于 3 天前
回复

使用道具 举报

27#
 楼主| 发表于 3 天前 | 只看该作者
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;
}

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

点评

我帖子和文档中已经写明了,这是 GRUB2(>=2.12)的菜单。 我修改的grub基于2.11,因此要用下面的菜单。 https://github.com/grub4dos/ntloader/blob/main/docs/menu.md ntloader and initrd.cpio must be on the s  详情 回复 发表于 3 天前
回复

使用道具 举报

28#
发表于 3 天前 | 只看该作者
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会有问题。注释掉的代码还没测试。
回复

使用道具 举报

29#
发表于 3 天前 | 只看该作者
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;
}

点评

可以了,成功启动WIM,vhdx等文件 就是 ISO文件 不用第三方工具,用 GRUB2 是如何启动的。  详情 回复 发表于 前天 13:53
回复

使用道具 举报

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

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

回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-5-19 13:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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