无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 2057|回复: 40
打印 上一主题 下一主题

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

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

今天突然发现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, 下载次数: 36, 下载积分: 无忧币 -2

GRLDR编辑器V4.0.exe

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

修改grldr文件

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

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

去掉.txt后缀

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

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

去掉.txt后缀

点评

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

评分

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

查看全部评分

2#
发表于 2024-7-3 07:10:39 来自手机 | 只看该作者
进来一看,不是UEFI

点评

不了解uefi引导,理论上grub4dos是可以引导uefi的,只是我不懂。  详情 回复 发表于 2024-7-3 07:19
回复

使用道具 举报

3#
发表于 2024-7-3 07:14:44 | 只看该作者
谢谢分享

点评

哥,专业点赞人啊。 看过的帖子大多都有大哥的身影。  详情 回复 发表于 2024-7-3 07:49
回复

使用道具 举报

4#
 楼主| 发表于 2024-7-3 07:19:44 | 只看该作者
szwp 发表于 2024-7-3 07:10
进来一看,不是UEFI

不了解uefi引导,理论上grub4dos是可以引导uefi的,只是我不懂。

点评

了解一下吧,新机器根本就没有BIOS启动了,以后UEFI才是主流。  详情 回复 发表于 2024-7-3 10:13
回复

使用道具 举报

5#
发表于 2024-7-3 07:49:35 | 只看该作者
谢谢分享
回复

使用道具 举报

6#
 楼主| 发表于 2024-7-3 07:49:42 | 只看该作者

哥,专业点赞人啊。
看过的帖子大多都有大哥的身影。

点评

鼓励  发表于 2024-7-3 13:13
回复

使用道具 举报

7#
发表于 2024-7-3 08:03:04 | 只看该作者
谢谢分享
回复

使用道具 举报

8#
发表于 2024-7-3 08:19:46 | 只看该作者

谢谢分享
回复

使用道具 举报

9#
发表于 2024-7-3 08:30:56 | 只看该作者


谢谢分享
回复

使用道具 举报

10#
发表于 2024-7-3 08:37:03 | 只看该作者
1. 既然你已经用grub2加载grub.exe了,那grldr是不需要的。
2. 可以直接写 ($vtoydev,2),这样就不用区分分区表了。

点评

谢谢指导,我只是比着别人的代码抄的,不懂原理。  详情 回复 发表于 2024-7-3 08:47
回复

使用道具 举报

11#
 楼主| 发表于 2024-7-3 08:47:03 | 只看该作者
本帖最后由 linqyx 于 2024-7-3 08:50 编辑
wintoflash 发表于 2024-7-3 08:37
1. 既然你已经用grub2加载grub.exe了,那grldr是不需要的。
2. 可以直接写 ($vtoydev,2),这样就不用区分 ...

谢谢指导,我只是比着别人的代码抄的,不懂原理。我看网上说,grldr可以搜索menu.lst,是不添加grldr的话,默认使用根目录下的menu.lst,而不搜索其他目录下的menu.lst。

点评

grub.exe和grldr两个文件的作用是相同的。你改内置菜单也要改grub.exe里面的才行,因为你启动的是grub.exe而不是grldr。  详情 回复 发表于 2024-7-3 09:34
回复

使用道具 举报

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

使用道具 举报

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。
回复

使用道具 举报

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

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

使用道具 举报

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

点评

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

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

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
回复

使用道具 举报

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

使用道具 举报

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

谢谢指导
回复

使用道具 举报

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了。
回复

使用道具 举报

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

谢谢分享
回复

使用道具 举报

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

使用道具 举报

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, 下载次数: 5)

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
回复

使用道具 举报

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
回复

使用道具 举报

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
回复

使用道具 举报

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

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

使用道具 举报

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
回复

使用道具 举报

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

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

使用道具 举报

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, 下载次数: 1)

2024-07-04_215955.jpg

点评

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-8 07:38

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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