无忧启动论坛

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

[教程] 使ventoy可以调用menu.lst

    [复制链接]
跳转到指定楼层
1#
发表于 2024-7-3 06:51:25 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 linqyx 于 2024-10-9 18:07 编辑

今天突然发现ventoy本地启动自带grub4dos搜索并启动,以前没有发现。
按F4就能出现。
太尴尬了。



最近使用ventoy_grub.cfg添加菜单,遇到一些系统想使用menu.lst调用。写在最前面,基础好的,直接看24楼代码。http://bbs.wuyou.net/forum.php?m ... 9981&fromuid=270414,学会了使用grldr+menu.lst的组合。通过编辑grldr,发现可以自定义menu.lst的名称,位置。显然这样比grub.exe的方式更灵活一些。将grldr和menu.lst拷贝到硬盘。代码如下:menuentry "grub4dos" --class=custom {
    echo 'grub4dos'
    search -n -s -f /grldr
    ntldr /grldr
}

grldr正确的话,就能进入menu菜单。

推荐使用这种方法,更灵活。下边是使用grub.exe+menu.lst的方式,小白的我感觉最简单







上网搜资料发现这是grub4dos的功能,查了一些资料。找到以下代码(注意:把GRUB.EXE文件拷贝进入ventoy 32M分区的grub文件夹中,本贴中可以下载GRUB.EXE。)

menuentry "加载GRUB4DOS" --class=custom{
        linux ($vtoydev,gpt2)/grub/GRUB.EXE  
}

#这里改为你的grub.exe的路径,变量$vtoydev用来获取当前移动设备的名称和编号,gpt2为ventoy 32m分区,如果ventoy是mbr分区,gpt2改成msdos2.
把上面代码写入到ventoy_grub.cfg,并放入ventoy第一分区的ventoy文件夹中。


自己寻找grldr 、MESSAGE、menu.lst(一般在多功能pe的镜像中可以找到这些文件),grldr放入需要引导系统的分区根目录,本帖下载grldr编辑器、message编辑器,需要的话编辑grldr和message。把menu.lst放入对应的目录,一般和grldr放在一起,也可以修改grldr中的内容。经十三楼网友提醒,grub.exe和grldr功能一样,故把grldr去掉了。见
http://bbs.wuyou.net/forum.php?m ... 9416&fromuid=270414
启动进入ventoy,按F6,你会发现菜单中多了一个选项 加载GRUB4DOS,选择进入。
你可以使用记事本编辑menu.lst,添加系统引导。原来msgdiyer修改老是失败,不知道什么原因,更换了一个个性化启动菜单,本论坛有更新的般本。












GRUB.EXE

333.93 KB, 下载次数: 41, 下载积分: 无忧币 -2

GRLDR编辑器V4.0.exe

1.16 MB, 下载次数: 43, 下载积分: 无忧币 -2

修改grldr文件

个性化启动菜单制作(1.0.2.7).7z.001.txt

3 MB, 下载次数: 12, 下载积分: 无忧币 -2

去掉.txt后缀

个性化启动菜单制作(1.0.2.7).7z.002.txt

2.06 MB, 下载次数: 10, 下载积分: 无忧币 -2

去掉.txt后缀

点评

辛苦了  发表于 2024-7-3 07:15

评分

参与人数 1无忧币 +2 收起 理由
yyz2191958 + 2 赞一个!

查看全部评分

40#
发表于 2024-10-9 18:05:19 | 只看该作者
感谢分享
回复

使用道具 举报

39#
 楼主| 发表于 2024-8-30 16:38:02 | 只看该作者
逍遥逸仙 发表于 2024-8-30 16:35
火绒提示“个性化启动菜单制作”有毒

这个我倒是不知道,不放心就在虚拟机里运行试试吧
回复

使用道具 举报

38#
发表于 2024-8-30 16:35:12 | 只看该作者
火绒提示“个性化启动菜单制作”有毒

点评

这个我倒是不知道,不放心就在虚拟机里运行试试吧  详情 回复 发表于 2024-8-30 16:38
回复

使用道具 举报

37#
发表于 2024-8-30 16:12:57 | 只看该作者
学习了,谢谢分享
回复

使用道具 举报

36#
发表于 2024-8-20 16:46:36 | 只看该作者
水平太差,看不懂技术贴。
回复

使用道具 举报

35#
 楼主| 发表于 2024-7-5 14:40:53 | 只看该作者
liuzhaoyzz 发表于 2024-7-5 11:04
menuentry "/linux/CDlinux-0.9.7.1.iso" "/linux/CDlinux-0.9.7.1.iso" {
$1就是menuentry后面的第一个 ...

嗯,明白了。
在网上看到了很多关于grub2的说明,以及命令详解,只认得字,但是学不会,理解偏差太大。
我也知道这是小白的问题,奈何不懂就是不懂,网上资料放在眼前也看不懂,有您一说,就明白了。
谢谢您的解释。
回复

使用道具 举报

34#
发表于 2024-7-5 11:04:05 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2024-7-5 11:49 编辑
linqyx 发表于 2024-7-5 07:36
你好,打扰了,问你几个问题可以吗?不是不想自己研究,可行看了网上的许多资料,依然稀里糊涂的,只能找 ...

menuentry "/linux/CDlinux-0.9.7.1.iso" "/linux/CDlinux-0.9.7.1.iso" {
$1就是menuentry后面的第一个参数,你可以随意修改为其他任意的,比如改成CDlinux。
$2就是menuentry后面的第二个参数。这个参数是CDlinux的长文件路径,必须适配你自己那边的文件位置和文件名
你的文件名字变了,路径变了,只需要改第二个参数即可,其他的都不用变。
照葫芦画瓢啊!照葫芦画瓢啊!照葫芦画瓢啊!

另外,我给个例子,是iso不解开整体启动的菜单,并非解开的。
解开的另有菜单。


点评

嗯,明白了。 在网上看到了很多关于grub2的说明,以及命令详解,只认得字,但是学不会,理解偏差太大。 我也知道这是小白的问题,奈何不懂就是不懂,网上资料放在眼前也看不懂,有您一说,就明白了。 谢谢您的解  详情 回复 发表于 2024-7-5 14:40
回复

使用道具 举报

33#
 楼主| 发表于 2024-7-5 07:36:19 | 只看该作者
本帖最后由 linqyx 于 2024-7-5 08:12 编辑
liuzhaoyzz 发表于 2024-7-3 17:11
你的测试很奇怪。
1、我在qemu虚拟机中测试,ventoy1.0.99本来就可以启动CDLinux0.9.7.1.iso啊?(直接上 ...

你好,打扰了,问你几个问题可以吗?不是不想自己研究,可行看了网上的许多资料,依然稀里糊涂的,只能找人求助了。在代码
menuentry "/linux/CDlinux-0.9.7.1.iso" "/linux/CDlinux-0.9.7.1.iso" {
set gfxpayload=keep
search --no-floppy --set --file $2;probe -u ($root) -s uuid;echo $uuid
loopback loop $2
linux (loop)/CDlinux/bzImage CDL_DEV=UUID=$uuid CDL_IMG=$2 CDL_DIR=/ CDL_LANG=zh_CN.UTF-8 CDL_AMOUNT=yes CDL_GUI=yes
initrd (loop)/CDlinux/initrd
}
之中,
1. loopback loop $2   这个$2是不是必须是一个文件,iso镜像这种?
2. --no-floppy --set --file $2 这个是不是和下边的$2必须是同一文件?
3.代码
search --no-floppy --set --file $2;probe -u ($root) -s uuid;echo $uuid
loopback loop $2
linux (loop)/CDlinux/bzImage CDL_DEV=UUID=$uuid CDL_IMG=$2 CDL_DIR=/ CDL_LANG=zh_CN.UTF-8 CDL_AMOUNT=yes CDL_GUI=yes
initrd (loop)/CDlinux/initrd
可不可以写成
search --no-floppy --set --file /veket8/vmlinuz;probe -u ($root) -s uuid;echo $uuid
linux /veket8/vmlinuz fullinstall root=UUID=$uuid pmedia=atahd
initrd /veket8/initrd
boot

这种形式?
不行的话可以写成类似的吗?

点评

menuentry "/linux/CDlinux-0.9.7.1.iso" "/linux/CDlinux-0.9.7.1.iso" { $1就是menuentry后面的第一个参数。 $2就是menuentry后面的第二个参数。 你的文件名字变了,路径变了,只需要改第二个参数即可,其他的  详情 回复 发表于 2024-7-5 11:04
回复

使用道具 举报

32#
 楼主| 发表于 2024-7-5 07:11:09 | 只看该作者
liuzhaoyzz 发表于 2024-7-5 07:07
写出这样子代码的人,根本不了解linux的启动机理,代码就是错误的。
这样子的代码只能启动到linux的内核 ...

回复

使用道具 举报

31#
发表于 2024-7-5 07:07:06 | 只看该作者
linqyx 发表于 2024-7-4 22:02
今天使用这个代码,成功进入系统。感觉这个代码太巧妙了。
在网上找到了一段代码
title CDlinux098

写出这样子代码的人,根本不了解linux的启动机理,代码就是错误的。
这样子的代码只能启动到linux的内核initrd,后续的启动流程无法继续,因为iso没有被挂载。

点评

哦  详情 回复 发表于 2024-7-5 07:11
回复

使用道具 举报

30#
 楼主| 发表于 2024-7-4 22:02:31 | 只看该作者
liuzhaoyzz 发表于 2024-7-3 17:11
你的测试很奇怪。
1、我在qemu虚拟机中测试,ventoy1.0.99本来就可以启动CDLinux0.9.7.1.iso啊?(直接上 ...

今天使用这个代码,成功进入系统。感觉这个代码太巧妙了。
在网上找到了一段代码
title CDlinux098
        find --ignore-floppies --ignore-cd --set-root /iso/CDlinux098.iso
        map  /iso/CDlinux098.iso (0xff) || map --mem /iso/CDlinux098.iso (0xff)
        map --e820cycles=0
        map --hook
        chainloader (0xff)
可以进入启动界面,但是出现了
/Media/CDLINux/CDlinux:kernel version mismatch. Skipped.
/Media/CDLINux/CDlinux:kernel version mismatch. Skipped.
can`t find out where CDlinux is installed.
如图

这是什么原因啊?
能不能改动,让CDlinux成功进入系统?

2024-07-04_215955.jpg (74.66 KB, 下载次数: 20)

2024-07-04_215955.jpg

点评

写出这样子代码的人,根本不了解linux的启动机理,代码就是错误的。 这样子的代码只能启动到linux的内核initrd,后续的启动流程无法继续,因为iso没有被挂载。  详情 回复 发表于 2024-7-5 07:07
回复

使用道具 举报

29#
 楼主| 发表于 2024-7-3 19:01:20 | 只看该作者
liuzhaoyzz 发表于 2024-7-3 18:35
此ntldr,并非微软的NTLDR文件。
ntldr /grldr中的ntldr,指的是grub2内置的ntldr命令,帖子里面已经说 ...

嗯,我再试试。
谢谢您的耐心。
回复

使用道具 举报

28#
发表于 2024-7-3 18:35:30 | 只看该作者
本帖最后由 liuzhaoyzz 于 2024-7-3 18:37 编辑
linqyx 发表于 2024-7-3 18:27
ntldr /grldr

是不是需要下载一个ntldr文件和grldr放到一起,还是怎么弄?

此ntldr,并非微软的NTLDR文件。
ntldr /grldr中的ntldr,指的是grub2内置的ntldr命令,帖子里面已经说了ntldr命令了。

grldr和menu.lst放在ventoy盘的根目录下即可。

我的帖子里面CDLinux0.9.7.1.iso放在/linux/CDlinux-0.9.7.1.iso,如果你的位置变化了,可以照葫芦画瓢。

好奇怪,24楼的帖子,怎么被人顶上去了,显得像是穿越了一样。

点评

嗯,我再试试。 谢谢您的耐心。  详情 回复 发表于 2024-7-3 19:01
回复

使用道具 举报

27#
 楼主| 发表于 2024-7-3 18:32:47 | 只看该作者
linqyx 发表于 2024-7-3 17:56
谢谢指导。
1.虚拟机可以直接启动cdlinux的镜像。通过ventoy启动cdlinux0.9.7.1的镜像不成功。
2.我对g ...

复制了代码,试了下,不知道怎么修改,不出意外的失败了。
只能等待学会了再用了
回复

使用道具 举报

26#
 楼主| 发表于 2024-7-3 18:27:16 | 只看该作者
liuzhaoyzz 发表于 2024-7-3 17:11
你的测试很奇怪。
1、我在qemu虚拟机中测试,ventoy1.0.99本来就可以启动CDLinux0.9.7.1.iso啊?(直接上 ...

ntldr /grldr

是不是需要下载一个ntldr文件和grldr放到一起,还是怎么弄?
实在是不懂,见笑了

点评

此ntldr,并非微软的NTLDR文件。 ntldr /grldr中的ntldr,指的是grub2内置的ntldr命令,帖子里面已经说了ntldr命令了。 grldr放在ventoy盘的根目录下即可。 我的帖子里面CDLinux0.9.7.1.iso放在/linux/CDlinu  详情 回复 发表于 2024-7-3 18:35
回复

使用道具 举报

25#
 楼主| 发表于 2024-7-3 17:56:55 | 只看该作者
liuzhaoyzz 发表于 2024-7-3 17:11
你的测试很奇怪。
1、我在qemu虚拟机中测试,ventoy1.0.99本来就可以启动CDLinux0.9.7.1.iso啊?(直接上 ...

谢谢指导。
1.虚拟机可以直接启动cdlinux的镜像。通过ventoy启动cdlinux0.9.7.1的镜像不成功。
2.我对grub2和grub4dos的完全属于不了解的程度,代码怎么写都是抄的网上的。结果就是启动不来。
3.虽然您给了详细的代码,奈何我的底子太烂。阅读理解都做不了

点评

复制了代码,试了下,不知道怎么修改,不出意外的失败了。 只能等待学会了再用了  详情 回复 发表于 2024-7-3 18:32
回复

使用道具 举报

24#
发表于 2024-7-3 17:11:00 | 只看该作者
本帖最后由 liuzhaoyzz 于 2024-7-3 17:18 编辑

你的测试很奇怪。
1、我在qemu虚拟机中测试,ventoy1.0.99本来就可以启动CDLinux0.9.7.1.iso啊?(直接上图)
2、CDLinux0.9.7.1是过期的版本,最后的版本是CDlinux-0.9.8b7-amd64.iso
https://cloud.189.cn/web/share?code=iu6jQvNbuqQr(访问码:h6nq)
3、ventoy转grub2可以直接启动CDLinux0.9.7.1.iso。
#Ventoy 的界面上按 F6 加载执行\ventoy\ventoy_grub.cfg
menuentry "/linux/CDlinux-0.9.7.1.iso" "/linux/CDlinux-0.9.7.1.iso" {
set gfxpayload=keep
search --no-floppy --set --file $2;probe -u ($root) -s uuid;echo $uuid
loopback loop $2
linux (loop)/CDlinux/bzImage CDL_DEV=UUID=$uuid CDL_IMG=$2 CDL_DIR=/ CDL_LANG=zh_CN.UTF-8 CDL_AMOUNT=yes CDL_GUI=yes
initrd (loop)/CDlinux/initrd
}
4、ventoy转grub4dos,不建议调用grub.exe,这是DOS/linux的东西,为啥不直接用grub2的ntldr命令直接调用grldr,这样子调用的话,会全盘查找grldr,全盘查找menu.lst。
#Ventoy 的界面上按 F6 加载执行\ventoy\ventoy_grub.cfg
menuentry "grub4dos" --class=custom {
    echo 'grub4dos'
    search -n -s -f /grldr
    ntldr /grldr
}

#menu.lst启动CDlinux-0.9.7.1.iso
title /linux/CDlinux-0.9.7.1.iso
find --ignore-floppies --ignore-cd --set-root /linux/CDlinux-0.9.7.1.iso ;; uuid () ;; echo %?_UUID%
map /linux/CDlinux-0.9.7.1.iso (hd32)
map --hook
kernel (hd32)/CDlinux/bzImage CDL_DEV=UUID=%?_UUID% CDL_IMG=/linux/CDlinux-0.9.7.1.iso CDL_DIR=/ CDL_LANG=zh_CN.UTF-8 CDL_AMOUNT=yes CDL_GUI=yes
initrd (hd32)/CDlinux/initrd
5、建议用uuid模式启动CDlinux-0.9.7.1.iso,通杀各种CDlinux,不建议用CDLabel方式,uuid更加可靠。

CDLinux0.9.7.1可启动.png (156.91 KB, 下载次数: 120)

CDLinux0.9.7.1可启动.png

点评

你好,打扰了,问你几个问题可以吗?不是不想自己研究,可行看了网上的许多资料,依然稀里糊涂的,只能找人求助了。在代码 menuentry "/linux/CDlinux-0.9.7.1.iso" "/linux/CDlinux-0.9.7.1.iso" { set gfxpayloa  详情 回复 发表于 2024-7-5 07:36
今天使用这个代码,成功进入系统。感觉这个代码太巧妙了。 在网上找到了一段代码 title CDlinux098 find --ignore-floppies --ignore-cd --set-root /iso/CDlinux098.iso map /iso/CDlinux098.iso (0xff) ||  详情 回复 发表于 2024-7-4 22:02
ntldr /grldr 是不是需要下载一个ntldr文件和grldr放到一起,还是怎么弄? 实在是不懂,见笑了  详情 回复 发表于 2024-7-3 18:27
谢谢指导。 1.虚拟机可以直接启动cdlinux的镜像。通过ventoy启动cdlinux0.9.7.1的镜像不成功。 2.我对grub2和grub4dos的完全属于不了解的程度,代码怎么写都是抄的网上的。结果就是启动不来。 3.虽然您给了详细的  详情 回复 发表于 2024-7-3 17:56
回复

使用道具 举报

23#
发表于 2024-7-3 12:16:53 | 只看该作者
谢谢分享
回复

使用道具 举报

22#
发表于 2024-7-3 12:08:31 | 只看该作者

谢谢分享
回复

使用道具 举报

21#
 楼主| 发表于 2024-7-3 10:56:24 | 只看该作者
不点 发表于 2024-7-3 10:47
我记得 grub.exe 作为 Linux kernel 格式而被 grub2 或 syslinux 加载时,是支持命令行的 --config-file=“ ...

谢谢指导。我想以前的老旧linux系统应该也不支持uefi吧,支持uefi启动的大部分镜像应该也可以被ventoy直接启动了,不需要中转grub4dos了。
回复

使用道具 举报

20#
 楼主| 发表于 2024-7-3 10:54:37 | 只看该作者
不点 发表于 2024-7-3 10:47
我记得 grub.exe 作为 Linux kernel 格式而被 grub2 或 syslinux 加载时,是支持命令行的 --config-file=“ ...

谢谢指导
回复

使用道具 举报

19#
发表于 2024-7-3 10:47:45 | 只看该作者
谢谢分享
回复

使用道具 举报

18#
发表于 2024-7-3 10:47:13 | 只看该作者
本帖最后由 不点 于 2024-7-3 10:55 编辑

我记得 grub.exe 作为 Linux kernel 格式而被 grub2 或 syslinux 加载时,是支持命令行的 --config-file=“...” 参数的。省略号的位置,可以直接填写菜单命令,命令之间用分号分隔。省略号的位置,也可以是一个 menu.lst 格式的文件名,路径采用 grub4dos 格式。grub4dos 的 readme 应该有详细说明。

顺便提一下,从 grub2 启动 grub4dos,还有一种方式,即,采用启动 ntldr 的方式来启动 grldr(百度应该可以找到这个知识)。不过,这种情况就不能支持 --config-file=“...” 参数了,而只能通过修改 grldr 的内置菜单来实现。

在 UEFI 体系之下,我猜,也应该有办法从 grub2 来启动 grub4dos for UEFI。完善起见,楼主应该考虑这个问题。毕竟,legacy BIOS 已经处于颓废之境了。

点评

我想以前的老旧linux系统应该也不支持uefi吧,支持uefi启动的大部分镜像应该也可以被ventoy直接启动了,不需要中转grub4dos了。  详情 回复 发表于 2024-7-3 10:56
谢谢指导  详情 回复 发表于 2024-7-3 10:54
回复

使用道具 举报

17#
发表于 2024-7-3 10:40:39 | 只看该作者
谢谢提供分享!
回复

使用道具 举报

16#
 楼主| 发表于 2024-7-3 10:37:26 | 只看该作者
dfw9 发表于 2024-7-3 10:28
有 grldr 还要什么menu(自行车)?

我理解很浅,很多东西只是描葫芦画瓢,见笑了。
回复

使用道具 举报

15#
发表于 2024-7-3 10:28:30 | 只看该作者
有 grldr 还要什么menu(自行车)?

点评

我理解很浅,很多东西只是描葫芦画瓢,见笑了。  详情 回复 发表于 2024-7-3 10:37
回复

使用道具 举报

14#
发表于 2024-7-3 10:13:59 | 只看该作者
linqyx 发表于 2024-7-3 07:19
不了解uefi引导,理论上grub4dos是可以引导uefi的,只是我不懂。

了解一下吧,新机器根本就没有BIOS启动了,以后UEFI才是主流。
回复

使用道具 举报

13#
发表于 2024-7-3 09:34:30 | 只看该作者
linqyx 发表于 2024-7-3 08:47
谢谢指导,我只是比着别人的代码抄的,不懂原理。我看网上说,grldr可以搜索menu.lst,是不添加grldr的话 ...

grub.exe和grldr两个文件的作用是相同的。你改内置菜单也要改grub.exe里面的才行,因为你启动的是grub.exe而不是grldr。
回复

使用道具 举报

12#
发表于 2024-7-3 08:52:20 | 只看该作者
来学习了 不错
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-22 14:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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