无忧启动论坛

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

[原创] GRUB4DOS for UEFI

    [复制链接]
3091#
 楼主| 发表于 2023-12-3 10:36:34 来自手机 | 只看该作者
我分析了一下老旧模式(bios)的代码,它在map映射了一个光驱后,使int13/4B01探测光驱信息,在这里出现了错误。似乎没有必要探测光驱信息。

点评

grub4dos 在启动时,有探测光盘是否存在的代码。这个探测代码,就依赖 4B01 调用。探测的顺序是,从 DL=FF 向 DL=80 的方向(即,从高到低)进行探测。 如果由于某种原因而被迫禁用 4B01 调用,那么,grub4dos 在  详情 回复 发表于 2023-12-3 11:13
如果 grub4dos 用 map 建立了虚拟光驱,那么,grub4dos 的 int13 handler 会把 4B01 接口弄好,保证此调用能够正常进行,而不是死机。  详情 回复 发表于 2023-12-3 10:53
当光驱不存在时,你就不敢使用 int13 来访问光盘扇区。因为这有可能直接死机。所以,在访问光驱之前,先保证光盘 bios 接口是可用的,这是有必要的。 另一方面,如果有证据表明 4B01 调用在某主板环境必然产生死  详情 回复 发表于 2023-12-3 10:48
回复

使用道具 举报

3092#
发表于 2023-12-3 10:48:56 | 只看该作者
本帖最后由 不点 于 2023-12-3 10:56 编辑
2011yaya2007777 发表于 2023-12-3 10:36
我分析了一下老旧模式(bios)的代码,它在map映射了一个光驱后,使int13/4B01探测光驱信息,在这里出现了 ...

当光驱不存在时,你就不敢使用 int13 来访问光盘扇区。因为这有可能直接死机。所以,在访问光驱之前,先保证光盘 bios 接口是可用的,这是有必要的。

另一方面,如果有证据表明 4B01 调用在某主板环境必然产生死机,那就说明 4B01 调用也被用于恶意封杀的目的了。

问题是,没有这种证据。 前面 yjd 报告说,直接使用 grub4dos 并未造成死机。他判断,是 udm 造成的问题。所以说,到目前为止,还不存在 4B01 会产生死机的有效证据。因此,我们应当继续使用 4B01 调用。

回复

使用道具 举报

3093#
发表于 2023-12-3 10:53:10 | 只看该作者
2011yaya2007777 发表于 2023-12-3 10:36
我分析了一下老旧模式(bios)的代码,它在map映射了一个光驱后,使int13/4B01探测光驱信息,在这里出现了 ...

如果 grub4dos 用 map 建立了虚拟光驱,那么,grub4dos 的 int13 handler 会把 4B01 接口弄好,保证此调用能够正常进行,而不是死机。
回复

使用道具 举报

3094#
发表于 2023-12-3 11:13:52 | 只看该作者
2011yaya2007777 发表于 2023-12-3 10:36
我分析了一下老旧模式(bios)的代码,它在map映射了一个光驱后,使int13/4B01探测光驱信息,在这里出现了 ...

grub4dos 在启动时,有探测光盘是否存在的代码。这个探测代码,就依赖 4B01 调用。探测的顺序是,从 DL=FF 向 DL=80 的方向(即,从高到低)进行探测。

如果由于某种原因而被迫禁用 4B01 调用,那么,grub4dos 在启动时,就需要屏蔽掉探测光盘的代码。

注意,yjd 的报告说,旧版 grub4dos 启动正常,这说明,4B01 调用没有造成任何问题。因为旧版一直都是使用 4B01 调用的,从未更改过。
回复

使用道具 举报

3095#
发表于 2023-12-3 11:24:42 | 只看该作者
2011yaya2007777 发表于 2023-12-3 10:29
不点分析的对,两种可能皆有。问题是常规启动正常,而udf启动失败,我怀疑他在不同启动模式切换,很可能使 ...

yjd 使用了 udm,而 udm 是如何调用 grub4dos 的,这一点,除非开发者本人,否则,谁也说不清。当然了,如果是开源的,那就能够说清楚了。如果不是开源的,那是说不清的。第三方软件是在什么样的环境下调用的 grub4dos,这很关键。前面我已经说了,不再重复。假如他在调用 grub4dos 之前,做了很多 “工作”,出现了 bug,或者碰触了 BIOS 的魔鬼 “机关”,都会产生问题。具体是哪种情况,我们作为局外人,很难猜测。我认为,原则上讲,grub4dos 的开发者,不应该为任何一个闭源软件的使用效果提供技术支持。未知因素太多,无法猜测产生问题的原因,是不提供支持的理由。

点评

yjd
到这里我就没法继续反馈了。得udm开发者才能参与了毕竟不是开源的。不过看好像也很久没更新udm了。  详情 回复 发表于 2023-12-4 00:28
回复

使用道具 举报

3096#
 楼主| 发表于 2023-12-3 11:32:14 来自手机 | 只看该作者
3070#有个截图,看看便知。

点评

图片中显示,测试的是从磁盘启动,而不是从光盘启动。map 命令产生了虚拟光驱,此时,int13 handler 会自动把 DL=FF 的 int13/4B01 接口弄好,根本就不应该死机。 难道 grub4dos 新版的 4B01 没有挂上?这可是 bu  详情 回复 发表于 2023-12-3 11:49
回复

使用道具 举报

3097#
 楼主| 发表于 2023-12-3 11:35:04 来自手机 | 只看该作者
yjd是不是每次启动失败都卡在此处,不得而知。

点评

yjd
每次都一样,你们自己按我说的,用模板格式化U盘也能复现问题。  发表于 2023-12-4 00:25
回复

使用道具 举报

3098#
发表于 2023-12-3 11:49:34 | 只看该作者
2011yaya2007777 发表于 2023-12-3 11:32
3070#有个截图,看看便知。

图片中显示,测试的是从磁盘启动,而不是从光盘启动。map 命令产生了虚拟光驱,此时,int13 handler 会自动把 DL=FF 的 int13/4B01 接口弄好,根本就不应该死机。

难道 grub4dos 新版的 4B01 没有挂上?这可是 bug 了。如果 4B01 没有挂上,那么,此时去调用 DL=FF 的 4B01 功能,就等于调用 ROM BIOS,此时当然会死机,因为 DL=FF 并非 ROM BIOS 提供的真实光盘号码,而是 int13 handler 虚拟出来的光盘号码。
回复

使用道具 举报

3099#
发表于 2023-12-3 12:03:50 | 只看该作者
loongson 在这里报告了新版的问题,是不是同一个问题?

grub4dos 2023-6-23及后续各版Linux图形内核模块加载异常
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=437934

他说,6月15日的版本正常。

yaya 没有回复这个帖子,可能是因为太忙,未看到这个帖子。


回复

使用道具 举报

3100#
 楼主| 发表于 2023-12-3 12:23:18 | 只看该作者
不知道yjd在菜单使用
map --hook
没有。

点评

yjd
有的,  发表于 2023-12-4 00:26
如果不存在 map --hook,在执行 boot 命令时,会自动添加一条 map --hook 命令。所以,这不是个问题。 在执行 boot 命令时,会检查 drive map table,如果发现 drive map table 是 “非空” 的,也即,存在映射项  详情 回复 发表于 2023-12-3 13:25
回复

使用道具 举报

3101#
 楼主| 发表于 2023-12-3 12:26:50 | 只看该作者
不明白loongson反馈的什么意思。既无菜单,也无截图。

grldr 还能
ls /dev  ?

点评

我这么理解:loongson 大概是说,采用新版 grub4dos 来加载某个 img 或者 iso 之后(或者仅仅是启动 Linux 内核之后),在 Linux 下无法找到一些本来应该有的文件。有可能是正常加载了 kernel,但 initrd 未能正  详情 回复 发表于 2023-12-3 13:36
回复

使用道具 举报

3102#
发表于 2023-12-3 12:45:21 | 只看该作者
感谢分享
回复

使用道具 举报

3103#
发表于 2023-12-3 13:25:17 | 只看该作者
2011yaya2007777 发表于 2023-12-3 12:23
不知道yjd在菜单使用
map --hook
没有。

如果不存在 map --hook,在执行 boot 命令时,会自动添加一条 map --hook 命令。所以,这不是个问题。

在执行 boot 命令时,会检查 drive map table,如果发现 drive map table 是 “非空” 的,也即,存在映射项目,则会自动执行 hook 的动作。
回复

使用道具 举报

3104#
发表于 2023-12-3 13:36:49 | 只看该作者
2011yaya2007777 发表于 2023-12-3 12:26
不明白loongson反馈的什么意思。既无菜单,也无截图。

grldr 还能
内核模块没正常加载,dev下没有生成正常的设备文件。进入文本界面后,ls /dev/dri,不存在,手工加载,提示no such devive。
6-15版正常的。
AMD R7卡,统信UOS(内核5.10)及自己的BLFS(内核6.5.7)均如此。
                       


我这么理解:loongson 大概是说,采用新版 grub4dos 来加载某个 img 或者 iso 之后(或者仅仅是启动 Linux 内核之后),在 Linux 下无法找到一些本来应该有的文件。有可能是正常加载了 kernel,但 initrd 未能正常加载,或者是出现了某些差错。

loongson 可能觉得没有必要提供截图之类的,因为故障的表现,是在 Linux 接管控制以后,而不是在 grub4dos 的操作阶段。就是说,这个故障很隐蔽,他判断是 grub4dos 新版造成的故障。而且他给出了正常版本和不正常版本的发布日期。
回复

使用道具 举报

3105#
 楼主| 发表于 2023-12-3 14:20:21 | 只看该作者
我这么理解:loongson 大概是

明白了,他是加载了linux内核,但是没有加载成功。
linux本来就难加载,一堆参数,差一个不行,错一个也不行。
现在的情况不是都加载失败。因此不提供详细信息,不能复现问题的,无法解决。懒得回答。

点评

报告不详,沟通不畅。——这 8 个字,反映了开源软件开发的一个现状。 报告者自己心里明白问题在哪里,但是,却不能让别人明白,尤其是不能让开发者明白。别人必须靠 “猜” 才能知道大概是怎样的。而且,猜是猜  详情 回复 发表于 2023-12-4 07:21
回复

使用道具 举报

3106#
发表于 2023-12-4 00:28:23 | 只看该作者
不点 发表于 2023-12-3 11:24
yjd 使用了 udm,而 udm 是如何调用 grub4dos 的,这一点,除非开发者本人,否则,谁也说不清。当然了, ...

到这里我就没法继续反馈了。得udm开发者才能参与了毕竟不是开源的。不过看好像也很久没更新udm了。

点评

有一点非常关键。通俗来讲,那就是:究竟是谁的锅? 这个必须判断清楚,不能含糊。 如果是 grub4dos 的 bug,那我们必须予以解决。 如果同样的 map .... iso 命令序列,在同一台电脑上,离开了 udm 环境就  详情 回复 发表于 2023-12-4 06:56
回复

使用道具 举报

3107#
发表于 2023-12-4 06:56:31 | 只看该作者
yjd 发表于 2023-12-4 00:28
到这里我就没法继续反馈了。得udm开发者才能参与了毕竟不是开源的。不过看好像也很久没更新udm了。

有一点非常关键。通俗来讲,那就是:究竟是谁的锅?

这个必须判断清楚,不能含糊。

如果是 grub4dos 的 bug,那我们必须予以解决。

如果同样的 map .... iso 命令序列,在同一台电脑上,离开了 udm 环境就能够正常工作,不出问题,那么,这就不像是 grub4dos 的 bug 了。您只要能确认这一点,我觉得这锅就不是 grub4dos 的了。

不知您能否给出确定性的判断?

假如 grub4dos 本身真有问题,那还真需要解决。这不能含糊。

点评

yjd
我在两台电脑上测试都复现了同样问题卡住问题,替换了旧版或者采用直接mbr引导排除udm,启动U盘grldr是正常。 这是我测试结果: 1,udm+旧版grldr没问题 2,udm+新版grldr有问题 3,mbr+grldr新旧版没问题 我  详情 回复 发表于 2023-12-4 09:09
回复

使用道具 举报

3108#
发表于 2023-12-4 07:21:27 | 只看该作者
2011yaya2007777 发表于 2023-12-3 14:20
明白了,他是加载了linux内核,但是没有加载成功。
linux本来就难加载,一堆参数,差一个不行,错一个也 ...

报告不详,沟通不畅。——这 8 个字,反映了开源软件开发的一个现状。

报告者自己心里明白问题在哪里,但是,却不能让别人明白,尤其是不能让开发者明白。别人必须靠 “猜” 才能知道大概是怎样的。而且,猜是猜不透的,有可能猜错了。

所以,开发者很累。好在我现在摆脱了,技术上不再投入了。但在技术之外,在哲学上,也许我还可以做点什么。我站在局外人的角度,一身轻松,毫无压力,毫无顾忌。报告者应该明白,“沟通不畅” 的效果真的不怎么样。应该多费一点笔墨,把报告写好。
回复

使用道具 举报

3109#
发表于 2023-12-4 08:11:48 | 只看该作者
最近看到有不少 “疑似” bug 报告。其实都是关于 grub4dos for legacy BIOS 的。

不管是不是真的 bug,我谈一点想法。

万一是真的 bug 呢?而且,假如从开发者的角度,没发现有什么本质的改动,却凭空产生了 bug。这种情况,有两种原因:

1、gcc 的锅。
2、grldr 体积太太,需要减小体积,减少内部冲突发生的可能性。

假如开发者能够确定不是 gcc 的问题,那就只剩下 “grldr 体积过大” 这一条了。

如何减小 grldr 体积?

眼下最可行、最方便的办法,就是把 gfxmenu(message)精减掉。

在 vbe 上,很多开发者投入了精力,尤其是 yaya。如果用户不使用 vbe,那是 “亏了”,开发者的投入就相当于 “打水漂” 了。gfxmenu 本质上也是使用 vbe,只不过它是个 “万金油”,能用于很多启动软件中。但gfxmenu 的缺点是,跟任何软件也都是 “两张皮”,不能做到 “无缝连接”。所以,裁剪掉 gfxmenu,并无任何不妥。

用户如果确实需要 gfxmenu,那可以选择一个老版本,永不更新即可。

用户是自由的,开发者也是自由的。开发者并非有意 “带节奏”、牵着用户鼻子走。但是,万般无奈,开发者从技术角度权衡以后,觉得裁剪掉 gfxmenu 能够让体积变小,解决内存冲突问题。这是合乎逻辑、合乎情理的。

除了 gfxmenu 以外,也可以研究还有没有什么代码能够被精减掉。
回复

使用道具 举报

3110#
发表于 2023-12-4 09:09:45 | 只看该作者
不点 发表于 2023-12-4 06:56
有一点非常关键。通俗来讲,那就是:究竟是谁的锅?

这个必须判断清楚,不能含糊。

我在两台电脑上测试都复现了同样问题卡住问题,替换了旧版或者采用直接mbr引导排除udm,启动U盘grldr是正常。
这是我测试结果:
1,udm+旧版grldr没问题
2,udm+新版grldr有问题
3,mbr+grldr新旧版没问题

我不是开发我也不确定谁的问题

回到我前面说的,你们如果有空余的U盘,可以按我 3070# 说明,用udm工具格式化U盘做一个可以复现问题。
udm最新下载:https://wwi.lanzoui.com/iIEW9096h8gh

点评

谢谢您的辛苦!本人不再参与代码的编写、调试,也不会去做测试之类的工作。甚至,本人也不去查看代码。 本人只提供思路、想法,以便别人可以参考。本人的思路,别人是否赞同、采纳,本人是不知道的。 我们每个  详情 回复 发表于 2023-12-4 10:58
回复

使用道具 举报

3111#
发表于 2023-12-4 10:58:11 | 只看该作者
yjd 发表于 2023-12-4 09:09
我在两台电脑上测试都复现了同样问题卡住问题,替换了旧版或者采用直接mbr引导排除udm,启动U盘grldr是正 ...

谢谢您的辛苦!本人不再参与代码的编写、调试,也不会去做测试之类的工作。甚至,本人也不去查看代码。

本人只提供思路、想法,以便别人可以参考。本人的思路,别人是否赞同、采纳,本人是不知道的。

我们每个人都是自由的,都有权做自己喜欢的事情,也有权拒绝去做自己不喜欢的事情。在这一点上,大家都是公平的。

下面再谈一点想法,供各位参考。

看到您测试的 3 个方面的结果。我就好奇,也许可以进一步测试:

4,ud + 新版 grldr (此处 ud 是 bean 的 ud 系统,即 fbinst 创建的)。

看看有无同样的故障出现?

如果同样的故障出现,那说明新版 grldr 已经出问题了,已经不兼容 bean 的 ud 格式了。

好的,这就是本人的思路。本人的思路仅仅是思路,任何人都可以借鉴、采纳,也可以选择忽略。每个人都是自由的。

点评

yjd
FbinstTool_1.7 +最新grlder 测试正常  详情 回复 发表于 2023-12-4 11:42
回复

使用道具 举报

3112#
发表于 2023-12-4 11:42:10 | 只看该作者
不点 发表于 2023-12-4 10:58
谢谢您的辛苦!本人不再参与代码的编写、调试,也不会去做测试之类的工作。甚至,本人也不去查看代码。
...

FbinstTool_1.7 +最新grlder 测试正常

点评

辛苦了!我想确认一下,您说的 “正常”,是不是采用了相同的 map ......iso (0xff) 命令?如果是的,那就可以认定 ud 的支持确实没问题。 抱歉,本人不经常使用 ud,也没用过 udm,所以,都不太了解。  详情 回复 发表于 2023-12-4 14:14
回复

使用道具 举报

3113#
 楼主| 发表于 2023-12-4 11:52:55 来自手机 | 只看该作者
我下载了udm,查看文件没有grldr,但是设置里面有,不知怎么使用。

点评

yjd
我看ldr目录还grldr文件,做了新版替换, 菜单里有个更新grldr功能{测试功能好像失效},但是这些我也从来没用过。今天尝试更新替换,测试也没启作用。  详情 回复 发表于 2023-12-5 17:24
照您这么说,我猜,udm 仅仅使用了 grldr 里面的 stage2。猜测可能是把 stage2 复制到某个扇区序列上。如果是这样使用的,那我是反对的。grldr 应该完整使用,而不是复制一部分扇区(stage2)来使用。我觉得,只要开  详情 回复 发表于 2023-12-4 14:08
回复

使用道具 举报

3114#
发表于 2023-12-4 14:08:11 | 只看该作者
2011yaya2007777 发表于 2023-12-4 11:52
我下载了udm,查看文件没有grldr,但是设置里面有,不知怎么使用。

照您这么说,我猜,udm 仅仅使用了 grldr 里面的 stage2。猜测可能是把 stage2 复制到某个扇区序列上。如果是这样使用的,那我是反对的。grldr 应该完整使用,而不是复制一部分扇区(stage2)来使用。我觉得,只要开源的 fbinst (ud)的支持没问题,那就算是没问题。闭源的软件,不应是我们考虑的重点,尤其是,当 legacy bios 已经接近死亡的时候,谁还会有那么大的精力、耐心去多支持一个软件环境?
回复

使用道具 举报

3115#
发表于 2023-12-4 14:14:16 | 只看该作者
yjd 发表于 2023-12-4 11:42
FbinstTool_1.7 +最新grlder 测试正常

辛苦了!我想确认一下,您说的 “正常”,是不是采用了相同的 map ......iso (0xff) 命令?如果是的,那就可以认定 ud 的支持确实没问题。

抱歉,本人不经常使用 ud,也没用过 udm,所以,都不太了解。

点评

yjd
就是下的 3070# 文件测试。一样  发表于 2023-12-4 14:29
回复

使用道具 举报

3116#
发表于 2023-12-4 16:26:43 | 只看该作者
本帖最后由 2010XwX 于 2023-12-4 16:28 编辑

看了两位大师的讨论,我为你们的精益求精的精神所感动!我不懂计算机语言,仅是一个使用者而已。类似的新旧版本 grub4dos 的使用不同,我也碰到过。这里是 udm,我遇到的是 grubfm 。早期 grub4dos 下,使用
grubfm 启动老毛桃的 WinXP.PE 一直很正常,后来升级了 grub4dos,用 grubfm 启动老毛桃的 WinXP.PE 就不正常了(加载不上工具软件)。后来经 Ksafei 大师升级了 grubfm 内部相关的 grub4dos 启动文件,就恢复正常了。后来 grub4dos 又升级了,又不行了,Ksafei 大师又帮助升级了一次 grubfm,现在用最新版的 g4d一直使用正常。看来在 grub4dos 平台上,不同版本的 g4d,其相应的组件也要有相应的匹配(包括 0PE 也是如此)。
回复

使用道具 举报

3117#
 楼主| 发表于 2023-12-4 16:51:52 来自手机 | 只看该作者
好像前半年还升级了一次grubfm,就是替换了其中的grub.exe。

点评

是的,升级过2次,一次是 g4d 升级到 2023.03.29 版,grubfm 升级一次,另一次是 2023.06.23 版。 相应的还有 5大的 SISO 组件,g4d 自己改过一次,5大为适应 g4d 升级,5大本人也升级过一次。现在在最新版 grub4  详情 回复 发表于 2023-12-4 18:02
回复

使用道具 举报

3118#
发表于 2023-12-4 18:02:04 | 只看该作者
本帖最后由 2010XwX 于 2023-12-4 18:20 编辑
2011yaya2007777 发表于 2023-12-4 16:51
好像前半年还升级了一次grubfm,就是替换了其中的grub.exe。

是的,升级过2次,一次是 g4d 升级到 2023.03.29 版,grubfm 升级一次,另一次是 2023.06.23 版(注意:有出问题也在这个节点)。

相应的还有 5大的 SISO 组件,g4d 自己改过一次,5大为适应 g4d 升级,5大本人也升级过一次。现在在最新版 grub4dos 下使用都没问题。
谢谢大师们的努力!

点评

请问最新的grubfm在哪下载?谢谢!  详情 回复 发表于 2024-2-7 19:01
回复

使用道具 举报

3119#
发表于 2023-12-5 12:19:12 | 只看该作者
for uefi版本的没有CHM教程,不知道如何入手啊
回复

使用道具 举报

3120#
发表于 2023-12-5 17:21:37 | 只看该作者
根据 3121# 案例 ,做了测试:
1,替换 NTBOOT-2017-04-02.iso 里面的引导文件和根文件为同样最新grldr,测试还是卡住。
2,替换udm目录ldr下的grub.exe为新版也一样卡住。 //实际udm在创建时有没有载入这个新文件我也不清楚。


点评

udm 我没有用过。NTBOOT 可以下载 5大的 2022-11-11 版。有两种形式,一个是 ISO 版,一个是单文件版。我使用的是单文件版。一个用来直接启动 Ventoy.vhd(Ventoy 虚拟硬盘),第二作为启动管理器来用,没出过什么问  详情 回复 发表于 2023-12-5 18:45
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-7-19 13:05

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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