无忧启动论坛

标题: 反馈一个 grldr.mbr 0.4.6a 的 bug [打印本页]

作者: Pauly    时间: 2013-10-21 12:03
标题: 反馈一个 grldr.mbr 0.4.6a 的 bug
本帖最后由 Pauly 于 2013-11-5 20:40 编辑

磁盘分区情况:三主分区,三逻辑分区,全部为 NTFS 格式。将 grldr.mbr 直接写入 MBR(保留分区表),然后在 hd0,4 放上 grldr。从此硬盘启动,grldr.mbr 在第一个分区中未找到 grldr 后即卡住。
经逐一测试,2013-5-16 版本无此问题,其后版本均有此问题。请开发者有时间修复一下,谢谢。

=================================================
已经修正,请从 http://bbs.znpc.net/forum.php?mo ... age%3D1&page=21 下载。
作者: 不点    时间: 2013-10-21 14:53
可是 5 月 16 日以后,没有改动 grldr.mbr 启动代码。因此我提醒 Pauly 再观察观察究竟毛病在什么地方。比如说,会不会是编译器不同所造成的?


作者: Pauly    时间: 2013-10-22 09:09
不点 发表于 2013-10-21 14:53
可是 5 月 16 日以后,没有改动 grldr.mbr 启动代码。因此我提醒 Pauly 再观察观察究竟毛病在什么地方。比如 ...

我说的是 0.4.6a 的 grldr.mbr,从二进制内容可以看出 5-16 跟其后的 5-22 有明显的内容不同。
作者: 不点    时间: 2013-10-22 09:38
那我明白了,你说的 5月22 日,不是在 googlecode 上下载的。yaya 的代码拖后到 6月23日才正式进入svn代码库里面。

那么,这个情况就需要 yaya 解决了。我还是用我以前说过的话来作个评论吧:0.4.6 的代码需要锤炼,需要时间去排除 bug。

其实,0.4.5 以前的代码,也是经历了长期的排错过程,排错过程中曾经发现很多逻辑错误,以及一些手误(typo)。

长期+用户多=可靠


作者: bsbq    时间: 2013-10-26 17:16
这个问题确实是个问题,其实我是因为这个问题google搜索到这里的(以前别人的帖子也反馈过这个问题)我用0.4.4一直没有问题,因为这版本不支持ext4分区,才改用0.4.6
我的情况是:
第一个分区NTFS,WinXP,
第二个分区NTFS,Win7,后面还有若干逻辑分区,gentoo的linux分区,我用grub4dos引导XP,Win7,Gentoo
grldr,menu.lst必须放在Winxp分区下,0.4.6只能搜索第一个分区后卡住。
用BOOTICE安装到mbr,grub4dos-0.4.6a-2013-07-24

作者: 2011yaya2007777    时间: 2013-10-28 16:38
已经修正,请从 http://bbs.znpc.net/forum.php?mo ... age%3D1&page=21 下载。
作者: hhh333    时间: 2013-10-29 05:42
2011yaya2007777 发表于 2013-10-28 16:38
已经修正,请从 http://bbs.znpc.net/forum.php?mod=viewthread&tid=6176&extra=page%3D1&page=21 下载。

换成0.46a后,isolinux不能用boot /grldr 来调用g4d,不知有什么讲究?
作者: 不点    时间: 2013-10-29 17:10
外部软件是根据 grldr 的一些特征来确定是不是 GRLDR 的。所以,grub4dos 的开发者就应该尽力保证格式不变,保持一致性,方便别人调用。

yaya 如果有时间的话,可以研究一下 isolinux 的代码,看看它调用 grldr 的机理,以及能否满足 isolinux 的条件。
作者: 2011yaya2007777    时间: 2013-10-29 18:39
谁可以提供 isolinux 的 boot 命令源代码供研究?

我下载了1个 isolinux4.05.iso 。执行
boot: ../grldr
加载 0.4.5c 版本的 grldr ,返回:
Invalid or corrupt kernel image.
作者: 不点    时间: 2013-10-29 19:36
以下的教程确实提到可以用 boot /grldr 来从 syslinux 启动 grub4dos:
http://www.rmprepusb.com/tutorials/chainload-syslinux

我觉得我们可以(通过试验)首先确定究竟从何时开始出问题了。定位了时间,就比较容易解决了。


作者: mygamexxx    时间: 2013-10-29 20:39
本帖最后由 mygamexxx 于 2013-10-29 20:41 编辑

用BOOTICE 以恢复PBR的形式,写入新版0.4.6a的grldr.pbr后,U盘如下:

1.jpg (18.69 KB, 下载次数: 198)

1.jpg

2.jpg (42.54 KB, 下载次数: 217)

2.jpg

作者: 2011yaya2007777    时间: 2013-11-1 16:24
这是 BOOTICE 的问题。前面已经有帖子详细论述过此事。可惜由于服务器损坏,这个帖子没有恢复。
已经将此事反映到 BOOTICE。
作者: Pauly    时间: 2013-11-1 16:35
mygamexxx 发表于 2013-10-29 20:39
用BOOTICE 以恢复PBR的形式,写入新版0.4.6a的grldr.pbr后,U盘如下:

是否是恢复 MBR?
恢复 PBR 不会影响分区表,除非这个U盘是 FDD 模式,下次 BOOTICE 将加强对分区表有效性的检查。
作者: mygamexxx    时间: 2013-11-1 16:43
本帖最后由 mygamexxx 于 2013-11-1 16:50 编辑
Pauly 发表于 2013-11-1 16:35
是否是恢复 MBR?
恢复 PBR 不会影响分区表,除非这个U盘是 FDD 模式,下次 BOOTICE 将加强对分区表有效 ...


用最新的BOOTICE测试版,此现象消失。

另外,由于手机升级后,大容量存储模式的U盘用于启动出现了明基笔记本电脑disk error的问题,联想台式机启动native pe停止在native界面的问题,包括0pe,算了,不使用手机启动电脑了。
如果将手机存储卡放置于读卡器上,启动电脑又正常。
作者: hhh333    时间: 2013-11-1 16:50
2011yaya2007777 发表于 2013-10-29 18:39
谁可以提供 isolinux 的 boot 命令源代码供研究?

我下载了1个 isolinux4.05.iso 。执行

4.06/4.07都可以直接用boot命令来启动0.45c的但不能启动0.46a,4.05记不得了,应该也与4.06相似的。
作者: 2011yaya2007777    时间: 2013-11-1 20:33
11 楼是 SD 卡,格式化为 FDD 模式。逻辑0扇区,也可以说是分区引导扇区。
作者: 2011yaya2007777    时间: 2013-11-2 10:46
本帖最后由 2011yaya2007777 于 2013-11-2 13:13 编辑

使用 ISOLINUX4.06.iso 进入命令行 boot:
/grub.exe   可以进入g4d环境
/grldr 提示 Invalid or corrupt kernel image.
/grldr.mbr 提示 Loading /grldr.mbr .. ready. 之后死机。
g4d 版本是 0.4.5b 2011_12_10

请 hhh333 提供你测试的 ISOLINUX 及 grldr。
作者: hhh333    时间: 2013-11-2 13:57
http://pan.baidu.com/s/1kUbQS
就是我做的PE,有各种启动方式,ISO一启是ISOLINUX
作者: mygamexxx    时间: 2013-11-2 16:15
本帖最后由 mygamexxx 于 2013-11-2 16:51 编辑

YAYA大帮忙看一下,手机升级后的U盘与以前的是否有什么区别。升级后用手机启动明基笔记本电脑出现disk error. 在联想台式机上加载NATIVE 形式的PE时,停止在NATIVE界面,可能是停止在搜索或挂载WIM文件。非NATIVE形式的PE能够成功启动。

100.jpg (97.08 KB, 下载次数: 194)

100.jpg

200.jpg (99.46 KB, 下载次数: 204)

200.jpg

作者: 2011yaya2007777    时间: 2013-11-2 20:32
hhh333 反映的问题已经解决。下载地址 http://bbs.znpc.net/forum.php?mo ... age%3D1&page=21

“手机升级后的U盘与以前的是否有什么区别” 从截图看不出什么。手机内部有一个类似集线器的装置,把内置卡与外置卡合成一个usb设备,分别赋予LUN0和LUN1。数据传送由手机软件控制。手机软件升级后,估计有什么不适应的。是加载usb驱动后出现问题,还是不加载usb驱动有也问题?
作者: mygamexxx    时间: 2013-11-3 14:07
2011yaya2007777 发表于 2013-11-2 20:32
hhh333 反映的问题已经解决。下载地址 http://bbs.znpc.net/forum.php?mod=viewthread&tid=6176&extra=page ...

不加载驱动有问题,加载驱动没试,0.4.5a也一样,可能是有什么不一样,使磁盘识别出现问题,包括pe下虚拟盘驱动的识别。
作者: pseudo    时间: 2013-11-3 17:37
mygamexxx 发表于 2013-11-1 16:43
用最新的BOOTICE测试版,此现象消失。

另外,由于手机升级后,大容量存储模式的U盘用于启动出现了明 ...

启动初期依中文提示按空格键就行了。

作者: mygamexxx    时间: 2013-11-4 11:44
本帖最后由 mygamexxx 于 2013-11-4 12:27 编辑
pseudo 发表于 2013-11-3 17:37
启动初期依中文提示按空格键就行了。


按空格键后启动0pe成功,从过程界面显示的信息看是软盘形式的U盘。不过有一个问题,启动成功后我的电脑中无U盘。我是用map --mem的形式启动U盘上的ISO文件。因而无法加载U盘上的PETOOLS。怎么本地硬盘E盘上的PETOOLS也没有呢?重新插拨也不显示U盘,使用于山的非NATIVE的2003PE,启动成功后,U盘也看不到,重新插拨后能显示U盘。

只是唯一一台以前加载USB驱动成功的明基笔记本电脑,现在是启动时disk error,无法测试USB驱动加载成功的现象。
家里的神舟台式机(显示012_)和单位的联想台式机(显示0123)均加载USB驱动不成功。

手机形成的U盘不稳定,经常出现在我的电脑上看不到U盘的情况,特别是经过实模式的启动操作。因为如果WINDOWS启动成功后插入,再重新插拨或插拨到其他电脑上,认不到U盘的现象很少。
作者: mygamexxx    时间: 2013-11-4 12:10
本帖最后由 mygamexxx 于 2013-11-4 13:52 编辑

不知GRUB4DOS的grldr.mbr和grldr.pbr,能不能弄一个测试版,如果出现disk error时能显示磁盘错误的原因,no grldr时列出磁盘清单,是不是对测试工作有很大帮助。因为这几个状态无法进入命令行,不能用其他的命令来检查错误原因。

手机升级后,原来运行PLPBT都正常的,现在都运行有问题了。
作者: 不点    时间: 2013-11-4 13:53
本帖最后由 不点 于 2013-11-4 15:02 编辑

使用任何软件,都有限制的。当你的 BIOS 没有足够的访问能力的时候,就会出现 disk error 之类的错误。这还算是好的。更糟糕的 BIOS 在你试图访问大扇区号时,干脆死机,根本就没有机会返回到 grub4dos 的代码中,显示所谓的测试信息。

从另外一个角度来看,选择 grldr.mbr 和 grldr.pbr 本身就是错误的,是一种错误的选择。正确的选择是 fbinst。它可以保证较高的启动成功率。但 fbinst 照样无法应付 BIOS 的 “访问能力” 缺陷。

这就是原因,不用找,也不用费劲去找别的命令来检查。BIOS 的能力有限,或者故意制造启动困难,这就是原因。你去找原因,找来找去,最后还是定位到这个原因,没有用。

你也没有别的办法,你唯一可以做的,是尽力保证所涉及的文件都位于扇区号较小的位置,这样能够尽可能多地获得启动的成功。

到目前为止,还没有一个确认无误的实际例子来证明 fbinst 彻底失败。因此,(在这个意义上)可以认为 fbinst 的成功率是 100%。只要把 grldr 等安排在扇区号较小的位置上,基本可以保证成功。

fbinst 失败的例子应该也是有的,但那是凤毛麟角,很难遇到。比如说,我们的开发者 Roy 就有一台机器,它识别 USB 为 720K 的软盘,最大只支持 720K。Roy 自己会应付这一问题,因此,Roy 没有报告这一问题。这种情况,即使使用 fbinst 也难了,因为 fbinst 至少需要 8M 的可访问空间才可以确定出 CHS 来。这种情况连 grldr.mbr 也无法成功,因为 GRLDR.MBR 需要每磁道至少有 18 扇区才行。720K 的 CHS 是 C=80,H=2,S=9,这个 S=9 就小于 18 了。对于这种情况,你只好放弃 fbinst 以及 grldr.mbr,而用固定 H=2 和 S=9 的 BPB 参数(位于 PBR 中的 BPB 参数)来让它启动,这么一搞,当然这个 U 盘就无法适应别的主板了,而只能应付这一个型号的主板。对于 Roy 的这个特殊情况,我猜测,用 fbinst 并且注意让 grldr 和 menu.lst 都在 720K 的极限之内,仍是可以成功的。就是说,格式化 fbinst 的时候,让 grldr 和 menu.lst 最先放进 ud 区,其它的文件放在后面,这样我估计就应该能够成功进入 grub4dos 了。

再补充点有关 disk error 的说明信息。disk error 是 grub4dos 引导扇区里面的显示信息,引导扇区的代码在查找 grldr 的过程中遇到读盘失败,就出现这条信息,只要 BIOS 的 INT13 本身没有产生死机,就会出现这条信息。如果 INT13 本身死机了,当然就无法显示 disk error 这条信息了。

读盘失败的原因有:

1、如果没有采用 grldr.mbr 而是直接采用分区引导代码,那么,由于分区引导代码没有自动适应 CHS 的能力,因此,出现 BPB 中的 CHS 不能够匹配主板 BIOS 的 CHS 的情况,这样可能导致 int13 读盘失败或死机。如果一个 PBR 的引导代码不采用 “几何参数探测和自适应” 的方法,那么它必须在 BPB 中放置完全正确的 H 和 S 值,保证与这个主板 BIOS 所认定的 H、S 值完全相同,这才行,否则就出现 disk error (或干脆死机)。

2、如果使用了 grldr.mbr,仍然有可能出现 CHS 不匹配的情况,这是因为,grub4dos 的 “自动探测 CHS” 的功能并不保证 100% 成功。真正可以保证 100% 成功的是 fbinst。既然 CHS 有可能不准确,那么这就会出现因执行 INT13 指令而导致的 disk error (或干脆死机)。

3、在 CHS 保证能够完全正确匹配主板 BIOS 的情况下,如果把 GRLDR 放置在靠后的位置,超出主板 BIOS int13 的访问能力,此时也会出现 disk error(或干脆死机)。

4、在主板 BIOS 支持 LBA 模式的情况下,这与上述第 3 条是类似的。即,如果把 GRLDR 放置在靠后的位置,超出主板 BIOS int13 的访问能力,此时也会出现 disk error(或干脆死机)。


如果我没搞错的话,以上这 4 条,好像就是与启动失败有关的全部的可能性。

因此,如果你想让你的 U 盘通用,(目前)你唯一可以使用的软件是 fbinst。如果你不考虑通用的问题,那么你可以自己设定 BPB 中的 H 和 S(匹配你的主板 BIOS) 来让你的这台机器成功启动。


作者: mygamexxx    时间: 2013-11-5 06:44
本帖最后由 mygamexxx 于 2013-11-5 06:46 编辑

因为是同一台电脑,以前能启动并加载usb驱动成功,只是升级了手机系统和grub4dos后出现,应与Bios无关。
主要与手机形成的u盘不同有关。
作者: 不点    时间: 2013-11-5 14:04
本帖最后由 不点 于 2013-11-5 14:12 编辑

不一定与 BIOS 无关。你提示说升级了 grub4dos,我想,这就有可能把 GRLDR 等文件放在靠后的物理位置,导致启动失败。

万变不离其宗,无论怎么变化,BIOS 还是一样的。BIOS 的问题就是前面提到的 4 个方面。如果你都做到了,应该不会有问题了。如果你没做到,那出问题是 “家常便饭”,不要臆测是新版 grub4dos 的 bug。


启动是最要紧的,不要舍本逐末。如果你连 grldr 都不能成功加载,“grldr 里面的 usb 驱动” 也就无从谈起。

怎样才能保证启动成功,这才是最基本、最关键、最本质的问题,是你首先要面对和解决的问题。USB 驱动的问题属于上层的问题,不属于基本层次的问题。
作者: sgw888    时间: 2013-11-5 14:06
不点 发表于 2013-11-4 13:53
使用任何软件,都有限制的。当你的 BIOS 没有足够的访问能力的时候,就会出现 disk error 之类的错误。这还 ...

我曾经测试过 手动修改硬盘 MBR扇区 分区表部分 CHS的取值来测试引导.
BIOS的行为非常古怪,但与分区表结束CHS的H部分有重要关系. 使用多种软件,包括WINPE环境下的分区工具所识别的硬盘CHS参数,磁头H部分都会受到影响,直接INT 13调用获得的磁头数也会受到分区表部分 结束磁头的取值影响,这个影响是深远的,甚至可以认为是恶意的,导致分区工具在现有分区的基础上,调整分区或者删掉重建都会受到影响,因为不合适的结束磁头数取值,导致以CHS方式引导受到影响,能够正常启动的机率就会极低.

当修改结束磁头数为255或者240时,则BIOS能很好的适应这种情形,基本上都能成功引导.

修复错误的 CHS参数的正确方法是: 先修改第一分区表项结束磁头值为255或者240(针对普通硬盘),重启一次机器或者断电一次,然后再次引导使用分区工具时,INT 13才会重新识别硬盘的磁头数为 255或者240,这时候分区工具分区时才会有正确的结果.
作者: 不点    时间: 2013-11-5 14:18
楼上 sgw888 提供的信息就非常好。用 fbinst 可以应付此类恶意(或糟糕)的 bios。
作者: hhh333    时间: 2013-11-5 15:46
2011yaya2007777 发表于 2013-11-2 20:32
hhh333 反映的问题已经解决。下载地址 http://bbs.znpc.net/forum.php?mod=viewthread&tid=6176&extra=page ...

经测试,新的1102版本已经解决了这个问题!
想问一下4.6a与4.5c主要的优势在哪里?我目前想使用它就是因为它提供了启动cd的bin文件(以前我总是从4.5c的前2kB来提取的)
作者: 2011yaya2007777    时间: 2013-11-5 15:49
赞同 sgw888  的说法。我曾经验证过某些主板,chs与结束磁头数和结束扇区数有着对应关系。
作者: 不点    时间: 2013-11-5 16:35
想问一下4.6a与4.5c主要的优势在哪里?我目前想使用它就是因为它提供了启动cd的bin文件(以前我总是从4.5c的前2kB来提取的)


0.4.6 加强了 CD-ROM 的支持,支持微软的 CD-ROM 格式。对 CD-ROM 的引导代码进行了强化和改造。对 GRLDR 的引导代码进行了强化和改造,完整支持了微软的 exFAT 文件系统。还有内置 USB 驱动。我所知道的大致就这些了。

作者: hhh333    时间: 2013-11-5 17:48
不点 发表于 2013-11-5 16:35
0.4.6 加强了 CD-ROM 的支持,支持微软的 CD-ROM 格式。对 CD-ROM 的引导代码进行了强化和改造。对 GRL ...

哦,那还是值得升级的,后面发布的PE还是转到这4.6a来吧!
不知每次4.5c的更新会不会也更新到4.6a上去。
作者: 2011yaya2007777    时间: 2013-11-5 18:52
不知每次4.5c的更新会不会也更新到4.6a上去。

会的
作者: 2011yaya2007777    时间: 2013-11-6 11:23
本帖最后由 2011yaya2007777 于 2013-11-6 11:25 编辑
因为是同一台电脑,以前能启动并加载usb驱动成功,只是升级了手机系统和grub4dos后出现,应与Bios无关。
主要与手机形成的u盘不同有关。

我觉得不点分析得对,问题的根源在手机系统,但与BIOS密切关。因为读磁盘靠的是BIOS。
手机升级前,BIOS分配外置卡驱动器号00及0x80,以00启动,找到grldr,加载了usb驱动,之后usb驱动不能使用00,但可以使用0x80。
手机升级后,按你目前提供的信息分析,是以驱动器号00启动的,可以试一试按0x80启动。
方法1:如果启动时,BIOS提供启动选项(比如Esc,F2,F12等等),看看是否有2个usb选项,有的话,分别试验。
方法2:使用Winhex等工具,修改逻辑0扇区代码。将0x64处00修改为0x80。
作者: mygamexxx    时间: 2013-11-6 13:31
本帖最后由 mygamexxx 于 2013-11-6 13:49 编辑

我也认为是手机形成的U盘的原因。
测试过程:内存卡用读卡器,在WIN7下格式化,用BOOTICE1105版,修改主引导为WEE63,分区引导为grub4dos 0.4.6a。先拷入GRLDR,再拷入其他文件,启动联想台式机,不加载USB驱动,拍照;将内存卡装入手机,用手机启动联想台式机,不加载USB驱动,拍照;用手机启动明基笔记本,拍照。用winhex写入手机形成的U盘的0x64为80,也是no grldr。明基笔记本启动,BIOS中只有一个U盘的启动选项。以前是在XP下用其他软件格式化或手机格式化,用XP或WIN7格式化U盘速度超慢,需好几分钟。

读卡器.jpg (112.43 KB, 下载次数: 213)

读卡器.jpg

手机.jpg (107.59 KB, 下载次数: 177)

手机.jpg

明基笔记本手机启动.jpg (26.65 KB, 下载次数: 179)

明基笔记本手机启动.jpg

作者: 2011yaya2007777    时间: 2013-11-6 14:00
从联想台式机启动:
用读卡器,BIOS分配驱动器号x80,
用手机,BIOS分配驱动器号00。
从明基笔记本启动,不清楚BIOS分配什么驱动器号。

我说的方法2,是指19楼的情况:没有MBR,以FDD方式启动,逻辑0扇区就是FAT32引导程序,是0.4.5c的分区引导代码。
作者: mygamexxx    时间: 2013-11-6 15:50
本帖最后由 mygamexxx 于 2013-11-6 16:03 编辑

内存卡装入手机后,用手机形成的U盘,在XP下,用BOOTICE,主引导是灰色的,只有分区引导记录是GRUB4DOS,显示的U盘类型是FDD。
用winhex写入手机形成的U盘的0x64为80,在联想台式机上启动,geometry 仍为0x00。

1.jpg (11.58 KB, 下载次数: 191)

1.jpg

2.jpg (47.37 KB, 下载次数: 192)

2.jpg

3.jpg (41.27 KB, 下载次数: 189)

3.jpg

作者: 2011yaya2007777    时间: 2013-11-6 16:15
本帖最后由 2011yaya2007777 于 2013-11-6 16:18 编辑

图3与19楼不同。19楼是怎样格式化的?

把现在的0x5d的00修改为0xff。
在联想台式机和明基笔记本上都试一试。
作者: 不点    时间: 2013-11-6 16:19
GRLDR 在 16M 处,仍然有失败的危险。

引导失败、找不到 GRLDR 的原因是 BPB 里面的 H 和 S 与 BIOS 所认定的值不同,还有 yaya 所说的 drive number 的问题,以及 GRLDR 的物理位置太远,超出 BIOS 的寻址能力。

现在最关键的就是确定 BIOS 所认定的  H 和 S 究竟是多少。如果这个不能确定,那就只有失败。

0.4.5c 的分区引导代码比较可靠,应该不会有错。0.4.6 的代码,yaya 更清楚一些。


作者: mygamexxx    时间: 2013-11-6 16:28
本帖最后由 mygamexxx 于 2013-11-6 16:35 编辑

19楼是在XP下用其他工具格式化的,要么是BOOTICE,要么是DG。有点记不清了。
把现在的0x5d的00修改为0xff,用联想台式机启动,no grldr。

4.jpg (77.52 KB, 下载次数: 183)

4.jpg

作者: mygamexxx    时间: 2013-11-6 16:38
不点 发表于 2013-11-6 16:19
GRLDR 在 16M 处,仍然有失败的危险。

引导失败、找不到 GRLDR 的原因是 BPB 里面的 H 和 S 与 BIOS 所认 ...

如何确认BIOS所认定的C、H、S?
作者: 不点    时间: 2013-11-6 16:48
你可以先安装 fbinst,它能成功进入 grldr 的环境,进去之后,就可以找到 USB 盘的几何参数了。

geometry (fd0)

geometry (hd0)

其中必有一个是 USB 盘。

然后 用 ls 、cat 等命令列出或查看 USB 里面的文件,看看是否能列出和查看,如果能,那就说明 geometry 所列出的几何参数是正确的。

作者: mygamexxx    时间: 2013-11-6 16:50
本帖最后由 mygamexxx 于 2013-11-6 16:53 编辑
不点 发表于 2013-11-6 16:48
你可以先安装 fbinst,它能成功进入 grldr 的环境,进去之后,就可以找到 USB 盘的几何参数了。

geometr ...


我用内存卡装入读卡器,可以在明基笔记本上启动成功,是否也可以?但装入读卡器后,是从U盘的MBR启动的(U盘的MBR是WEE63)。
作者: 不点    时间: 2013-11-6 17:03
看到你的偏移 0x1C 处的 3F 00 00 00 了吗?这是错的!应该是 00 00 00 00

你先修改这个,然后再试试,说不定就 OK 了。


作者: mygamexxx    时间: 2013-11-6 17:24
本帖最后由 mygamexxx 于 2013-11-6 17:42 编辑
不点 发表于 2013-11-6 17:03
看到你的偏移 0x1C 处的 3F 00 00 00 了吗?这是错的!应该是 00 00 00 00

你先修改这个,然后再试试,说 ...


在联想台式机上,如果 0x5D是FF,  修改后还是NO GRLDR,如果0x5D改回00,0x1C不改能启动,改了也能启动。
在明基笔记本上,无论 0x5D是00或是FF:0x1C如果是3F,NO GRLDR,如果改为00,光标后(二行或三行字符一闪)黑屏,插出U盘后,显示内置菜单。
作者: 不点    时间: 2013-11-6 17:40
本帖最后由 不点 于 2013-11-6 19:05 编辑

不要以为联想能启动,就都能启动。联想的 BIOS 会自动将 1C 处(读入内存后)修改为 00,其它的 BIOS 不一定这样。

5D 处是不可以修改的。【更正】噢噢,这个说法是错误的。应为:5D 处是可以修改的。

应该修改的是 0x40 处,如果它是 0x80,那就是硬盘 hd0,如果是 00,那就是软盘 fd0。【更正】哦哦,这个说法也是错误的。应为:0x40 处不是用来读的。修改 0x40 处没有用。




作者: mygamexxx    时间: 2013-11-6 17:45
本帖最后由 mygamexxx 于 2013-11-6 18:01 编辑
不点 发表于 2013-11-6 17:40
不要以为联想能启动,就都能启动。联想的 BIOS 会自动将 1C 处(读入内存后)修改为 00,其它的 BIOS 不一定 ...


在明基笔记本上,无论 0x5D是00或是FF:0x1C如果是3F,NO GRLDR,如果改为00,光标后(二行或三行字符一闪)黑屏,拨出U盘后,显示内置菜单。

0x40是80.

内存卡插入读卡器,在明基笔记本上启动如下图,C、H、S与手机的一样:

20131106_175040.jpg (110.61 KB, 下载次数: 210)

20131106_175040.jpg

作者: 不点    时间: 2013-11-6 17:51
抱歉,刚才说的不对。

你改 5D 处是对的。改 40 处是没用的。


作者: 不点    时间: 2013-11-6 17:56
你得搞清,如果机器把这个扇区当作扇区 0 来对待,那么你就应该把 1C 处的四个字节清零。

如果你的机器把这个扇区当作扇区 3F 来对待(即它之前的 63 扇区是被作为 MBR 磁道而承认了),那么此处就应该是 3F 00 00 00.

应该视具体情况而定,而不是一成不变的。

如果是 fbinst,那就不会有这些复杂的问题。但你不能安装 fbinst,所以,必须考虑这些复杂问题。


作者: 不点    时间: 2013-11-6 18:01
如果改为00,光标后(二行或三行字符一闪)黑屏,插出U盘后,显示内置菜单。


这不就等于说成功了?至少已经成功加载 GRLDR 了!


作者: mygamexxx    时间: 2013-11-6 18:02
本帖最后由 mygamexxx 于 2013-11-6 18:06 编辑
不点 发表于 2013-11-6 18:01
这不就等于说成功了?至少已经成功加载 GRLDR 了!


是拨出U盘后,显示内置菜单,打字打错了,三行字符一闪,好像是警告信息。
作者: 不点    时间: 2013-11-6 18:04
对呀,拔出 U 盘,进入 GRLDR,这说明 GRLDR 启动了。你硬盘上有 GRLDR 吗?如果有,你删除掉硬盘的 GRLDR,硬盘改用 grub.exe,以免影响这里的测试结果。


作者: mygamexxx    时间: 2013-11-6 18:09
本帖最后由 mygamexxx 于 2013-11-6 18:12 编辑
不点 发表于 2013-11-6 18:04
对呀,拔出 U 盘,进入 GRLDR,这说明 GRLDR 启动了。你硬盘上有 GRLDR 吗?如果有,你删除掉硬盘的 GRLDR, ...


肯定是U盘的grldr,因为内置菜单不一样,显示的是U盘上grldr的内置菜单。硬盘上根目录下的grldr的内置菜单是英文的,U盘上的是中文的。已确认。

但U盘插着时,内置菜单出不来。
作者: 不点    时间: 2013-11-6 18:17
贴出你的内置菜单,找找毛病。这已经是小菜了,等晚饭之后再聊吧。


作者: mygamexxx    时间: 2013-11-6 18:24
不点 发表于 2013-11-6 18:17
贴出你的内置菜单,找找毛病。这已经是小菜了,等晚饭之后再聊吧。

内置菜单:
debug off
::find --set-root /grub/grub/unifont.hex
::read 0x1800820 || font /grub/grub/unifont.hex
::calc 46<<2+*0x8304
::read %@retval% || splashimage /grub/grub/TEST.BMP
graphicsmode -1 800
color normal=0x0F highlight=0x02 helptext=0x0E heading=0x05 standard=0x02 border=0x77
terminal --font-spacing=1:4
::(ud)/menuset 2 0 2 0 0 2
root (fd0) || root (fd0,0) || root (hd0) || root (hd0,0) || root (hd0,2)
/boot/grub/hotkey
calc 0+*0x8280>>8&0xff-0x80 || set usbtitle=正以 USB-HDD 方式启动 ! set usbtitle=正以 USB-FDD 方式启动
timeout 30
default 1
write 0x8274 0x2001 ::自动菜单编号
title       %usbtitle%
clear
title       从硬盘启动(异常U启)  \n\t  启动硬盘上的系统(硬盘可能与U盘冲突的情况下使用)\n\t  使用上下方向键选中并高亮一条菜单,按回车键或[B]键开始引导。\n\t  按[E]键在引导前编辑命令,或[C]键进入命令行。
map (hd0) (hd-1)
map (hd-1) (hd0)
map --hook
root (hd0,0)
chainloader +1
title       启动 0PE  \n\t  启动 0PE 进行系统维护
map /0pe/0pe.iso (0xFF) || map --mem /0pe/0pe.iso (0xFF)
map --hook
chainloader (0xFF)
title       启动 XPPE  \n\t  启动 XPPE 进行系统维护
map /boot/xppe.iso (0xFF) || map --mem /boot/xppe.iso (0xFF)
map --hook
chainloader (0xFF)
title       启动 03PE  \n\t  启动 03PE 进行系统维护
map /boot/03pe.iso (0xFF) || map --mem /boot/03pe.iso (0xFF)
map --hook
chainloader (0xFF)
::title       启动 bootmgr 菜单  \n\t  启动 WINPE3.0,老机器先加载 plpbt 支持 USB2.0
::if "%@root%"=="(fd0,0)" (ud)/move && map (fd0) (hd0) && map --rehook && rootnoverify (hd0,0)
::chainloader /boot/Tbootmgr
title       启动 WIN8PE  \n\t  启动 WIN8PE 进行系统维护
map /boot/8pe.iso (0xFF) || map --mem /boot/8pe.iso (0xFF)
map --hook
chainloader (0xFF)
title       启动 WIN8.1PE  \n\t  启动 WIN8.1PE 进行系统维护
map /boot/81pe.iso (0xFF) || map --mem /boot/81pe.iso (0xFF)
map --hook
chainloader (0xFF)
boot
title       U盘一键备份硬盘  \n\t  U盘一键备份硬盘的测试
configfile /grub/grub/onekey.lst
boot
title       启动 linux  系统 \n\t  进入 linux 系统启动菜单
configfile /linux/linux.lst
boot
title       启动指尖操作系统 \n\t  进入指尖操作系统
map --mem /boot/os.lzma (hd)
map --hook
map (hd-1) (hd0)
map --hook
root (hd0,0)
chainloader /ntldr
title       GRUB4DOS 资源管理器  \n\t  GRUB4DOS 资源管理器
command /grub/automenu
boot
title       搜索硬盘 GHO 文件  \n\t  搜索硬盘 GHOST 备份文件
command /boot/usearth.bat cmd="echo %1" filpre="" ext=.gho dirext=1 subdir=2 devs="--devices=h" return="configfile"
boot
title       免密码直接进入本机操作系统  \n\t  可以在忘记操作系统登录密码时进入操作系统
map --mem /boot/KONBOOT.GZ (fd0)
map (hd0) (hd-1)
map (hd-1) (hd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title       清除WINDOWS操作系统密码  \n\t  清除操作系统密码PASSWORD CHANGER 5.0 DOS 版
map --mem /boot/PASSWORD.IMG (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title       进入 GRUB4DOS 命令行  \n\t  使用上下方向键选中并高亮一条菜单,按回车键或[B]键开始引导。\n\t  按[E]键在引导前编辑命令,或[C]键进入命令行。
commandline
title       重启计算机  \n\t  重新启动计算机
reboot
作者: mygamexxx    时间: 2013-11-6 18:29
本帖最后由 mygamexxx 于 2013-11-6 18:33 编辑

有劳不点兄了,我晚上值班,5点就吃过晚饭了,有时间测试。
作者: 2011yaya2007777    时间: 2013-11-6 18:34
本帖最后由 2011yaya2007777 于 2013-11-6 18:39 编辑

0.4.5c 的 fat16,fat32 分区引导代码需要安装,不能直接使用 winhex 等工具,建议使用 BOOTICE 。
如果 0x5d 处是 0xff (原始值),则把 0x64 的值(原始值是 00)赋给 dl ,作为驱动器号,然后保存到 0x40。
如果 0x5d 处是 00,则使用传入的 dl 值作为驱动器号,然后保存到 0x40。

19楼的引导代码是错误的,无论 BIOS 分配什么驱动器号,他始终使用 00 。

推断在明基笔记本上 BIOS 分配的驱动器号是 0x80。内存卡插入读卡器启动与手机启动可能不同,这已经在联想台式机得到验证。

拨出U盘后,显示内置菜单

菜单可以使用吗?

请确认 fat32 分区引导代码是位于 0 扇区 还是 0x7e00 ?


作者: mygamexxx    时间: 2013-11-6 18:37
本帖最后由 mygamexxx 于 2013-11-6 18:40 编辑
2011yaya2007777 发表于 2013-11-6 18:34
0.4.5c 的 fat16,fat32 分区引导代码需要安装,不能直接使用 winhex 等工具,建议使用 BOOTICE 。
如果 0 ...


进入硬盘的菜单可以使用,能成功启动硬盘。我一般都是用BOOTICE,对WINHEX不熟悉,一般是汉化软件时使用。

18-35-50.jpg (194.84 KB, 下载次数: 202)

18-35-50.jpg

作者: mygamexxx    时间: 2013-11-6 18:42
本帖最后由 mygamexxx 于 2013-11-6 18:44 编辑
2011yaya2007777 发表于 2013-11-6 18:34
0.4.5c 的 fat16,fat32 分区引导代码需要安装,不能直接使用 winhex 等工具,建议使用 BOOTICE 。
如果 0 ...


0扇区还是0x7e00我不太清楚,我是个菜鸟,搞化学的。
作者: 不点    时间: 2013-11-6 18:46
内置菜单用这个 debug off ,是犯规的。建议以后不要再做这样的事了。

导致死机的应该是以下两行:

root (fd0) || root (fd0,0) || root (hd0) || root (hd0,0) || root (hd0,2)
/boot/grub/hotkey

请删除(或注释掉),然后再试试。



作者: 2011yaya2007777    时间: 2013-11-6 18:53
内存卡插入读卡器,使用 winhex 查看:
工具 -> 打开磁盘 -> 从物理驱动器选择U盘 -> 确定
作者: mygamexxx    时间: 2013-11-6 18:54
不点 发表于 2013-11-6 18:46
内置菜单用这个 debug off ,是犯规的。建议以后不要再做这样的事了。

导致死机的应该是以下两行:


注释掉三行后,启动出内置菜单,进入命令行后,ls 返回Disk read error
作者: 不点    时间: 2013-11-6 18:56
本帖最后由 不点 于 2013-11-6 18:58 编辑

先敲入 geometry 命令,看看当前盘是哪个盘。

然后再敲入 root 命令,看看有什么信息。




作者: mygamexxx    时间: 2013-11-6 19:00
mygamexxx 发表于 2013-11-6 18:54
注释掉三行后,启动出内置菜单,进入命令行后,ls 返回Disk read error


内置卡插入读卡器。

1.jpg (131.67 KB, 下载次数: 192)

1.jpg

作者: mygamexxx    时间: 2013-11-6 19:05
本帖最后由 mygamexxx 于 2013-11-6 19:15 编辑
不点 发表于 2013-11-6 18:56
先敲入 geometry 命令,看看当前盘是哪个盘。

然后再敲入 root 命令,看看有什么信息。


先敲入 geometry 命令,看看当前盘是哪个盘。
0x00(CHS)
然后再敲入 root 命令,看看有什么信息。
Disk read error

c=1?有问题!!

20131106_190431.jpg (94.46 KB, 下载次数: 181)

20131106_190431.jpg

作者: 2011yaya2007777    时间: 2013-11-6 19:12
从 winhex 看,65 楼在最前面吗?使用 winhex 复制到新文件会重新编号。使用编辑器显示则不会重新编号。
作者: mygamexxx    时间: 2013-11-6 19:14
2011yaya2007777 发表于 2013-11-6 19:12
从 winhex 看,65 楼在最前面吗?使用 winhex 复制到新文件会重新编号。使用编辑器显示则不会重新编号。

是在WINHEX中截图的
作者: 不点    时间: 2013-11-6 19:15
当前盘是 fd0,这应该是错的。你是不是执行了 root (fd0) 命令?

再试试 geometry (0x80) 贴出完整的显示信息,它应该是你的 U 盘。然后用

ls (hd0)/
ls (hd0,0)/
ls (hd0,1)/
ls (hd0,2)/
ls (hd0,3)/

看看哪个能列出 U 盘文件?


作者: mygamexxx    时间: 2013-11-6 19:17
不点 发表于 2013-11-6 19:15
当前盘是 fd0,这应该是错的。你是不是执行了 root (fd0) 命令?

再试试 geometry (0x80) 贴出完整的显示 ...

就是上面的内置菜单,注释掉三行,没有执行root (fd0)
作者: 2011yaya2007777    时间: 2013-11-6 19:17
说详细一些,怎样截图的?
作者: mygamexxx    时间: 2013-11-6 19:20
本帖最后由 mygamexxx 于 2013-11-6 19:30 编辑
2011yaya2007777 发表于 2013-11-6 19:17
说详细一些,怎样截图的?


用WINHEX 磁盘编辑器菜单,打开U盘,截图

2.jpg (255.6 KB, 下载次数: 197)

2.jpg

作者: mygamexxx    时间: 2013-11-6 19:26
本帖最后由 mygamexxx 于 2013-11-6 19:28 编辑
不点 发表于 2013-11-6 19:15
当前盘是 fd0,这应该是错的。你是不是执行了 root (fd0) 命令?

再试试 geometry (0x80) 贴出完整的显示 ...


ls (hd0) 死机,geometry (0x80) 显示一行信息后死机,发现(0x80)的C值为966, 用读卡器的时候是967,刚好少了1, 这个1跑到(0x00)了,接近真相了。

20131106_192354.jpg (68.74 KB, 下载次数: 204)

20131106_192354.jpg

作者: 不点    时间: 2013-11-6 19:29
本帖最后由 不点 于 2013-11-6 19:32 编辑

好了,这就快抓住它了!

fd0 不是它,hd0 也不是它,那么

hd1 或 hd2 该是它了吧?

请你试试

geometry (hd1)
geometry (hd2)
geometry (hd3)


然后再用 ls 之类的命令访问它的文件。

如果都不是的,再试试:

geometry (fd1)
geometry (fd2)
geometry (fd3)


作者: 2011yaya2007777    时间: 2013-11-6 19:32
winhex 还有 “截图”选项?我怎么找不到。
作者: mygamexxx    时间: 2013-11-6 19:33
不点 发表于 2013-11-6 19:29
好了,这就快抓住它了!

fd0 不是它,hd0 也不是它,那么

hd1 是本地硬盘,hd2、hd3不存在,U盘是(fd0)+(hd0), 怪胎啊!!!
作者: mygamexxx    时间: 2013-11-6 19:36
2011yaya2007777 发表于 2013-11-6 19:32
winhex 还有 “截图”选项?我怎么找不到。

用QQ截图
作者: 不点    时间: 2013-11-6 19:38
它跑不掉的。

再试试

cat --hex (fd0)+1



cat --hex (hd0)+1

看看能否显示扇区数据?


作者: mygamexxx    时间: 2013-11-6 19:42
不点 发表于 2013-11-6 19:38
它跑不掉的。

再试试

cat --hex (fd0)+1
Disk read error
cat --hex (hd0)+1
Disk read error



作者: 不点    时间: 2013-11-6 19:46
本帖最后由 不点 于 2013-11-6 19:52 编辑

再试试:
cat --hex (fd1)+1
cat --hex (hd1)+1


继续试验:

重新启动,启动时快速、连续按 c 键,抢先进入命令行,越过内置菜单,进入命令行,再执行以上提到的各种命令,看看能否找到你的 U 盘。


作者: mygamexxx    时间: 2013-11-6 19:50
不点 发表于 2013-11-6 19:46
再试试:
cat --hex (fd1)+1
cat --hex (hd1)+1


Disk read error

20131106_193936.jpg (154.5 KB, 下载次数: 186)

20131106_193936.jpg

作者: 不点    时间: 2013-11-6 19:55
本帖最后由 不点 于 2013-11-6 20:01 编辑

继续试验:

重新启动,启动时快速、连续按 c 键,抢先进入命令行,越过内置菜单,进入命令行,再执行以上提到的各种命令,看看能否找到你的 U 盘。


另外,注意到 0x80 居然支持 LBA,这恐怕是个假象。

执行

geometry --tune (hd0)

来强制探测它的 CHS,看看输出什么信息?


作者: mygamexxx    时间: 2013-11-6 19:59
本帖最后由 mygamexxx 于 2013-11-6 20:02 编辑

内置菜单改为commandline,启动时狂按ESC。结果一样。

20131106_195945.jpg (148.04 KB, 下载次数: 188)

20131106_195945.jpg

作者: mygamexxx    时间: 2013-11-6 20:04
手机形成的U盘不稳定,经常需要重启手机,哎
作者: 不点    时间: 2013-11-6 20:06
另外,注意到 0x80 居然支持 LBA,这恐怕是个假象。

执行

geometry --tune (hd0)

来强制探测它的 CHS,看看输出什么信息?


启动时快速按 Insert 键,进入单步调试模式,贴出每一步显示的信息。

还有,换用 0.4.5c 的 grldr 来试验,看看结果如何。


作者: mygamexxx    时间: 2013-11-6 20:07
本帖最后由 mygamexxx 于 2013-11-6 20:11 编辑
不点 发表于 2013-11-6 20:06
另外,注意到 0x80 居然支持 LBA,这恐怕是个假象。

执行


geometry --tune (hd0) 好像死机状态, 风扇狂响。

DEBUG BOOT selected ......
0x27e<1 press key (common.c.367)>
Get upper memory... 0xfc00<2 press key (common.c.372)>
_
作者: 不点    时间: 2013-11-6 20:12
用 chenall 的 bios 外部命令,执行汇编指令,分别用 chs 模式和 lba 模式读 hd0 的第一扇区,看看是不是 chs 模式成功,而 LBA 模式失败?

换用 两个月前的 grldr 来试验,看看问题是否消失了?


作者: mygamexxx    时间: 2013-11-6 20:19
本帖最后由 mygamexxx 于 2013-11-6 20:21 编辑
不点 发表于 2013-11-6 20:12
用 chenall 的 bios 外部命令,执行汇编指令,分别用 chs 模式和 lba 模式读 hd0 的第一扇区,看看是不是 c ...


2013-07-24的0.4.6a的grld,现象相同。
0.4.5c的分区引导记录,2013-10-30的0.4.5c的grldr,disk error
作者: 不点    时间: 2013-11-6 20:23
好了,先告一段落,我再仔细研究一下,然后再来试验。

你可以先休息了。


作者: mygamexxx    时间: 2013-11-6 22:04
本帖最后由 mygamexxx 于 2013-11-6 22:22 编辑

又再测试了一下:
内存卡用手机格式化,0x1C为00,0x5D为FF
内存卡用读卡器在WIN7下格式化,0x1C为3F,0x5D为00

手机U盘一个奇怪的现象,在我的电脑中看不到U盘,但fbinstool和BOOTICE却能看到,托盘的安全删除硬件也能看到U盘。

1.jpg (45.06 KB, 下载次数: 201)

1.jpg

2.jpg (25.08 KB, 下载次数: 189)

2.jpg

3.jpg (54.54 KB, 下载次数: 179)

3.jpg

4.jpg (104.77 KB, 下载次数: 201)

4.jpg

5.jpg (41.94 KB, 下载次数: 182)

5.jpg

作者: mygamexxx    时间: 2013-11-6 22:35
本帖最后由 mygamexxx 于 2013-11-6 22:53 编辑

手机格式化内存卡,用BOOTICE写入grub4dos分区引导记录,0X1C为00, 0X5D为FF,启动明基笔记本, disk error。
改0X5D为00, 启动明基笔记本,加载USB驱动成功,ls 能显示U盘内容,但启动0PE时在加载SRS时卡住。find在显示(fd0)后卡住,死机状。不加载USB驱动,ls 返回Disk read error。

加载USB驱动成功后,hd1是本地硬盘,fd0是U盘, hd0不知是什么,一访问hd0就死机。fd0的C/H/S也与读卡器格式化的不一样。见下图:

20131106_222846.jpg (130.24 KB, 下载次数: 197)

20131106_222846.jpg

1.jpg (131.79 KB, 下载次数: 179)

1.jpg

作者: 2011yaya2007777    时间: 2013-11-7 07:46
无论怎样格式化,0X5D 都应当修改为 00。

内存卡用手机格式化,是 FDD 模式。内存卡用读卡器在WIN7下格式化,是 HDD 模式。这是 2 个不同的模式,最好分别讨论。

看来手机升级后,外置卡仍然被 BIOS 分配驱动器号 00 及 0x80。

0X5D为FF,启动明基笔记本, disk error。改0X5D为00, 启动明基笔记本,加载USB驱动成功

说明明基笔记本是以 0x80 启动的。
升级前,以 00 启动,之后 00 不可用,0x80 可用。
升级后,以 0x80 启动,之后 0x80 不可用,00 可用。

作者: 不点    时间: 2013-11-7 09:16
mygamexxx 在 23 楼说:
手机形成的U盘不稳定,经常出现在我的电脑上看不到U盘的情况,特别是经过实模式的启动操作。因为如果WINDOWS启动成功后插入,再重新插拨或插拨到其他电脑上,认不到U盘的现象很少。


我理解为,这就证明 Windows 对 U 盘进行了写入操作。它可能写入(并改变)了扇区数据,也可能只是修改了 U 盘的控制器硬件。想象一下,恶意的主板制造商可以这样:当 U 盘启动时,在某个地方作个记号,让下次启动不正常(出现异常)。为了隐藏这个秘密,也不一定是下次,说不定是一个 “倒计数” 的控制方法,每次启动,“允许正常启动” 的计数器计数器就减一,当这个 “允许正常启动” 的计数器变为 0 时,就让启动失败。只要主板想让你失败,你 “蹦蹦日天” 也别想活。它不提供正常的 BIOS 服务了,你怎么活?而 Windows 只要一启动,在 Windows 下插拔一下 U 盘,Windows 就可能把 U 盘上的 “允许正常启动” 的计数器调整到原始状态,从而能够正常启动。这样就控制了 USB 设备不能脱离 Windows 而正常启动。

这只是瞎猜,仅仅是想到了这样一个可能性而已。


作者: Pauly    时间: 2013-11-7 10:05
不点 发表于 2013-11-7 09:16
mygamexxx 在 23 楼说:

我认为这应该是手机固件的问题,与电脑没有任何关系。
作者: 不点    时间: 2013-11-7 10:23
Pauly 说的不错,我有些糊涂,竟然没想到这个。假如手机固件制造不兼容,那就同样是无解的。当然,不一定是故意,也可能是不经意的 bug。
作者: 2011yaya2007777    时间: 2013-11-7 11:55
以91楼环境为条件讨论:
不加载USB驱动,ls 返回Disk read error。

那 ls (fd0)/ , ls (hd0)/ , ls (hd1)/ 各是什么?

加载USB驱动成功,ls 能显示U盘内容,但启动0PE时在加载SRS时卡住。find在显示(fd0)后卡住,死机状。

从截图看,并没有在(fd0)后卡住。
有帖子提示,加载0pe时按空格键试一试。
作者: 不点    时间: 2013-11-7 12:00
我有一个疑问,启动盘为何是软盘 fd0?它能够读取 grldr 文件,此时的盘号 DL 不是 00,而应该是 0x80 才对。 BPB 的 0x5D 处为 0xFF 时,就是强制以 DL=0 来启动。偏移 0x5D 处为其它值时,DL 保持不变,是 BIOS 传入的值。

从启动后的当前盘号为 00 来看,BIOS 也传入的是 00。矛盾啊!强制以 DL=00 来启动,反而不能启动;让它以 BIOS 传入的值来启动,它能启动,而此时仍然是 DL=0。这不就怪了?怪事很多,但首先要弄明白的是这个怪事。yaya 能给出一个猜测或解释吗?


作者: mygamexxx    时间: 2013-11-7 13:35
2011yaya2007777 发表于 2013-11-7 11:55
以91楼环境为条件讨论:

那 ls (fd0)/ , ls (hd0)/ , ls (hd1)/ 各是什么?

find 在(fd0)后卡住,后面的盘符是拨出U盘后出现的
作者: hhh333    时间: 2013-11-7 14:01
本帖最后由 hhh333 于 2013-11-7 14:02 编辑

再反馈一个事,前述isolinux转grldr有问题,经过yaya的努力解决了,这次用USBHDD+方式做了一个U盘,syslinux作一启,再转grldr失败了,不出菜单,假死状态,将U盘拔一下再插入菜单就出来了,不知何故?换回4.5C没有问题。
作者: pseudo    时间: 2013-11-7 14:06
mygamexxx 发表于 2013-11-6 22:35
手机格式化内存卡,用BOOTICE写入grub4dos分区引导记录,0X1C为00, 0X5D为FF,启动明基笔记本, disk error。 ...
hd0不知是什么,一访问hd0就死机。

注意更新0pe版本。

grldr内置菜单中显式访问hd0的这行
if exist (hd0)/0PE/0PENB.LZMA rootnoverify (hd0) && goto 2
早已被注释掉。





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