无忧启动论坛

标题: 关于新版本中 configfile (md)4+8 问题【已解决】 [打印本页]

作者: 车丁    时间: 前天 10:59
标题: 关于新版本中 configfile (md)4+8 问题【已解决】
本帖最后由 车丁 于 2025-3-14 11:49 编辑

在U盘启动中grldr,原使用的是0.4.6a-2020-02-29,加载:command /boot/boot/F6IMG /boot/SRS
及configfile (md)4+8。是返回原菜单界面。

前段时间换了0.4.6a-2024-02-26,加载:command /boot/boot/F6IMG /boot/SRS 及 configfile (md)4+8。直接进入命令行状态,这是什么问题?
后来尝试了2022年、2023年几个版本都是无法返回原菜单而直接进入命令行。只有原来2020年的版本能返回原菜单。
——————————————————————————————————————————————————————————————————————

关于新版 configfile (md)4+8 不能返回原菜单问题搞清楚了,是本人的的问题。
我习惯把menu.lst放在boot目录,但内置的菜单没有这个路径,我就用GRLDR_Edit_v5.0.3.exe进行编辑,但这个软件自动把内置菜单进行压缩了,我没注意,还是用configfile (md)4+8,导致无法识别。现我改用configfile (md)0x880+0x200 后,已经能够返回原菜单了。
只是要加载SRS目录内的驱动,只能使用grub4dos-0.4.6a-2023-03-29或之前的版本。后面的版本无法加载该目录内的驱动。


作者: hilsonma    时间: 前天 11:23
我刚试了 GRUB4DOS 0.4.6a 2024-02-26
configfile (md)4+8 是返回原菜单
作者: l191128    时间: 前天 11:23
感谢分享
作者: 车丁    时间: 前天 11:29


作者: 车丁    时间: 前天 11:31
我用的是联想电脑启天M4500
作者: 车丁    时间: 前天 11:45
hilsonma 发表于 2025-3-12 11:23
我刚试了 GRUB4DOS 0.4.6a 2024-02-26
configfile (md)4+8 是返回原菜单

是否旧版与新版的引导文件不同?
作者: 2011yaya2007777    时间: 前天 12:14
本帖最后由 2011yaya2007777 于 2025-3-12 12:16 编辑

应当是这样子吧
command /boot/boot/F6IMG
command /boot/SRS
configfile (md)4+8
如果还是不行,估计是内存0x800位置被污染了。
试一试
configfile /boot/grub/menu.lst

作者: 车丁    时间: 前天 13:32
本帖最后由 车丁 于 2025-3-12 14:36 编辑
2011yaya2007777 发表于 2025-3-12 12:14
应当是这样子吧
command /boot/boot/F6IMG
command /boot/SRS

试了不行,如果按configfile /boot/grub/menu.lst,等于没有加载SRS。
我只是很奇怪,旧版的没有问题,新版的反而不行。
分别用旧版和新版试了configfile /boot/grub/menu.lst,发现旧版能加载SRS,而新版的不能加载SRS。

作者: 2011yaya2007777    时间: 前天 17:17
如果你有时间的话,定位一下是哪个具体的版本开始出现的问题。
作者: ksafei    时间: 前天 17:53
2011yaya2007777 发表于 2025-3-12 17:17
如果你有时间的话,定位一下是哪个具体的版本开始出现的问题。

我使用的是SRSF6,记录能正常使用的最后版本是20230504(测试版),后续1-2个版本测试过不行就保留了这版,再后来手头没有传统BIOS机了,也就再没测试过
作者: 86933924    时间: 前天 20:26
感谢分享!
作者: 2011yaya2007777    时间: 昨天 08:42
我使用的是SRSF6,记录能正常使用的最后版本是20230504(测试版)

我看了一下,可能是由于启用高版本gcc11编译引起的,暂时无解。
作者: wintoflash    时间: 昨天 10:23
2011yaya2007777 发表于 2025-3-13 08:42
我看了一下,可能是由于启用高版本gcc11编译引起的,暂时无解。

目前github上发布的是用gcc-4.8编译的。
作者: 2011yaya2007777    时间: 昨天 11:13
目前github上发布的是用gcc-4.8编译的。

grub4dos-0.4.6a-2023-06-09的补丁,引起编译时ipxegrldr消失。
可能当时是为了使用高版本gcc编译吧。
我不擅长编译。如果在官网测试的话,不停地发布无用版本,有点可笑。
请你帮忙看看如何解决。
作者: 2011yaya2007777    时间: 昨天 13:54
算了,不用费事管他了。直接使用ipxe加载grldr吧。
作者: wintoflash    时间: 昨天 19:08
2011yaya2007777 发表于 2025-3-13 11:13
grub4dos-0.4.6a-2023-06-09的补丁,引起编译时ipxegrldr消失。
可能当时是为了使用高版本gcc编译吧。
...

2023-03-29 到 2023-06-09 之间,除了改动github actions配置之外只有这两个commit
  1. https://github.com/chenall/grub4dos/commit/8c4bc2dacacf72ff86babd26d77e7b7d5faa6295
  2. support build with gcc newer than 4.8
复制代码

我看了下,这个改动对gcc<=4.8不会有影响
  1. https://github.com/chenall/grub4dos/commit/48b2bfb8ec6858aa1d19d9257f8fb4f5b7e00764
  2. 使用gcc-11高版本编译
复制代码

这里面对devread的函数进行了修改,没看懂是什么意思。
  1. #if 0   //太旧版本不再支持了  2023-05-24
  2.    if (rw_flag != 0x900ddeed && rw_flag != 0xedde0d90 && rw_flag != GRUB_LISTBLK)
  3.    {//for old devread with 32-bit byte_offset compatibility.
  4.      rw_flag = *(unsigned long*)(&write - 1);
  5.      if (rw_flag != 0x900ddeed && rw_flag != 0xedde0d90)
  6.        return !(errnum = ERR_FUNC_CALL);
  7.      buf = *(unsigned long long*)(&write - 3);
  8.      byte_len = *(unsigned long long*)(&write - 5);
  9.      byte_offset = (unsigned long)byte_offset;
  10.    }
  11. #endif
复制代码

其他改动似乎没什么影响。

作者: Apollo9996    时间: 昨天 19:24

感谢分享
作者: 2011yaya2007777    时间: 昨天 20:15
据chenall讲,是为了兼容老旧版本,不影响现在的版本,我觉得可以删除。ipxegrldr是由ipxe、grldr及配置菜单合成的。可以放一个新的ipxe,编译时合成一下,也是个办法。是否处理,请你定夺。
作者: 车丁    时间: 2 小时前
本帖最后由 车丁 于 2025-3-14 11:09 编辑
2011yaya2007777 发表于 2025-3-12 17:17
如果你有时间的话,定位一下是哪个具体的版本开始出现的问题。

使用configfile /boot/menu.lst 情况下,只有grub4dos-0.4.6a-2023-03-29版本及之前的可以正确加载SRS目录内的驱动,grub4dos-0.4.6a-2023-06-09版本及之后的无法加载,提示错误。


作者: 2011yaya2007777    时间: 1 小时前
由于改变了编译环境




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