无忧启动论坛

 找回密码
 注册
搜索
WEPE笔记本电脑手机维修小包 IT发烧友的必备工具最纯净的「微PE装机优盘」UEPON大师作品系统gho:最纯净好用系统下载站
楼主: 不点

grub4dos 在 GPT 盘上有 bug

[复制链接]
 楼主| 发表于 2019-6-26 04:29:49 | 显示全部楼层
vol 命令输出,第三张图片

vol 命令输出,第三张图片

vol 命令输出,第三张图片
回复

使用道具 举报

 楼主| 发表于 2019-6-26 04:35:50 | 显示全部楼层
vol 命令输出,第四张图片

这张应该是死机时的图片了。



vol 命令输出,第四张图片

vol 命令输出,第四张图片
回复

使用道具 举报

 楼主| 发表于 2019-6-26 05:35:21 | 显示全部楼层
本帖最后由 不点 于 2019-6-26 06:57 编辑

从图片可以看到,vol 命令先查找软盘,从软盘 0 一直查到软盘 A。这是一个错误。

看 vol 执行过程中的这段代码:
  /* Search in hard disks first, since floppies are slow */
        for (drive = 0; drive <= 0xff; drive++)

在注释中说,先查找硬盘,但实际的代码,却是先查找软盘。

第二个错误是,当启动盘是 (hd0) 而不是 (fd0) 的时候(这也正是报告者的实际情况),grub4dos 会在 bios 数据区中设定软盘个数为 0, 有效屏蔽掉软盘操作。但 vol 和 uuid 命令不管软盘个数的设置,直接使用软盘 0 ~ 10。

第三个错误是,bios 的软盘个数不可能超过 4 个,而 uuid 和 vol 命令使用了 11 个软盘(软盘0 ~软盘10,也就是图片中显示的软盘 0 ~ A,十六进制)。

所查找的这 11 个软盘,正好与 uuid 和 vol 中的代码是吻合的:

        if ((drive > 10 && drive < 0x80) || (drive > (*((char *)0x475) + 0x80) && drive < 0x9f))
                        continue;

可能还有其它错误。

11 个软盘查找结束后,该去查找硬盘了。然而此时却死机了。就不知道,究竟是访问硬盘时死机了呢,还是在没开始访问硬盘之前就已经死机了。

这个 BIOS 确实在误导我们。它没有那么多软盘,却让那么多软盘的 EBIOS 接口返回成功。

而且,所有的软盘,其扇区 0 都是可读的,而且,能够从其扇区 0 计算出 H=255, S=63。怀疑这全都是 USB 硬盘的数据。就是说,这个 BIOS 让所有的软盘的扇区 0 的数据,都取自 USB 硬盘的扇区 0。

此时估计一下,死机的原因。

当 grub4dos 去访问不存在的那些软盘的时候,BIOS 本身可能发生了错乱(或者是 BIOS 故意自杀),导致此后在访问硬盘时死机。这个可能性较大。当然,死机还可能是别的原因。


补充:

刚刚看了 0.4.5c 里面的 uuid 命令,是正确的,不存在上述问题。

回复

使用道具 举报

 楼主| 发表于 2019-6-27 07:02:06 | 显示全部楼层
最新进展——

报告者不耐烦了,他表示不想继续提供报告了,他说他已经提供了足够的信息。但他并没有充分地回应大家的要求,他是一种敷衍了事的态度。针对他的表白,我也给出了同样的表示。我说,如果你放弃,我也放弃,就当成不曾发生过这些 issues/bugs/reports。

我原打算在 wuyou 和 reboot.pro 之间当个翻译(传话筒),方便开发者和 bug 报告者互相交流、对话。现在不需要了。我可以把节省下来的时间用在别的方面了。

回复

使用道具 举报

发表于 2019-6-27 07:39:08 来自手机 | 显示全部楼层
已经对vol做了些改进,正在测试中。

点评

vol 的毛病只是一个小毛病,不影响大局。真正的问题是,grub4dos 无法访问那个 4T 大硬盘上 GPT 里面的分区中的文件。yaya 若有时间,可以去那里看看。如果能解决问题,当然是最理想的了。  详情 回复 发表于 2019-6-27 08:43
回复

使用道具 举报

 楼主| 发表于 2019-6-27 08:43:16 | 显示全部楼层
2011yaya2007777 发表于 2019-6-27 07:39
已经对vol做了些改进,正在测试中。

vol  的毛病只是一个小毛病,不影响大局。真正的问题是,grub4dos 无法访问那个 4T 大硬盘上 GPT 里面的分区中的文件。yaya 若有时间,可以去那里看看。如果能解决问题,当然是最理想的了。
回复

使用道具 举报

发表于 2019-6-27 09:01:16 来自手机 | 显示全部楼层
我看了,但是无法发言。建议他把vhd放到第一分区,如果能找到,就肯定是读2T扇区的问题。现在虽然可以读64位,但是不少函数任然使用32位读。

点评

我暂时抽不处时间弄这个事了。  详情 回复 发表于 2019-6-27 09:17
回复

使用道具 举报

 楼主| 发表于 2019-6-27 09:17:36 | 显示全部楼层
2011yaya2007777 发表于 2019-6-27 09:01
我看了,但是无法发言。建议他把vhd放到第一分区,如果能找到,就肯定是读2T扇区的问题。现在虽然可以读64 ...

我暂时抽不处时间弄这个事了。
回复

使用道具 举报

发表于 2019-6-27 14:56:40 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2019-6-27 14:59 编辑

         关于grub4dos访问GPT分区的情况,在一个网友的电脑上似乎遇到过,他发来了截图。但我不确定是什么原因,另外由于是网友的电脑,操作系统没有启动,grub4dos没法远程,操作不方便,所以我也无法准确地汇报和反馈问题。大概的情况是,vdf所在的分区是GPT分区,vdf放在磁盘靠后面的扇区可能vdf无法被找到,会出现我的电脑里面能够看到vdf存在,但是引导的时候find --set-root xxxx.vdf提示“File not found”的问题,grub4dos版本是2019-03-25,最后似乎是把vdf放在MBR硬盘上解决问题,记不清了。
        反馈这些问题需要一定的操作能力才行,不是自己的电脑很难反馈,因为需要较多测试来定位问题。
回复

使用道具 举报

发表于 2019-11-9 12:07:23 | 显示全部楼层
真的好希望Grub4dos能够移植到UEFI+GPT模式下,真的很难找到一个能与grub4dos匹敌的启动管理器,为了方便使用grub4dos,我把所有使用UEFI启动的新机硬盘都改成MBR模式,然后安装grub4dos,在我看来,一个没有grub4dos的硬盘是无法使用的。

点评

要使用EFI的话, 我倒是觉得可以研究一下GRUB2 然后想办法把一些GRUB4DOS特有的功能移稙过去. 要完全移稙一是比较麻烦,二是目前没有人做这个事情. 我还没有使用过GRUB2,也不知目前GRUB2的具体情况(有大  详情 回复 发表于 2019-11-13 13:20
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2019-12-10 22:31

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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