无忧启动论坛

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

√提供一个pe测试最新grub4dos-0.4.5c-2012-06-08(测试完毕)

[复制链接]
1#
发表于 2012-6-9 21:01:02 | 显示全部楼层
这与 PXE 无关吧?

那么,需要重新确定,是否由于磁盘缓冲区增大引起的,即,确定造成问题的第一个版本。

USB 支持 LBA 吗?用 geometry 命令显示出 U 盘的 CHS 参数。

对于硬盘,有相同的问题出现吗?
回复

使用道具 举报

2#
发表于 2012-6-11 10:22:43 | 显示全部楼层

回复 #45 fxq 的帖子

看不懂这个报告。

这意思是不是说,3月26日的版本也不行?

@pseudo

感觉这个问题应该简化,不要把其它因素混杂在其中。现在只需要验证 GRLDR 是否能够正常读取文件系统中的文件便可。

如果由于磁盘缓冲区的增大而导致某些 BIOS 不能适应,那么,GRLDR 就无法访问文件系统,比如,cat 命令就无法正常显示文件内容。

所以,需要测试 grldr 基本的参数。用 geometry 、ls、root、cat 等命令来测试,没必要用一个庞大的 PE 来测试。

3月26日的版本,还没有改变磁盘缓冲区。

因此,如果 3 月26日有问题,那就不是由于磁盘缓冲区大小的改变而引起的,而是其他问题,比如,BIOS 不支持访问大扇区号,等等。

所以才需要 geometry 命令啊。出问题时,geometry 是个关键的命令。
回复

使用道具 举报

3#
发表于 2012-6-11 10:53:59 | 显示全部楼层

回复 #49 fxq 的帖子

没错,5月22日改变了 LBA 模式磁盘访问的缓冲区。未改变之前是 63 扇区,改变之后是 127 扇区。

按道理,127 扇区应该也是安全的。

这得由 pseudo 来分析了。因为我不明白 Error 25: DISK read error 和 Error 5: Partition table invalid or corrupt 这两个失败信息的具体环境有何差别,因此不知道失败的性质、失败的严重程度有何不同。
回复

使用道具 举报

4#
发表于 2012-6-11 11:26:10 | 显示全部楼层

回复 #51 fxq 的帖子

我的看法与你有些不同。

2002 年的主板,那时候,grub4dos 还未诞生。这就排除了故意制造与 grub4dos 不兼容的可能性。这其实还是一个不小的优点,在我看来。

如果主板 BIOS 较弱,它可能只支持 CHS 模式,不支持 LBA 模式。

CHS 模式最大只能访问 8G。如果 H 不是最大值 255,或者 S 不是最大值 63,那么,CHS 模式可访问的扇区数更少。比如说,它有可能只可以访问 1.44M 的内容。所以,如果一个 PE 很大的话,这个 BIOS 根本就无法正常启动 PE。

这一切,都需要测试才能弄清楚。如果知道了你的 BIOS 最大可以访问多少个扇区,那么就可以设计你的 PE,让它足够小,满足这个 BIOS 的要求。那样就不会有问题了。

还是让 pseudo 来帮你设计吧,包括如何进行测试。
回复

使用道具 举报

5#
发表于 2012-6-11 12:22:48 | 显示全部楼层

回复 #53 fxq 的帖子

建议你不要用 plpbt,至少测试期间应该这样。这个 plpbt 有可能带来新的不确定因素。

原本的 BIOS 是由硬件厂家保证的。如果额外增加一个 plpbt,那就有可能与 BIOS 产生某种冲突。

ud 只要能启动,它的任务就完成了。调整 ud 安装参数,只对 ud 失败、无法启动才有意义。已经能够启动的 ud,就无须调整了。

进入 grub4dos 后,运行 geometry 命令,可以看到有 (CHS) 还是 (LBA) 字样。

你前面报告的这个情况,似乎并未表示新版的 grub4dos 产生了(新的) bug。就是说,你以前也不能成功启动你的 0PE。

至于说你接下来该怎么做,你自己决定吧。有时间了就做,没时间就放下。

[ 本帖最后由 不点 于 2012-6-11 12:23 编辑 ]
回复

使用道具 举报

6#
发表于 2012-6-11 12:34:04 | 显示全部楼层

回复 #54 pseudo 的帖子

看了你的分析,我觉得确实如你所说,是 BIOS 访问极限造成的。

那么,我觉得 0pe 应该可以处理好这样一个问题。

当 BIOS 可以访问 100M 时,估计 0pe 就可以运行了吧?

假如 BIOS 只能访问 32M,是不是就无法运行 0pe 了呢?

0pe 最小占用多大空间?

我觉得应该尽最大努力挽救一台有问题的机器。
回复

使用道具 举报

7#
发表于 2012-6-11 12:44:22 | 显示全部楼层
好的。

不过正如前面已经分析出来的,这台机器有扇区数目的访问极限。这也就排除了新版 grub4dos 产生 bug 的因素了。谢谢你辛苦的测试。

接下来进一步测试,目的是确定这个极限值有多大,以便 pseudo 能够为它设计一个合适的 0pe。

我觉得这个事情很普通,因此可以不急于解决它。无论何时进行测试和解决都是可以的。
回复

使用道具 举报

8#
发表于 2012-6-11 14:19:37 | 显示全部楼层

回复 #59 pseudo 的帖子

blocklist 命令可以确定它到底在什么样的扇区位置。

我想,那个糟糕的 BIOS 不至于只能恰好访问 1.44M 吧?ud 能够启动,而且又能启动 grldr,这估计也超过 1.44M 了。

如果它能访问 16M,就仍然有希望。但如果只能访问 8M,那对于 PE 来说就更困难了。
回复

使用道具 举报

9#
发表于 2012-6-11 16:50:46 | 显示全部楼层

回复 #62 fxq 的帖子

geometry  (fd0)
geometry  (fd1)
geometry  (hd0)
geometry  (hd1)
geometry  (hd2)
geometry  (hd3)

blocklist  (hd0,0)/path/filename  <------- 这是举例,盘号、分区号、路径、文件名自己改一下。

54楼末尾,pseudo 的测试方法应该更具有针对性:

请fxq兄做这样的测试:
使用最新版grldr,启动开始有3秒读秒,按esc键进入grub命令行,输入以下命令并记录结果:
ls   (hd0)/0pe/0penb.lzma
geometry   (hd0)
geometry   (fd0)
map   --mem   (hd0)/0PE/0PENB.LZMA   (hd)
map   --hook
ls   (hd-1,0)/

[ 本帖最后由 不点 于 2012-6-11 17:00 编辑 ]
回复

使用道具 举报

10#
发表于 2012-6-11 17:05:43 | 显示全部楼层

回复 #61 hotdll 的帖子

光有一级内核行不行?

如果必须有二级内核,而且二级内核很大,那还是不行。

ud 本身占用 8M(粗略讲,就是 5 张或 6 张软盘的大小)。所以,最好充分利用这 8M,不要再额外占用可见区空间了。这是因为,可见区空间在 8M 以后,有可能对于这些老机器不适应。
回复

使用道具 举报

11#
发表于 2012-6-11 22:43:16 | 显示全部楼层
以下这个,显然是你的硬盘,因为有如此多的分区:
---------------------------------------------
2.geometry   (hd0)

divre 0x80(LBA): C/H/S=185731255163, Sector Count/Size=298375245/512

Partition num: 0, active, 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
Partition num: 7, Filesystem type is ntfs, Partition type 0x07


而这个,显然是 U 盘:
---------------------------------------------
3.geometry   (fd0)

drive 0x00(CHS): C/H/S=80/2/9, Sector Count/Size=2880/512
Partition num: 0, active,
Error 25: disk read
Filesystem type is fb, using whole disk

这就到了最关键的时候。老天爷!它竟然与 Roy 先前那个盘一样,每个磁道只有 9 个扇区!

在 grub4dos 中,柱面数 C 值是不能精确获得的,只能通过试验获得。因此,总扇区数也只能通过试验获得。

但 CHS 模式最大的 C 值是 1024。

1024 x 2 x 9 x 512 = 9M

就是说,即便 BIOS 支持最大的 C 值,它也只能够访问 9M。

而假如 BIOS 支持的 C 值较小,比如 C 只有 80 这么大,那么这个 U 盘只能被 BIOS 认出 720K。

因此,当务之急,是确定最大可访问的扇区号。

用 cat 命令吧,这是最快的方法了。
  1. cat    --hex    (fd0)18000+1
  2. cat    --hex    (fd0)16000+1
  3. cat    --hex    (fd0)14000+1
  4. cat    --hex    (fd0)12000+1
  5. cat    --hex    (fd0)10000+1
  6. cat    --hex    (fd0)9000+1
  7. cat    --hex    (fd0)8000+1
  8. cat    --hex    (fd0)7000+1
  9. cat    --hex    (fd0)6000+1
  10. cat    --hex    (fd0)5000+1
  11. cat    --hex    (fd0)4000+1
  12. cat    --hex    (fd0)3000+1
  13. cat    --hex    (fd0)2000+1
  14. cat    --hex    (fd0)1000+1
  15. cat    --hex    (fd0)500+1
  16. cat    --hex    (fd0)200+1
  17. cat    --hex    (fd0)100+1
复制代码
执行以上命令,只要 cat 能够显示数据,这个 cat 命令就是成功的。

cat 显示出的扇区数据,没必要拍照了,因为这些具体的数据不重要,这里不需要它们。只需记录每条 cat 命令究竟是成功了还是失败了。成功时它要显示扇区数据,失败时,它要显示一条出错信息(请贴出出错的信息)。如果死机,那也算是失败的。

以上测试的目的,是找出最大的 N 值,使得
  1. cat    --hex    (fd0)N+1
复制代码
能够成功执行,而不是显示一条错误(disk read error 之类的)。

[ 本帖最后由 不点 于 2012-6-11 22:49 编辑 ]
回复

使用道具 举报

12#
发表于 2012-6-12 00:22:01 | 显示全部楼层
你干得很棒。cat 命令全部成功,无一失败。

这下子知道你的 BIOS 可以访问 9M 的内容了。这是你这个 BIOS 的最大能力:

柱面数 Cylinders = 1024
磁头数 Heads = 2
每个磁道的扇区数 = 9

最大访问能力 9M。

据此,pseudo 或者其他 PE 制作者就可以设计一个能够成功启动的 PE 了……

期待……
回复

使用道具 举报

13#
发表于 2012-6-12 16:26:19 | 显示全部楼层
这个机器的问题总算比较圆满获得了解决,BIOS 能够访问 9M。满足了 (ud) 文件系统至少 8M 的要求。可见区只有 1M 是可以被 BIOS 访问的。如果可见区是一个 FAT32 的格式,那么光是两个 FAT 表都可能超过 1M,因此,文件系统中的文件都将无法访问。可见区采用 FAT16 或 FAT12 要更节约一些。但是,可见区的空间中 BIOS 能够访问的空间肯定低于 1M。基本上就当作没有可见区好了(即,可见区都算作无法访问)。就是说,利用 (ud) 文件系统的 8M 空间来安排 PE 的启动过程,不要指望去访问可见区的空间了。

这就提示我们另一个更严重的问题:假如 BIOS 可访问的空间不是 9M 而是只有 720K,那又将如何呢?当然了,由于未能达到 8M 的最低要求,因此 (ud) 系统可能要失败,无法安装 PE 了。

这就引出一个新的问题:如何改进 CHS 的探测算法,满足那些 “ 低能 ” 老机器的要求?其实,在那种情况下,不能安装 PE 是可以忍受的,但如果连 (ud) 系统都无法启动,那将是一个严重问题。参见时空论坛上的讨论。
回复

使用道具 举报

14#
发表于 2012-6-12 17:46:01 | 显示全部楼层

回复 #78 fxq 的帖子

这是最好的消息了。祝贺。

努力没有白费。

-------------

回复楼下 fxq:你是第一个让我近距离了解这一真实情况的人,特别表示感谢。没有你的工作,这一切都不能获得。我增加了知识,增加了经验,因此而感谢你。

[ 本帖最后由 不点 于 2012-6-12 19:07 编辑 ]
回复

使用道具 举报

15#
发表于 2012-6-13 06:37:35 | 显示全部楼层
另外,既然 6月8日的 grub4dos 没有发现什么问题,它也就是最理想的版本了。

无论光盘、磁盘(LBA 模式)还是 PXE,其缓冲区大小都设置为 不至于引起 BIOS 失败的最大值(光盘的缓冲区大小是 64K,磁盘LBA 模式以及 PXE 的缓冲区都是 63.5K)。这有助于加速光盘、磁盘(LBA模式)、PXE 的启动。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-12-2 16:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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