无忧启动论坛

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

[求助] 更新grub4dos-0.4.6a-2013-06-30版 我的UD盘无法启动了

  [复制链接]
211#
发表于 2013-9-27 15:53:53 | 只看该作者
4G的内存卡,

189l楼显示,卡容量为 0xeca000 扇区,7.39Gb

还有win8pe.iso进入桌面不见U盘了,其它盘符正常

我在winxppe,win7pe,win8pe测试,均能看见u盘可见分区,正常分配盘符。winxp及以后版本,启动后不使用BIOS中断,对于usb有他自己的保护模式驱动。
回复

使用道具 举报

212#
发表于 2013-9-27 16:03:32 | 只看该作者
不试试 cat --hex (fd0)+1 ,就不能判定问题的实质。

140楼测试后返回 “ Disk read error ”

0.4.5c找不到map的UDF光盘上的文件

0.4.5c版本没有UDF支持
回复

使用道具 举报

213#
发表于 2013-9-27 18:44:34 | 只看该作者
cat --hex (fd0)+1 返回 Disk read error,说明软盘 fd0 的 int13 接口不存在。正如前面所说,有可能被 BIOS 厂家定向破坏了(即,首先识别开源软件,确定无误后,就实施破坏)。也有可能 fd0 本来就不存在,是个虚假的软盘设备。

直接用 0.4.5c 试验,看看结果有什么不同。

点评

0.4.5c启动不成功,无法进入命令行,显示disk error  详情 回复 发表于 2013-9-27 20:12
回复

使用道具 举报

214#
发表于 2013-9-27 20:12:25 来自手机 | 只看该作者
本帖最后由 mygamexxx 于 2013-9-27 20:15 编辑
不点 发表于 2013-9-27 18:44
cat --hex (fd0)+1 返回 Disk read error,说明软盘 fd0 的 int13 接口不存在。正如前面所说,有可能被 BIO ...


0.4.5c启动不成功,无法进入命令行,显示disk error
如果fd0是内置卡,在windows下也无法识别。
回复

使用道具 举报

215#
发表于 2013-9-27 21:06:44 | 只看该作者
你的意思是说,根本就不能启动,也就是说,int13 接口不存在。那就当成 BIOS 被取缔一样看待好了。

DOS、syslinux 都不能启动,是吧?

点评

DOS 无法启动,SYSLINUX必须加读扇区速度为1才能成功启动,否则死机。  详情 回复 发表于 2013-9-28 11:59
回复

使用道具 举报

216#
 楼主| 发表于 2013-9-27 21:41:31 | 只看该作者
本帖最后由 xyzxp 于 2013-9-27 21:51 编辑

我的win8pe.iso在U盘可见区!加载USB驱动启动后就是没有了U盘,无语了。

补充:不过同目录里还有win7pe.iso,启动后分配盘符;xppe;2003pe.iso在UD区也可以分配盘符。问题是为什么加载USB驱动后win8pe没有U盘,不加载又正常!或者PE有问题?

回复

使用道具 举报

217#
发表于 2013-9-27 22:33:52 | 只看该作者
我刚才加载usb驱动测试,win8pe.iso在UD可见区,启动到win8pe,分配了盘符。我估计是你那个win8pe有问题。如果是usb驱动的问题,那XP,win7就不会在你的电脑上分配盘符了。

我觉得 find 命令对 fd0 分区的分区表判断有缺陷,使得没有分区表的软盘模式出现 fd0,0 ... 子类的信息。不过不影响程序执行,不算大问题,可以不理睬。不点指点一下,find 命令在何处?
回复

使用道具 举报

218#
发表于 2013-9-28 05:11:53 | 只看该作者
find 命令在 builtins.c 中。find 没有检查分区表合法性。

geometry 命令能够检查分区表合法性,你可以参考一下。函数 probe_mbr () 就是检查分区表合法性的。


另外,恶意的 BIOS 可能会怎样攻击 grub4dos ?我想到了如下一点,供开发人员参考。

grub4dos 在访问磁盘之前,首先要探测几何参数 和 LBA 支持情况。如果 int13/ah=41h 返回的信息表明 LBA 存在,那么就用 LBA 来访问磁盘,永远不使用 CHS。当支持 LBA 时,磁盘几何参数 CHS 可能是不正确的,因为此时不再调用 geometry_tune 来探测 CHS 的值。

如果恶意 BIOS 对 grub4dos 进行攻击,它有可能让 int13/ah=41h 返回支持 LBA 的虚假信息,但实际上不支持 LBA。由于 grub4dos 被 BIOS 欺骗,所以总是用 LBA 访问磁盘,结果也就总是失败。
回复

使用道具 举报

219#
发表于 2013-9-28 11:31:09 | 只看该作者
谈一点关于拦截int15的体会。
曾经使用int15把驱动加载到内存顶端的空闲处,然后启动DOS,没有问题。但是启动windows则蓝屏。如果把驱动加载到内存低端(3Mb),启动windows就正常。所以猜测,windows启动初始,通过int15检查他自己使用的空间是否被占用,如果被占用,则出现问题(当然人性化一点,应当提示错误信息然后退出)。
回复

使用道具 举报

220#
发表于 2013-9-28 11:59:15 | 只看该作者
本帖最后由 mygamexxx 于 2013-9-28 12:35 编辑
不点 发表于 2013-9-27 21:06
你的意思是说,根本就不能启动,也就是说,int13 接口不存在。那就当成 BIOS 被取缔一样看待好了。

DOS、 ...


DOS 无法启动成功(指有显示了,但死机),SYSLINUX必须加读扇区速度为1才能成功启动,否则死机。但GRUB4DOS分区引导记录能找到0.4.6a的grldr,并进行引导,不加载驱动可以进入命令行,但对U盘读取错误,应该是0.4.5c发现磁盘读取错误就显示disk error吧。
回复

使用道具 举报

221#
发表于 2013-9-28 17:19:43 | 只看该作者
本帖最后由 2011yaya2007777 于 2013-11-1 16:12 编辑

从没有分区表的磁盘启动,不将驱动器号00映射为硬盘号。
在我的电脑测试,不映射正常,映射则死在grldr初始化阶段。
请mygamexxx 测试一下。

点评

需要测试什么?  详情 回复 发表于 2013-9-29 09:34
回复

使用道具 举报

222#
发表于 2013-9-28 18:42:58 | 只看该作者
DOS 无法启动成功(指有显示了,但死机),SYSLINUX必须加读扇区速度为1才能成功启动,否则死机。但GRUB4DOS分区引导记录能找到0.4.6a的grldr,并进行引导,不加载驱动可以进入命令行,但对U盘读取错误,应该是0.4.5c发现磁盘读取错误就显示disk error吧。


这段话最关键的一点是:grub4dos 的分区引导记录能够成功引导 GRLDR。有这句话,其本质就明朗了:BIOS 只是有毛病而已。INT13 还能正常运转。不过由于不支持 LBA,所以,访问的扇区数目比较小。以前有过大量的讨论。解决办法是,尽量让启动文件都位于靠近磁盘的开头。

回复

使用道具 举报

223#
发表于 2013-9-29 09:34:37 来自手机 | 只看该作者
2011yaya2007777 发表于 2013-9-28 17:19
从没有分区表的磁盘启动,不将驱动器号00映射为硬盘号。
在我的电脑测试,不映射正常,映射则死在grldr初始 ...

需要测试什么?
回复

使用道具 举报

224#
发表于 2013-9-29 10:37:26 | 只看该作者
测试一下224楼的grldr从你的手机启动情况。

点评

grub4dos 分区引导记录,引导根目录下grldr,内置菜单commandline, 自动加载USB驱动,进入命令行。 root (hd0) map --mem /0pe/0pe.iso (0xff) map --hook chainloader (0xff) boot 成功启动0PE。  详情 回复 发表于 2013-9-29 11:57
回复

使用道具 举报

225#
发表于 2013-9-29 11:57:06 | 只看该作者
2011yaya2007777 发表于 2013-9-29 10:37
测试一下224楼的grldr从你的手机启动情况。


grub4dos 分区引导记录,引导U盘根目录下grldr,内置菜单commandline, 自动加载USB驱动,进入命令行。
root (hd0)
map --mem /0pe/0pe.iso (0xff)
map --hook
chainloader (0xff)
boot
成功启动0PE。
回复

使用道具 举报

226#
发表于 2013-9-29 12:04:16 | 只看该作者
本帖最后由 mygamexxx 于 2013-9-29 12:08 编辑

grub4dos 分区引导记录,引导U盘根目录下grldr,内置菜单commandline, 自动加载USB驱动,进入命令行。
find 列出(fd0)(hd0,0)(hd0,1)(hd0,2)(hd0,3)(hd1,0)(hd1,4)(hd1,5)(hd1,6)(hd1,7)
root (hd0)
find 列出(hd0,0)(hd0,1)(hd0,2)(hd0,3)(hd1,0)(hd1,4)(hd1,5)(hd1,6)(hd1,7)
find --devices=h /0pe/0pe.iso 死机。

grub4dos 分区引导记录,引导U盘根目录下grldr,内置菜单commandline, 按空格不加载USB驱动,进入命令行。
find 死机。拨出U盘,列出(fd0)(hd1,0)(hd1,4)(hd1,5)(hd1,6)(hd1,7)

回复

使用道具 举报

227#
发表于 2013-9-29 12:28:23 | 只看该作者
本帖最后由 mygamexxx 于 2013-9-29 13:18 编辑

SYSLINUX分区引导记录,加读扇区速度1参数。分下列几种情况测试:
1、引导U盘/boot/grub/grldr,自动加载USB驱动、按空格不加载USB驱动,均死在Begin pxe scan...
2、引导plpbt,再引导U盘/boot/grub/grldr,自动加载USB驱动,死在Begin pxe scan...

3、引导plpbt,再引导U盘/boot/grub/grldr,按空格不加载USB驱动,进入命令行。
find 列出(hd0,0)(hd0,1)(hd0,2)(hd2,0)(hd2,4)(hd2,5)(hd2,6)(hd2,7)
root ( TAB补全,列出 fd0  hd0  hd2 rd
find --devices=h /0pe/0pe.iso 列出 (hd0,2) (hd2,6) (hd2,7)
root (hd0,2)
map --mem /0pe/0pe.iso (0xff)
map --hook
chainloader (0xff)
boot
成功启动0PE。

命令行下
ls  (hd0)/ 和ls (hd0,2)/  均列出 U盘内的文件。看样子plpbt 可以将无主引导U盘同时映射为(hd0)和(hd0,2)。
ls (hd0,0)/ 和ls (hd0,1)/ 均返回无法挂载所选分区。
cat (hd0)+1 和cat (hd0,2)+1 均返回11个字符,最后8个是MSWIN4.1        与GRUB4DOS分区引导记录,引导U盘根目录grldr,自动加载USB驱动,进入命令行后cat (hd0)+1相同。
加载PLPBT 后,引导grldr, 不加载USB驱动,root 在(hd0,0),命令行下root 和root (hd0,0)返回的均是无法挂载所选分区
GRUB4DOS分区引导记录,引导grldr,自动加载USB驱动,root  在 (fd0),命令行下 root 和root (hd0,0)返回的均是磁盘读取错误

可能由于加载PLPBT,root 在(hd0,0),对于不存在的(hd0,0)和(hd0,1)根本不挂载,所以find --devices=h /0pe/0pe.iso 可以顺利运行并找到(hd0,2)内的盘文件,find不查找(hd0).
而GRUB4DOS分区引导记录,引导grldr,自动加载USB驱动,root在(fd0),对于不存在的(hd0,0)(hd0,1)(hd0,2)进行了挂载,并无法读取,导致find --devices=h /0pe/0pe.iso 运行后死机。
回复

使用道具 举报

228#
发表于 2013-9-29 13:14:38 | 只看该作者
感谢mygamexxx 的测试及反馈。
“GRUB4DOS分区引导记录,引导grldr,自动加载USB驱动”,从内置菜单进入命令行,执行
read 0x410
read 0x475
read 0x8280
read 0x82a0
返回以上数值

calc *0x413&0xffff*2    比如返回  0x4f2
cat --hex (md)0x4f2+1  截图
cat --hex (fd0)+1   截图
cat --hex (hd0)+1  截图
cat --hex (hd1)+1 截图

点评

read 0x410 返回 0x79004227 read 0x475 返回 0x14000002 read 0x8280 返回 0x0 read 0x82a0 返回 0x0 calc *0x413&0xffff*2 返回 1266 HEX:0x4F2  详情 回复 发表于 2013-9-29 13:23
回复

使用道具 举报

229#
发表于 2013-9-29 13:23:50 | 只看该作者
本帖最后由 mygamexxx 于 2013-9-29 13:47 编辑
2011yaya2007777 发表于 2013-9-29 13:14
感谢mygamexxx 的测试及反馈。
“GRUB4DOS分区引导记录,引导grldr,自动加载USB驱动”,从内置菜单进入命 ...


read 0x410 返回 0x79004227
read 0x475 返回 0x14000002
read 0x8280 返回 0x0
read 0x82a0 返回 0x0
calc *0x413&0xffff*2 返回 1266 HEX:0x4F2

cat --hex (md)0x4f2+1 只与189的图片差第一行前2字符,原E9 ED现在E9 EB,000001D0行前3字符,原00 00 00 现在00 A0 E0
cat --hex (fd0)+1 返回磁盘读取错误
cat --hex (hd0)+1 与189楼相同
cat --hex (hd1)+1

回复

使用道具 举报

230#
发表于 2013-9-29 14:00:17 | 只看该作者
本帖最后由 2011yaya2007777 于 2013-9-29 14:14 编辑

cat --hex (md)0x4f2+1 的0x1cc 是 80 02 吗?
可以的话,把尾部那张截图贴上来。

点评

确认是80 02  详情 回复 发表于 2013-9-29 16:22
回复

使用道具 举报

231#
发表于 2013-9-29 16:22:24 | 只看该作者
本帖最后由 mygamexxx 于 2013-9-29 16:28 编辑
2011yaya2007777 发表于 2013-9-29 14:00
cat --hex (md)0x4f2+1 的0x1cc 是 80 02 吗?
可以的话,把尾部那张截图贴上来。


确认是80 02

20130929_162312.jpg (166.81 KB, 下载次数: 122)

20130929_162312.jpg
回复

使用道具 举报

232#
发表于 2013-9-29 16:50:06 | 只看该作者
看到了,需要分析一下。
回复

使用道具 举报

233#
发表于 2013-9-29 20:35:21 | 只看该作者
本帖最后由 mygamexxx 于 2013-9-29 21:39 编辑

0.4.6a
在家里的台式机上,grub4dos分区引导记录加载grldr,无提示信息,只一个光标。
SYSLINUX分区引导记录,加载grldr,自动加载驱动,显示0 1 3 4 5驱动加载成功,但死在Begin pxe scan...,不加载驱动,进入命令行,root 为(fd0,0),但U盘文件在(fd0)。

0.4.5c
在家里的台式机上,grub4dos分区引导记录加载grldr,进入命令行,root 为(fd0),U盘文件也在(fd0).
回复

使用道具 举报

234#
发表于 2013-9-30 07:01:21 | 只看该作者
从截图分析,单位那台电脑有2个usb设备。
ID1,有2个LUN,猜测是读卡器,有2个插槽。
ID2,有2个LUN,其中LUN0是外置卡,而LUN1是内置卡。

外置卡分配驱动器号0x80,硬盘分配驱动器号0x81,启动驱动器号是00,他应当是内置卡了。

启动驱动器号是00,说明他从fd0启动,并且可以加载grldr。加载usb驱动后,再与其通讯,LUN1即返回代码0x49,表示设备停止,传输失败,不能读内置卡了(注意,不是usb驱动出了问题,windows也不能与其通讯)。难道内置卡有加载grldr的引导代码?曾经格式化过内置卡?没有的话,如何从fd0启动到grldr的?

家里的电脑,0.4.6a可以从SYSLINUX分区引导记录加载成功,那在grub4dos分区引导记录也应当能加载成功,无提示信息就更怪了,可以多试验几次,或者看看分区引导代码是分有问题。如果选择0.4.6a的分区引导代码,要选择不加载usb选项(即不要从分区启动扇区加载,而要从grldr加载。因为从分区启动扇区加载,需要在分区启动扇区之后,有usb驱动代码,你的外置卡无法安装)。

点评

内置卡在手机主板中,没有特殊格式化。  详情 回复 发表于 2013-9-30 08:01
回复

使用道具 举报

235#
发表于 2013-9-30 08:01:04 | 只看该作者
本帖最后由 mygamexxx 于 2013-9-30 12:32 编辑
2011yaya2007777 发表于 2013-9-30 07:01
从截图分析,单位那台电脑有2个usb设备。
ID1,有2个LUN,猜测是读卡器,有2个插槽。
ID2,有2个LUN,其中 ...


内置卡在手机主板中,没有特殊格式化。单位笔记本电脑中有4个USB接口,一个插手机用于启动,一个插USB鼠标,其他无设备。另外该笔记本电脑中有一个内置的读卡器,读卡器中无设备。
单位的联想台式电脑,GRUB4DOS分区引导记录,引导grldr,自动加载USB驱动失败,自动进入命令行,但键盘失去响应。不加载USB驱动,进入命令行,root 在 (fd0),ls 显示U盘文件在(fd0),启动U盘上的0PE成功。

另外,加载驱动后,单位的笔记本电脑为什么root不从(fd0),转到(hd0)。因为root (hd0)后,再find,已经没有(fd0),说明(fd0)应该已经不存在。

"启动驱动器号是00,说明他从fd0启动,并且可以加载grldr。加载usb驱动后,再与其通讯,LUN1即返回代码0x49,表示设备停止,传输失败,不能读内置卡了"这一句是否可以这样解释:启动时从fd0,加载USB驱动后,fd0变成了hd0,并且软盘数设为0,因此再与fd0通讯,肯定是设备已停止,传输失败。是否说明0.4.6a的grldr在加载USB驱动后的root的变化没有更改,导致此现象。

另外,是否能加载USB驱动后将(hd0)映射成与plpbt相似的(hd0,x)的形式,因为find命令对(hd0)是忽略的。

点评

家里的台式电脑,grub4dos 分区引导记录用BOOTICE写入0.4.6a,识别为软盘时加载和总是加载,启动后均只有一个光标在闪;不加载,启动后显示NO GRLDR  详情 回复 发表于 2013-9-30 21:58
回复

使用道具 举报

236#
发表于 2013-9-30 21:58:37 来自手机 | 只看该作者
mygamexxx 发表于 2013-9-30 08:01
内置卡在手机主板中,没有特殊格式化。单位笔记本电脑中有4个USB接口,一个插手机用于启动,一个插USB鼠 ...

家里的台式电脑,grub4dos
分区引导记录用BOOTICE写入0.4.6a,识别为软盘时加载和总是加载,启动后均只有一个光标在闪;不加载,启动后显示NO GRLDR
回复

使用道具 举报

237#
发表于 2013-10-3 10:25:09 | 只看该作者
我的也会。在第三张图那里。一直闪烁很久才进入界面。。但是我不明白为什么会有第二张图的界面出来。以前的都没有……
回复

使用道具 举报

238#
发表于 2013-10-7 17:32:18 | 只看该作者
我的也会。在第三张图那里。一直闪烁很久才进入界面。。

是指140楼的截图吗?轻易不要读软盘,可以使用参数指定查找硬盘,或者使用参数排除软盘。
回复

使用道具 举报

239#
发表于 2013-10-7 18:38:26 | 只看该作者
另外,加载驱动后,单位的笔记本电脑为什么root不从(fd0),转到(hd0)。因为root (hd0)后,再find,已经没有(fd0),说明(fd0)应该已经不存在。

"启动驱动器号是00,说明他从fd0启动,并且可以加载grldr。加载usb驱动后,再与其通讯,LUN1即返回代码0x49,表示设备停止,传输失败,不能读内置卡了"这一句是否可以这样解释:启动时从fd0,加载USB驱动后,fd0变成了hd0,并且软盘数设为0,因此再与fd0通讯,肯定是设备已停止,传输失败。是否说明0.4.6a的grldr在加载USB驱动后的root的变化没有更改,导致此现象。

没有改变 BIOS分 配的驱动器号。
外置卡 ID2:LUN0 读 MBR 成功,并且与 BIOS 读 0x80 返回的 MBR 相同,因此通过拦截 int13 ,当程序读 0x80 时,改为读 ID2:LUN0 。
你的电脑 BIOS 从 fd0 启动,这是内置卡?它怎么可以加载 grldr ?令人费解!或许此 BIOS 同时把外置卡分配驱动器号 00 及 0x80,它自己可以读 00,但禁止其他设备读 00,也许这是比较合理的解释。由于没有改变引导驱动器号,仍然是 00,然而 00 又不可读,所以导致 root 或 root (fd0) 失败。
没有将 0x410 处的软盘数设置为零。

单位的联想台式电脑,GRUB4DOS分区引导记录,引导grldr,自动加载USB驱动失败,自动进入命令行,

失败时返回数字是什么?

另外,是否能加载USB驱动后将(hd0)映射成与plpbt相似的(hd0,x)的形式,因为find命令对(hd0)是忽略的。

我不主张将没有分区表的软盘模式映射为硬盘,更不应该无中生有地制造出一个分区。

家里的台式电脑,grub4dos
分区引导记录用BOOTICE写入0.4.6a,识别。为软盘时加载和总是加载,启动后均只有一个光标在闪;不加载,启动后显示NO GRLDR

首先解决不加载,显示 NO GRLDR 的问题。 是否 grldr 的位置超出实模式寻址范围?
由于 grldr 内部已经有 usb 驱动代码,请在分区引导代码安装 0.4.6a 时选择“不加载”。因为你的硬盘不重新格式化,保留扇区数不足以安装 usb 驱动代码,BOOTICE 并没有写入,此时分区引导代码加载 usb 驱动时,实际加载了无效代码,导致死机。

点评

单位的联想台式电脑,BOOTICE1.2.0版,写入GRUB4DOS分区引导记录,选择不加载USB驱动,引导grldr,自动加载USB驱动失败,显示的数字是0123, 加载内置菜单成功,但键盘失去响应。  详情 回复 发表于 2013-10-8 12:41
回复

使用道具 举报

240#
发表于 2013-10-8 12:41:37 | 只看该作者
本帖最后由 mygamexxx 于 2013-10-8 12:45 编辑
2011yaya2007777 发表于 2013-10-7 18:38
没有改变 BIOS分 配的驱动器号。
外置卡 ID2:LUN0 读 MBR 成功,并且与 BIOS 读 0x80 返回的 MBR 相同, ...


单位的联想台式电脑,BOOTICE1.2.0版,写入GRUB4DOS分区引导记录,选择不加载USB驱动,引导grldr,自动加载USB驱动失败,显示的数字是0123, 加载内置菜单成功,但键盘失去响应。

首先解决不加载,显示 NO GRLDR 的问题。 是否 grldr 的位置超出实模式寻址范围?
如何来确认grldr的位置是否超出实模式寻址范围?

find --devices=h /0pe/0pe.iso 死机的原因是什么,因为已经限定在硬盘摸索,还是出现死机。

回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-16 08:33

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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