无忧启动论坛

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

[求助] GRLDR,偶然发现的问题

[复制链接]
跳转到指定楼层
1#
发表于 2014-8-20 10:12:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
2G的U盘,用FBT1.607.2014.0811强格、制成启动盘,UD扩展分区250M,剩余空间为可见分区(FAT32)。
仅仅加入一个GRLDR文件(0.46a 2014-08-17),没有菜单。所用的都是缺省设置,数据结构自检没错。
用其启动一上网本(单硬盘4个NTFS分区,1主3逻辑)。
启动后在 grub>后输入find命令发现:
grub> find
(hd0)
(ud)
(hd0,0)
(hd0,1)
(hd0,2)
(hd0,3)
(hd1,0)
(hd1,2)
(hd1,3)
(hd1,4)
(hd1,5)
(hd1,6)
grub> _

用 ls 查看发现(hd0)、(ud)、(hd0,0)的内容实际上是一样的,且有提示:Error 1: File name must be either an absoulte pathname or blocklist
用 ls 查看发现(hd0,1)、(hd0,2)、(hd0,3)提示:Error 22: No such partition

再用 ls 查看发现(hd1,0)、(hd1,4)、(hd1,5)、(hd1,6)与(ud)的内容实际上是一样的,且有提示:Error 1: File name must be either an absoulte pathname or blocklist
再用 ls 查看发现(hd1,2)、(hd1,3)提示:Error 22: No such partition

用 geometry (hd0)、geometry (ud)、(hd0,0)、geometry (hd0,3)查看,内容实际上是一样的:
drive 0x80(LBA):C/H/S=246/255/63,Sector Count/Size=3951990/512
Partition num: 0, active, Filesystem type is fat32, partition type 0x0B

用 geometry (hd1,0)、geometry (hd1,2)、geometry (hd1,3)、geometry (hd1,6)查看,内容实际上是一样的:
drive 0x81(LBA):C/H/S=19457/255/63,Sector Count/Size=312576705/512
Partition num: 0, Filesystem type is ntfs, partition type 0x07
Partition num: 4, Filesystem type is ntfs, partition type 0x07
Partition num: 5, Filesystem type is ntfs, partition type 0x07
Partition num: 6, Filesystem type is ntfs, partition type 0x07

换用(0.45c 2014-08-17)的GRLDR文件:
启动后在 grub>后输入find命令发现:
grub> find
(ud)
(hd0,0)
(hd1,0)
(hd1,4)
(hd1,5)
(hd1,6)
grub> _
使用 ls (ud)、ls (hd1,0)后很长时间内只见光标闪动,可以按Ctrl+Alt+Del重启。
如果是进菜单后按"c"键到 grub>,发现光标根本不闪动。

(grldr从chenall.net下载)
2#
发表于 2014-8-20 12:04:42 | 只看该作者
你是否明白 0.4.5 与 0.4.6 两个系列版本的差异?如果你比较清楚,你自己先猜测一下吧,猜测其结果差别的原因在哪里。具体的操作过程,你自己比较清楚,别人只能看你的描述,而对于有些细节你不一定能够给出描述。



回复

使用道具 举报

3#
 楼主| 发表于 2014-8-20 15:23:07 | 只看该作者
很不好意思,我只是一个普通的使用者。就上面发现的情形(也许不能称为“问题”),我的困惑是:

0.46a

一、既然ls后会提示说Error 22: No such partition,为什么还要在find的结果中列出来呢?开发者可能有自己的考虑吧,不揣测了。

二、为什么直接对find出来的某些(hd1,x)进行ls后得到的是与(ud)的内容一样的东西呢?试了一下,先root某某后再ls才可以出正常结果。

0.45c

三、为什么直接对find出来的(ud)(hd0)(hd0,0)(hd1,0)等进行ls后会常时间没反应?试了一下,先root某某后再ls才会有反应且可以出正常结果。

四、刚刚下载了2014-0812的帮助文档,说,用法: ls [DEV] [FILE_OR_DIR] 描述:list file or directory 列表文件或目录。文档还举例道,ls  列出当前设备根目录下的文件和目录。在0.45c中试了,单用 ls 正常,可为什么用 ls (ud) 就没反应了呢?(ud)不是当前设备?没记住?为什么单用 ls 给出的内容却与 (ud) 中的内容一样?

开发者或深研者使用 ls 肯定不会“偏离”设定的使用“条件”,对他们来说是“理所当然”的,但总不应假定一般的使用者会完全按照这设定的“条件”进行操作。

建议:在0.46a中不应显示当前设备的内容作为替代,而应给出操作提示;在0.45c中,不应出现长时间无反应的“假死”现象,同样应给出操作提示。

也许我的情况是孤立的,请勿见笑、责备。作为一个普通的、浅尝辄止的使用者,我知道自己很“孤陋”,之所以贴出来,是因为喜爱G4D。

中餐是美味的,但不应是后厨不干净的结果。
回复

使用道具 举报

4#
发表于 2014-8-20 16:16:26 | 只看该作者
0.46a 在查找分区上有bug,前几天已经反馈了,估计yaya在处理中。
回复

使用道具 举报

5#
 楼主| 发表于 2014-8-20 16:36:08 | 只看该作者
多谢!
回复

使用道具 举报

6#
发表于 2014-8-20 18:11:00 | 只看该作者
@captain_g

您在一楼的报告,没有毛病。我没有责怪您的意思。请不要误会。我真正的意思是说,这问题难以定位,最好是您能够先猜测一下,确定大致的原因。而接下来您在下一个帖子里面确实给出了更详细的描述。非常好。

我会找时间仔细看您的帖子,然后给出自己的答复。
回复

使用道具 举报

7#
发表于 2014-8-21 00:11:47 | 只看该作者
以下就依我的认识能力以及理解能力,谈谈对若干问题的看法。

一、既然ls后会提示说Error 22: No such partition,为什么还要在find的结果中列出来呢?开发者可能有自己的考虑吧,不揣测了。


确实是不该列出,我认为属于 bug 的范畴,应该得到解决。但究竟能不能得到解决,以及何时得到解决,那是不确定的。这依赖于有多少人报告 bug,也依赖于有多少人参与开发以及参与排错。【下同,不再重复这些话。】

二、为什么直接对find出来的某些(hd1,x)进行ls后得到的是与(ud)的内容一样的东西呢?试了一下,先root某某后再ls才可以出正常结果。


同样,这也属于 bug,应该得到解决【同上】。


三、为什么直接对find出来的(ud)(hd0)(hd0,0)(hd1,0)等进行ls后会常时间没反应?试了一下,先root某某后再ls才会有反应且可以出正常结果。


同样,这也属于 bug,应该得到解决【同上】。

四、刚刚下载了2014-0812的帮助文档,说,用法: ls [DEV] [FILE_OR_DIR] 描述:list file or directory 列表文件或目录。文档还举例道,ls  列出当前设备根目录下的文件和目录。在0.45c中试了,单用 ls 正常,可为什么用 ls (ud) 就没反应了呢?(ud)不是当前设备?没记住?为什么单用 ls 给出的内容却与 (ud) 中的内容一样?

开发者或深研者使用 ls 肯定不会“偏离”设定的使用“条件”,对他们来说是“理所当然”的,但总不应假定一般的使用者会完全按照这设定的“条件”进行操作。


你提到的或许属于 bug,正如前面的问题那样。也或许是你自己理解有误。通常一个命令的默认参数是当前设备,这很自然,并不偏离什么。如果偏离了常规,那通常是 bug,应该得到解决【同上】。


建议:在0.46a中不应显示当前设备的内容作为替代,而应给出操作提示;在0.45c中,不应出现长时间无反应的“假死”现象,同样应给出操作提示。


你说的这些都属于 bug,我所认为的处理方法同上。

也许我的情况是孤立的,请勿见笑、责备。作为一个普通的、浅尝辄止的使用者,我知道自己很“孤陋”,之所以贴出来,是因为喜爱G4D。


不管怎么样,开源软件是靠很多人共同开发测试。有毛病不奇怪。如果某个毛病很容易被碰上,那它被解决的概率也很大。反之,如果不容易被碰上,则能够解决它的概率就不太大。


回复

使用道具 举报

8#
 楼主| 发表于 2014-8-21 08:44:05 | 只看该作者
谢谢不点。

只有发现并周知问题才有可能解决问题。
回复

使用道具 举报

9#
发表于 2014-8-23 19:08:01 | 只看该作者
学习了
回复

使用道具 举报

10#
发表于 2014-9-1 16:32:37 | 只看该作者
这里反映的问题,与2014-08-04 4.6a 读取分区不准确是同一问题。
其原因是由于支持分区 ID=00 引起的。
有些软件将分区 ID=00 判定为无效分区项。不知是什么文件系统使用 ID=00,如此特殊。它有多大受众,支持它是否必要?
如果非必要,撤销补丁。如果必要,是否可将3处
if (/* type != PC_SLICE_TYPE_NONE        && */
         ! IS_PC_SLICE_TYPE_BSD (type)
        && ! IS_PC_SLICE_TYPE_EXTENDED (type))       

修正为
if (!(type == PC_SLICE_TYPE_NONE && len == 0)
        && ! IS_PC_SLICE_TYPE_BSD (type)
        && ! IS_PC_SLICE_TYPE_EXTENDED (type))       
回复

使用道具 举报

11#
发表于 2014-9-1 18:03:12 | 只看该作者
Windows 和 Linux 用户,都有使用 00 分区类型的情况,讨论是在英文论坛上。

早在一两年前就已经支持 ID=00 了,只是不完全支持,所以这次就彻底支持了。

0.4.5 没问题,问题出在 0.4.6,这我不熟悉,yaya 你看该怎么解决就怎么解决。

建议在 BIOS 环境以及 MBR、GPT 模式的分区处理上,0.4.6 要保持与 0.4.5 的完全一致,就连代码都要完全一致,不要弄出不同的东西出来,造成不兼容,或者 bug。

如果一致了,就不会有问题出现。即使有问题,也能统一解决,而不是针对 0.4.6 采取特殊的解决方法。

0.4.5 正常,就表示 0.4.6 是不同的。而在这些方面是不该有差别的。

所以,我认为 yaya 应该检查代码,找出不兼容的根源,修复这种不兼容现象。

回复

使用道具 举报

12#
发表于 2014-9-1 20:29:10 | 只看该作者
明白了,0.4.5c 在查找函数里有
  1. if ((start == 0) || (len == 0))
  2.     continue;
复制代码

预先对分区空项做了判断
回复

使用道具 举报

13#
发表于 2014-9-2 10:30:51 | 只看该作者
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-11 17:30

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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