无忧启动论坛

标题: GRUB4DOS for UEFI有没有内置菜单 [打印本页]

作者: 201287zr    时间: 7 天前
标题: GRUB4DOS for UEFI有没有内置菜单
本帖最后由 201287zr 于 2025-5-26 16:08 编辑

虽然来论坛很多年了,但对grub4dos还是掌握得很浅显,最近空闲之余研究了下GRUB4DOS for UEFI,但很多还不太理解,感觉G4E跟G4D差别很大。我想请教一下G4E有内置菜单吗?以前用G4D时都是可以编辑grldr的内置菜单的,但G4E好像没有了,那G4D和G4E的菜单可以通用吗?比如我想引导grldr或bootx64.efi后都找到/menu.lst,并设置图模式和字体等,再根据不同的平台(BIOS或UEFI)适配不同PE菜单可行吗?所以我不清楚G4E是否有内置菜单如find --set-root --ignore-floppies --ignore-cd /menu.lst这样的预置语句设置了root目录或判断是否PXE启动等。看了一些帮助,感觉也没太懂,还请大师们指教一下。

作者: fuldho    时间: 7 天前

作者: 201287zr    时间: 7 天前
fuldho 发表于 2025-5-26 16:40

请问这个在哪里,如何更改呢
作者: fuldho    时间: 7 天前
201287zr 发表于 2025-5-26 17:03
请问这个在哪里,如何更改呢

看作者原帖说明

更新说明:
2021-06-19 (yaya)
  增加 ADDR_RET_STR 以便外部命令使用。

2021-06-02 (a1ive)
  支持嵌入字库、模块(.mod文件)。
  mkimage.exe -d 目录 -p /efi/grub -o BOOTX64.EFI -O x86_64-efi -c 嵌入菜单 -f 嵌入字库 -m 嵌入模块
  mkimage.exe -d 目录 -p /efi/grub -o BOOTIA32.EFI -O i386-efi -c 嵌入菜单 -f 嵌入字库 -m 嵌入模块

作者: 201287zr    时间: 6 天前
fuldho 发表于 2025-5-26 17:39
看作者原帖说明

更新说明:

感谢大师,请问有mkimage的详细说明吗,-d是什么作用,与-f有什么区别,有没有具体制作的示例
作者: 2011yaya2007777    时间: 6 天前
真是的,-d 后面是菜单所在目录。-f 是字库文件,与你无关。
作者: 201287zr    时间: 5 天前
2011yaya2007777 发表于 2025-5-27 10:35
真是的,-d 后面是菜单所在目录。-f 是字库文件,与你无关。

请教yaya大师,G4E可不可以依次查询/efi/grub /grub和/下面的menu.lst,用mkimage -p也只能指定一个路径,如果/efi/grub下面没有menu.lst会出错直接进入命令行,我内置菜单也写了一条查询菜单如下:
title find /menu.lst, /efi/grub/menu.lst, /grub/menu.lst
        #errorcheck off
        configfile /efi/grub/menu.lst
        configfile /grub/menu.lst
        configfile /menu.lst
        #errorcheck on
        commandline
我记得g4d以前都是默认会查询多个路径的配置文件,g4e不行吗?还是我内置菜单的姿势不对?
作者: 2011yaya2007777    时间: 5 天前
g4e的菜单是固定位置
作者: 201287zr    时间: 5 天前
2011yaya2007777 发表于 2025-5-28 17:27
g4e的菜单是固定位置

那内置菜单的作用是什么呢?菜单都已固定在/efi/grub下,那似乎内置菜单没起作用是这样理解吧,我测试内置菜单似乎也没起到作用。
作者: blank007    时间: 5 天前
还是不要纠结的好  @9#
作者: 2011yaya2007777    时间: 5 天前
某些人的偏爱吧。可以仅有内置菜单,也可以仅有外置菜单,也可以两者皆有。当前的g4e内置菜单确实没有什么用处。
作者: 201287zr    时间: 5 天前
2011yaya2007777 发表于 2025-5-28 18:11
某些人的偏爱吧。可以仅有内置菜单,也可以仅有外置菜单,也可以两者皆有。当前的g4e内置菜单确实没有什么 ...

我挺喜欢grub4dos可以随意查找配置菜单的设置,可否让g4e也有这样的功能,不要限定menu.lst只能在/efi/grub中,这样方便在不同环境中配置不同菜单。谢谢大师
作者: 2011yaya2007777    时间: 4 天前
我挺喜欢grub4dos可以随意查找配置菜单的设置

你完全可以在自己的内置菜单里配置呀!
你需要自己配置!菜单放在哪里就配置到哪里。
你觉得配置到这里是最恰当的?
configfile /efi/grub/menu.lst
configfile /grub/menu.lst
configfile /menu.lst

作者: tuice0liu    时间: 3 天前
201287zr 发表于 2025-5-28 17:30
那内置菜单的作用是什么呢?菜单都已固定在/efi/grub下,那似乎内置菜单没起作用是这样理解吧,我测试内 ...

内置菜单的作用,是方便其他引导程序来引导g4e,或者集成到某个系统,不能使用efi目录。
作者: tuice0liu    时间: 3 天前
201287zr 发表于 2025-5-28 16:32
请教yaya大师,G4E可不可以依次查询/efi/grub /grub和/下面的menu.lst,用mkimage -p也只能指定一个路径 ...

路径问题,用mkimage -p . 就行,.代表当前路径,这样就能把g4e的efi放在任意目录了。
作者: 201287zr    时间: 3 天前
2011yaya2007777 发表于 2025-5-29 14:59
你完全可以在自己的内置菜单里配置呀!
你需要自己配置!菜单放在哪里就配置到哪里。
你觉得配置到这里 ...

我在/efi/grub/menu.lst中写入下面的查找语句
#configfile /efi/grub/menu.lst
configfile /grub/menu.lst
configfile /menu.lst
目的是依次查找不同目录下的menu.lst,在虚拟机测试执行configfile /grub/menu.lst后就进入命令行了(因为/grub/不存在),按理应该再执行下一条命令configfile /menu.lst,但实际有问题!我测试了g4d关于上述configfile的功能,都能在没有查询到相应配置文件时,依次跳转下一条命令,那g4e的configfile是不是存在问题或是其他机制原因导致?
作者: 2011yaya2007777    时间: 3 天前
你看看g4d的预置菜单,有关闭错误退出的指令。
作者: 201287zr    时间: 3 天前
2011yaya2007777 发表于 2025-5-30 12:10
你看看g4d的预置菜单,有关闭错误退出的指令。


我的菜单是这样写的,加了errorcheck off也不行,还是会直接进入命令行
title find /grub/menu.lst, /menu.lst
        errorcheck off
        configfile /grub/menu.lst
        configfile /menu.lst
        #find --set-root --ignore-cd /efi/grub/menu.lst && configfile /efi/grub/menu.lst
        find --set-root --ignore-cd /grub/menu.lst && configfile /grub/menu.lst
        find --set-root --ignore-cd /menu.lst && configfile /menu.lst
        errorcheck on
        commandline



作者: 2011yaya2007777    时间: 3 天前
你是pxe 网起?你的服务器各级文件夹里面有dir.txt吗?这个是各级文件夹里面的文件名。
作者: 201287zr    时间: 3 天前
2011yaya2007777 发表于 2025-5-30 12:50
你是pxe 网起?你的服务器各级文件夹里面有dir.txt吗?这个是各级文件夹里面的文件名。

是的,我是用pxe网启测试的,没有dir.txt,查找启动菜单需要这个吗?
作者: 201287zr    时间: 3 天前
本帖最后由 201287zr 于 2025-5-30 13:33 编辑
2011yaya2007777 发表于 2025-5-30 12:50
你是pxe 网起?你的服务器各级文件夹里面有dir.txt吗?这个是各级文件夹里面的文件名。

另外,发现setmenu命令在BIOS和UEFI中的表现不一致,bios G4D二级菜单(指configfile传递的菜单)中setmenu设置显示的字符串与主菜单中的字符串同时显示,而UEFI中只会显示当前菜单setmenu --string的字符串,即会清空上级菜单setmenu显示的字符串。如图

不清楚哪个环境中setmenu的表现是正常的?感觉既然没有手动setmenu --string=来清空字符串,那么configfile的菜单应该还是要继续显示上级菜单中的自定义字符串吧,请yaya大师看看呢。

还发现G4E 的内部变量与G4D是不是不同了,比如我PXE启动想显示ip地址,使用了0x8284和0x8288变量,但UEFI中获取不了了,使用calc *0x8284发现数据为1,G4D获取正常。请教一下UEFI中内部变量问题。


作者: 2011yaya2007777    时间: 3 天前
按理不应该显示原先的菜单内容。uefi模式下是正确的。不显示ip的问题我排查一下。网起没有dir.txt是不能使用查找功能的。
作者: 201287zr    时间: 3 天前
2011yaya2007777 发表于 2025-5-30 13:34
按理不应该显示原先的菜单内容。uefi模式下是正确的。不显示ip的问题我排查一下。网起没有dir.txt是不能使 ...

感谢yaya大师指点,获取硬盘数量是不是变量0x475,UEFI中好像也不行,有没有其它方法可以获取到本机硬盘数量和类型(mbr/GPT以及NTFS EFI分区信息)
作者: 2011yaya2007777    时间: 3 天前
获取硬盘数量是不是变量0x475,UEFI中好像也不行

pxe_yip这几个变量在uefi没有使用。菜单及脚本没有使用他们的地方。仅仅为了显示觉得没有必要。
通过可视化服务器已经可以获得。

通过find或者vol,可以看到硬盘号及分区号。
作者: 201287zr    时间: 3 天前
2011yaya2007777 发表于 2025-5-30 14:34
pxe_yip这几个变量在uefi没有使用。菜单及脚本没有使用他们的地方。仅仅为了显示觉得没有必要。
通过可 ...

我其实是想获取到服务器地址之后,保存到本地,以便客户端启动后链接传输文件等,比较方便,我觉得还是有用的吧




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