Board logo

标题: [求助]用不点最新测试版grub制作usb启动盘的一些困惑 [打印本页]

作者: lmle     时间: 2008-5-24 13:16    标题: [求助]用不点最新测试版grub制作usb启动盘的一些困惑

我一直都是用IO+grub的方式制作的,大部分电脑能启动。但有一批同方的老机,要么自检完在Verifying DMI Pool Data...就过不去了,要么读msdos.sys出错,或找不到command.com什么的(明明是有的)(注:用了许多不同的U盘,不同的方法制作)。看了不点大师的新版grub更新说明,又有了新希望,可替换后,问题依旧。请问:
    1、如果用IO+grub的方式,我想“自动探测磁盘几何参数”功能不会起作用吧,因为grub还没启动。
    2、如果写入MBR,“自动探测磁盘几何参数”会起作用吗? grub的更新是不是也要更新MBR?如果要更新的话,怎样用grubinstall.exe更新?
期待您的帮忙,谢谢!
作者: 不点     时间: 2008-5-24 13:50
“自动探测磁盘几何参数”这个功能主要就是用来对付 U 盘的,目的是解决不同的主板规定了不同的U盘几何参数的问题。谢谢跟踪测试。

在以前,有些人能启动到 DOS,但是,当启动 GRUB.exe 时,虽然能进入 grub 环境,但却不能识别 U 盘上的文件。这其中的一部分原因,就是因为 GRUB 所调用的 BIOS 对 U 盘规定了不正确的 CHS 参数(就是说,BIOS有BUG)。在这种情况下,“自动探测磁盘几何参数”的新功能,也有可能起到作用的。

现在回答你的问题:

1. 如果你还没有启动到 grub 就死机了,那样的死机当然与 grub 无关。这一点你自己一定要先弄清楚。当你确定你的 DOS 无法启动时,你可以用 bootlace 安装 grldr 的引导扇区到你的 U 盘 MBR 上,在理想的情况下,这应该可以成功启动到 grub 环境。

2. 写入 MBR 的 GRLDR 引导代码,是具有“自动探测磁盘几何参数”的功能的。你需要安装到 mbr,因为在 mbr 上的代码也需要“自动探测磁盘几何参数”的功能,以便搜索得到 grldr 文件。此功能是刚刚加入的,所以,grubinst 不一定也加入了此功能。所以,还是用 bootlace 吧。你可以在别的某个机器上用 U盘启动到 DOS,然后用 bootlace 安装。

补充:不要在 U 盘上安装和使用 boot.ini 的启动方式,因为这种方式启动的 grldr 是没有“自动探测磁盘几何参数”功能的,因此启动可能会失败。你可以在 U 盘安装 bootmgr 的方式来启动 grldr.mbr,并且这个 grldr.mbr 应该也是随 grub4dos 一起发布的,即,具有“自动探测磁盘几何参数”功能的。
作者: lmle     时间: 2008-5-24 15:01
非常感谢不点大师亲自回答!
我是一个学校的网管,要接触新老很多电脑,用您的新版grub解决了一批能进grub却近不了PE的电脑,谢谢。现在只剩最后一批进不了dos的电脑了。
我使用grub不久,不清楚bootlace.com的用法。我用u盘进dos后,显示为c。是直接用bootlace.com 0x80呢,还是要加参数调用grldr.mbr?明白后马上测试。
作者: 不点     时间: 2008-5-24 15:38
如果你的 U 盘是 C:,那么你就直接用 bootlace.com 0x80,然后把 grldr 放到 u 盘根目录。bootlace 应该也是新的,否则老版本没有磁盘参数自适应功能。
作者: lmle     时间: 2008-5-24 15:46
我的U盘是falshboot制作的,运行bootlace.com 0x80后出错:
Error: Invalid partition table. Must spedify --floppy explicitly for floppy.
我猜想:u盘启动的DOS显示的C:应该不是真实的U盘吧(可能是内存盘?里面的内容是U盘的文件),dos不认识U盘啊。
现在我该怎么做啊?

[ Last edited by lmle on 2008-5-24 at 03:48 PM ]
作者: 不点     时间: 2008-5-24 16:12
这个问题不严重。你大胆试验便可。

U盘启动后,BIOS 已经把 C: 这个盘符赋予你的 U 盘了,你可以在 DOS 下用 dir C: 列出你的 U 盘的内容,这样你就能够核实一下这个 C: 盘究竟是不是你的 U 盘。

首先把你的 U 盘中的重要东西备份到别处,因为你得重新分区、格式化它。

好了,准备好了之后,你用 U 盘启动到 DOS,用 DOS 的 FDISK 对这个 U 盘进行分区,分区时请尽量保持原来的分区布局和大小都不变。你需要先把 U 盘上的分区全都删除,然后再创建相同大小的分区。

注意,你一定要熟练使用 FDISK。千万不要把你的真实硬盘做掉了!

U 盘启动到 DOS 后,你使用 FDISK 时,C: 盘应该就是你的 U 盘。当你使用 FDISK 时,你可以根据 卷标、磁盘容量 等信息,确定你要做掉的 C 盘一定得是你的 U 盘,否则你不能继续做,免得你的硬盘被弄掉了。

FDISK 做完之后,你需要重启动才能继续。但是,注意你重启后只能先进入硬盘的 WINDOWS,而不是进入 U 盘,因为 U 盘还没有格式化,也没有 DOS。进入 WINDOWS 后,你可以在 Windows 下对这个 U 盘进行格式化的操作。同样注意不要弄错了盘符,导致你的硬盘被破坏。

完了之后,你再把 DOS 的系统文件如 io.sys, msdos.sys, command.com, sys.com, fdisk.exe,bootlace.com 等放到 U 盘根目录中,你也可以在这时就把 grldr 和 grub.exe 放进去。用 sys 命令把 DOS 安装到 U 盘,以便 DOS 能够启动。

好了,此时重启机器,选择从 U 盘启动 DOS,用 bootlace 0x80 把 U 盘的引导扇区改成 GRLDR 的,此时应该成功了,因为微软的 FDISK 所建立的分区表是标准的,可以被 bootlace 识别出来。

[ Last edited by 不点 on 2008-5-24 at 04:15 PM ]
作者: lmle     时间: 2008-5-24 20:21
不点大师辛苦了!
看来我知识太浅薄了,连fdisk都搞不定。第一次进U盘fdisk删除分区后,没有创建分区就推出了,再windows分区格式化,接着用flashboot重来。以后几次用fdisk删除分区后,却再也不能用fdisk创建分区,说是没有空余空间(是用fdisk删除分区并提示成功的),到windows后分区还在。
还有,重新分区后,进不了dos,windows又不能sys,还是不能写引导的。

[ Last edited by lmle on 2008-5-24 at 08:23 PM ]
作者: 不点     时间: 2008-5-24 21:57
你能否把 U 盘这个物理设备作为虚拟硬盘传给 VMWARE,在 VMWARE 中用 DOS 的 FDISK 来修理它?

你也可以这样做:

1. 把 U 盘按照扇区精确复制为一个 u.img 文件,注意里面应该有分区表。我听说有些 16 进制工具可以做到这一点,你找找看。

2. 把 u.img 传给 vmware,用 fdisk 和 format 等 dos 工具来操作。然后安装 grldr。注意不要用 flashboot,因为它写的分区表是错误的。

3. 把修理好的 u.img 再写回到 U 盘上。

在理想的情况下,这样的 U 盘就是万能启动的了。

[ Last edited by 不点 on 2008-5-24 at 10:12 PM ]
作者: lmle     时间: 2008-5-24 22:54
grub在笔记本中已成功启动!
请不点大师帮忙看一下,操作过程是否正确:我用PartitionMagic重新分区,再用grubinst_gui.exe写入grub引导,在grub中引导u盘的io.sys进入dos,然后用boolace写入新版的grub引导。
明早到学校测试老爷机。
作者: 不点     时间: 2008-5-24 23:15
没错,这样操作是对的。注意,千万不要用那些专有的工具来制作启动盘,那些专有工具,有的是有毛病的,有的是不通用的。甚至有些还故意制造不兼容,让U盘只能在某个品牌的机器上启动。一定要用那些通用工具来制作U盘,才不至于被人绑架。
作者: lmle     时间: 2008-5-24 23:48
能得到大师的亲自指导,倍感荣幸。最后还想在请教一个问题:
我的u盘在已测的三台电脑上都被认作hd0,会不会在其他一些电脑上被认作fd0或其他什么的?要不要在menu.lst里作一些特殊的写法?
呵呵,非常希望能一盘走天下啊!
作者: 不点     时间: 2008-5-25 00:09
当然有可能了,以前就有很多报道说,同一个U盘有的主板认成 C 盘,有的认成 A 盘。

如果用 grldr 启动,那么就有一个好处是,grldr 所在的磁盘分区,就成为了默认的 root 设备了,也就是说,你可以用不带设备名的 /.../.../filename 来表示 U 盘上的文件了。所以,不管U盘是 A 盘还是 C 盘,文件名问题就解决了。

另外,还有一个不为人知的技巧,就是 root 和 rootnoverify 命令。这两条命令的返回值,可以表示当前 的 root 设备是否是硬盘。

当返回值是 TRUE 时,表示当前的 root 设备是硬盘,反之,
当返回值是 FALSE 时,则表示当前的 root 设备是软盘。

举例来说,你想从 U 盘启动 grldr 而又希望能够放心地、可靠地启动硬盘上的 XP,就可以这样:
title boot XP in my real hard drive
rootnoverify && map (hd0) (hd1)
rootnoverify && map (hd1) (hd0)
rootnoverify && map --hook
find --set-root --ignore-floppies /ntldr
chainloader /ntldr
boot
下面我简单解释一下上面这个菜单。当你的 U 盘是硬盘时,就执行
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
目的是交换 (hd0) 和 (hd1),这样,你的真实硬盘将变成 (hd0) ,于是你才能成功启动 XP。
当 U 盘是软盘时,上述三条 map 就不会执行,于是你也能安全地启动你的硬盘上的 XP 了。

[ Last edited by 不点 on 2008-5-25 at 12:10 AM ]
作者: lmle     时间: 2008-5-25 10:50
测试了五种不同主板的电脑,只成功了两台,三台不成功的提示各不相同:
1、清华同方的一台提示:
           Missing MBR-helper.
2、acer的搜索不到grldr,可明明是有的啊。
3、一台联想的更怪,好像grub的mbr根本不存在一样,直接用根目录的io.sys启动了,删除io.sys后,说找不到系统了。

[ Last edited by lmle on 2008-5-25 at 11:32 AM ]
作者: 不点     时间: 2008-5-25 11:28


  Quote:
1、清华同方的一台提示:Missing MBR-helper.

很好!只要能显示这条信息,就说明我们的 MBR 代码已经起作用了。剩下的只是找出为何不能加载 MBR 上其余的引导扇区的原因了(肯定是 BIOS 的某个 BUG)。需要你继续配合测试,我们共同克服这个难关。虽然失败了,但这一形势已经处于我们的掌控之中了。如果不出所料,我们有望在最近几天或者几个礼拜就把它攻破。

由于你不能进入 DOS,所以,我们缺乏通常的 debug 调试手段。因此这一问题是迄今为止最难对付的问题了。我们只能依赖于不断修正和改变 U 盘上 MBR 的代码来进行调试了。我会仔细研究这个问题,设计一套调试方案的,请等着。

现在你可以把你的 U 盘上的分区布局说一说,例如,U 盘的容量,各个分区的大小,CHS 的值,等等以及其他你认为重要的信息。

能否把你的 U 盘开头的 128K 传上来?可以用一个十六进制工具来截获。

  Quote:
2、acer的搜索不到grldr,可明明是有的啊。

这个情况比清华同方的要稍好。我们先不管它,等到清华同方的解决掉之后再来处理它。

  Quote:
3、一台联想的更怪,好像grub的mbr根本不存在一样,直接用根目录的io.sys启动了,删除io.sys后,说找不到系统了。

这个情况就更好了,只要能启动 DOS,你就可以启动 GRUB.EXE 了。我们最后收拾它。

[ Last edited by 不点 on 2008-5-25 at 11:42 AM ]
作者: lmle     时间: 2008-5-25 12:28
我的U盘是爱国者迷你王1G的,全部分为一个区。在能启动的电脑上用geometry (hd0,0)命令显示如下:
drive 0x80(LBA):C/H/S=125/255/63,Sector Cont/Size=2008125/512
Partition num:0, Filesystem type is fat, partition type 0xb
u盘的头125k用什么软件取得?等一会再传吧。
补充说明:
五台电脑中,有四台是可以用flashboot格式化,再用IO+grub启动的。只有一台同方电脑不能,却能用flashboot的freeDos+98的IO.sys、msdos.sys、command.com和一个freeDos的一个sys文件启动,但不能运行grub。会显示一条信息和一长串的数字,同时PC喇叭一直响着“嘀”声,没记下来。

[ Last edited by lmle on 2008-5-25 at 12:43 PM ]
作者: 不点     时间: 2008-5-25 13:16
用什么软件截取 U 盘扇区,我就不知道了,你可以搜索网络,应该很容易找到。

你应该上载两个版本,一个是 GRLDR 的引导扇区(失败的),另一个是 flashboot 的引导扇区(成功的)。通过比较我们就能找出其中的秘密,从而破解这个谜题。

另外,grub 失败时,那些数字很重要,它们是中断向量号码,请你抄录下来,尤其是显示的最后一个中断向量号码更重要。如果屏幕信息停留时间很短,你可以只记录那些带有感叹号的中断向量号码,以及最后一个中断向量号码。
作者: lmle     时间: 2008-5-25 13:49
我用winhex取得了grub的mbr启动的这样两份数据,一个是逻辑盘模式的,一个是物理盘模式的。不知是否有用。等一下到学校传flashboot的msdos及freedos的数据。
数据在我的永硕网盘里:http://ys-b.ys168.com/?启动扇区数据.rar_66en0cjsht1bsn0cnl1btp2btrq4b5btlll0c0bku14z97f14z
作者: lmle     时间: 2008-5-25 15:07
刚刚用flashboot的freeDos测试了一圈,发现freedos的兼容性真好,五种不同电脑全部顺利启动到dos。
1、其中四台电脑显示有如下这句(包括运行不了grub的那台):
    c:HD1, Pri[1], chs= 0-1-1, start= 0MB, Size=985MB
    启动不了grub的那台有如下显示:
    Unable to open DOS file: .\menu.lst (这句应该是FreeDos的)
    Probing ROM INT Vectors. If hang ,Unload a device Driver or TSR and try again.
    00 01 02 03 04 05 ……(一大串数字)
    在四台电脑中,用geometry,有三种值:
    chs= 1001/255/63 sector count /size=16081065/512(两台,包括运行不了grub的)
    chs= 1001/32/63   sector count /size=4036032/512
    chs= 127/255/63   sector count /size=2040255/512
2、联想电脑在FreeDos里显示的是:c:HD2, Pri[1] CHS=0-1-1, start= 0MB, Size=20810MB
    在FreeDos下显示为A:,且用geometry (hd2,0)或geometry (hd0,2)都提示错误。
作者: lmle     时间: 2008-5-25 15:54
这是freedos的启动扇区和启始扇区数据:http://ys-c.ys168.com/?freedos启动数据.rar_67z8m0cjshtjsn0cnl5btp2btrq4b5btnlpmn5bu14z97f14z
作者: 不点     时间: 2008-5-25 17:19
    00 01 02 03 04 05 ……(一大串数字)

要一字不差地把这些信息抄录下来,否则就跟完全没说是一样的。

你提供的网盘无法下载。这么小的数据量,根本无需网盘,你可以上载到某个论坛。或者发送到我的邮箱: tinybit (圈a) tom (小数点) com
作者: lmle     时间: 2008-5-25 18:51
邮件已发送。也可以到http://lmle.ys168.com/的工具软件目录下载。
那一串数字等一下到学校发上来。本来想偷懒一下,看来不行啊,呵呵。
作者: lmle     时间: 2008-5-25 19:14
那一串数字是:
00  01  02  03  04  05  06  07  08  09  0A  0B  0C  0D  0E  0F
10  11  12  13  14  15  16  17  18  19  1A  1B  1C  1D  1E  1F
20  ………………………………………………………………………………  2F
30  ………………………………………………………………………………  3F
40  ………………………………………………………………………………  4F
50  ………………………………………………………………………………  5F
60  ………………………………………………………………………………  6F
70  71  72  73  74  75  76
也就是从00到76的所有十六进制数字,看不出什么名堂啊。
作者: lmle     时间: 2008-5-25 19:28
启动freedos后再启动grub全部成功了!
我怎么那么苯啊,原来启动不了的那台电脑网卡上有还原卡,拔下网卡后启动成功。
再一次对flashboot所带的FreeDos引导表示赞赏!
作者: 不点     时间: 2008-5-25 21:42
你的中断号 76 被还原卡修改了(可能是加密反跟踪措施),导致 grub 探测恢复时死机。

不过刚刚上载了一个版本到 http://grub4dos.jot.com/ 上,你可以测试里面的 grub.exe 是否能够在你的还原卡上正常运行。但 bootlace 还没有改变,以后再修改 bootlace 吧。
作者: lmle     时间: 2008-5-25 23:21
谢谢,明早测试。刚才又发现两个问题,不知是我操作问题(或是个别电脑问题),还是grub问题。
以下操作都是在京东放笔记本上测试的。
1、朗科4G盘(型号是U208),一个分区,freedos正常启动,但运行grub时机。分成400M和3.5G后,grub正常启动。
2、当使用menu.lst和字体文件时,启动到starting cmain()...之后黑屏。在menu.lst中去掉splashimage /boot/splash.xpm.gz 和 fontfile /boot/muifont.gz 后启动正常。
作者: 不点     时间: 2008-5-26 07:57
1. 这很正常。一个 BIOS 的毛病,不一定在什么时候表现出来。既然你的 BIOS 肯定是有毛病的,那么出现这些现象就是可以理解的了。我们的 grub4dos 也一样存在这个问题。有时候,我们能够启动 grub4dos,但是却找不到 U 盘上的文件。类比一下,Freedos 虽然也能启动,但是它不一定能够正确装载 grub 的程序文件,或者装载得不完整。这样都会出现失败、死机等情况。

2. 这很难说,你自己摸索一下究竟是怎么样的吧。看看还有没有其他异常发生。这些问题应该都是因为 BIOS 的 BUG 引起的,但是,具体来说究竟是哪里出现了 bug,还不知道。

另外,既然你有办法启动到 DOS,那么,那台清华同方的机器也就有办法测试了。

请你用 U 盘启动到一个纯净的 DOS,没有配置文件,没有自动批处理文件,然后运行 debug 来执行以下程序:

在 debug 提示符下敲入 A 100 回车,开始汇编,然后敲入以下程序,

mov AH, 8
mov DL, 80    (说明:此处 80 表示硬盘。如果你的 U 盘是软盘,请改成 00)
stc        (更新:请记住再加入这条指令)
int 13
int 3

此时要多敲入一个回车,结束汇编。

然后敲入 g 回车,开始运行。运行完后,再敲入 q 回车,退出 debug。

把屏幕上显示的执行结果(不多的,只有几行)贴上来。

另外请报告一下,清华同方启动 DOS 后,U 盘究竟是 A 盘还是 C 盘。

[ Last edited by 不点 on 2008-5-26 at 10:52 AM ]
作者: lmle     时间: 2008-5-26 10:13
25号的grub在有还原卡的情况下启动成功,但启动后续的PE或dos映像失败,提示文件找不到或读文件错误。拔下网卡后正常了,只是加载pe的核心winpe.im_时,载入失败,可能是pe的问题吧。上午很忙,下午有空再测。
作者: 不点     时间: 2008-5-26 10:29
在 grub 提示符下用这些命令

debug 0x7FFFFFFF
geometry (fd0)
geometry (hd0)
geometry (hd1)

看看你有多少个磁盘和分区?把输出信息贴上来。

第一行的 debug 是想输出调试信息,以便了解失败的原因。如果你不想输出调试信息,就用 debug 1 便可。

[ Last edited by 不点 on 2008-5-26 at 10:33 AM ]
作者: lmle     时间: 2008-5-26 14:19
先整理一下测试情况(今天实在太忙了,不知有没有时间去用调试命令测试):
1、在插网卡的情况下,清华同方在BIOS自检之后就运行还原卡上的海光蓝卡程序,应该就接管了INT13,而它的INT13写的实在太烂了,没有必要去支持它。要是Grub在这样的情况下都能兼容,那真是没有什么主板不能启动了。
2、拔下网卡后,能启动4G u盘上的FreeDos,顺利运行Grub。能在Grub下启动矮人Dos工具箱等Dos映像,加载毛桃PE(小小强修改1.3版)的WinPE.im_失败,进不了桌面。但能加载WinPE.is_核心,桌面显示正常。在这样的PE下,U盘不能使用,不能运行里面的程序,不能删除,不能写入。记得写入时有这样的提示:Windows-延缓写入失败。试了几个不同的ISO核心,问题差不多,有一个核心在写入时,虽然也有延缓写入失败的提示,但能写入一个文件,之后U盘变为RAW格式,容量为0,打开U盘显示空白。不知道是BIOS原因?U盘控制器原因?PE原因?一头雾水。
3、U盘在FreeDos下显示 “C>”。

[ Last edited by lmle on 2008-5-26 at 09:38 PM ]
作者: lmle     时间: 2008-5-26 21:30
今天我又去测试了一下:
1、FreeDos好像没有Debug,可又进不了Dos,从Grub引导Dos也没有成功。
2、Grub运行Debug 0xfffffff没有任何显示就回到 Grub提示符了。
3、运行Geometry成功。
    geometry (fd0)
int 13/41(0), version=0, int 13/08(0),  version=0, C/H/S=80/1/18,INT 13/02(0), ERR=0,
Notice:number of heads for drive 0 tuned from 1 to 256.
Notice:Setors-per-track for drive 0 tuned from 18 to 63.
drive 0x0(CHS):C/H/S=80/256/63, sector count /Size=1440/512

     geometry (hd0)
drive 0x80(CHS): C/H/S=1001/256/63, setor count /Size=4036032/512
partitionnum: 0, Filesystem type is fat ,partition type 0xb
partitionnum: 1, Filesystem type unknown,,partition type 0x13

    geometry (hd1)
drive 0x81(LBA): C/H/S=19158/256/63, setor count /Size=307773270/512
partitionnum: 0, Filesystem type is fat ,partition type 0xb
partitionnum: 1, Filesystem type is fat ,partition type 0xc
作者: 不点     时间: 2008-5-26 21:35
辛苦啦!这个帖子的点击率比较高,在等待你的结果的时候,我来轻松一下,云山雾罩一番。

我猜大家都很懒,包括我自己在内,都是希望由别人来解决问题,而自己只是享用别人的劳动果实。比如本人就发现了很多软件的 BUG,但本人很少去报告,因为报告 bug 也是很累人的一件事情。所以,大家首先得感谢这位报告问题的人。你私下里可以给他寄点什么礼物。

软件成功与否,取决于其稳定性,而不是功能。功能也重要,但只能排到第二位。例子有很多。比如,LILO 的功能就很简单,但它在 freshmeat 上能排在前 30 名。SYSLINUX 的功能多了一些,但是目前在 freshmeat 上只能排在第 70 名左右。GNU GRUB 的功能更丰富一些,然而在 freshmeat 上只能排在第 190 名左右。GRUB4DOS 的功能更强大,但在 freshmeat 上却只排到第 1700 名以后了。

所以,我们基本上可以得出结论:功能多、功能强大的代价,往往是伴随着硬件适应能力的下降,换句话说,就是稳定性的丧失。

因为起决定作用的是稳定性,所以,我们始终把解决硬件适应性问题当作头等大事来做。我们这么多年以来都是这么努力去做的,也收到了一定的成效。今后更是要这么做,也必将收到更大的成效。
作者: 不点     时间: 2008-5-26 22:20


  Quote:
Originally posted by lmle at 2008-5-26 09:30 PM:
今天我又去测试了一下:
1、FreeDos好像没有Debug,可又进不了Dos,从Grub引导Dos也没有成功。

请在这里下载最新的 debug113,它可以代替微软的 debug,并且也能用于 Freedos:

http://www.ibiblio.org/pub/micro ... os/files/dos/debug/

那些 geometry 是想挽救你的硬盘保护卡的。既然你已经放弃了硬盘保护卡,也就没必要再用 geometry 来看它的分区情况了。

[ Last edited by 不点 on 2008-5-26 at 10:25 PM ]
作者: lmle     时间: 2008-5-27 07:56
不点大师辛苦了!您提供的Debug工具可以使用了。
不是说要放弃还原卡,因为Grub是同BIOS打交道的,中间突然加入了“程咬金”,生怕会影响了您的计划和思路啊。只要您对这个还在关注,我一定尽力测试。期待一个稳定、兼容性极佳的Grub,直接从Grub引导PE、dos等就不用走弯路了。
以下是Debug的结果:
Unexpected breakpoint interrupt
AX=0000  BX=0000  CX=E8FF  DX=1F02  SP=FFFE  BP=0000  SI=0000  DI=0000
DS=1881  ES=1881  SS=1881  CS=1881  IP=0108  NV  UP  EI  PL  ZR  NA  PE  NC
1881:0108      7249           JB   0153

[ Last edited by lmle on 2008-5-27 at 08:04 AM ]
作者: lmle     时间: 2008-5-27 08:31
还有一个情况,在显示如下警告时,没有还原卡一两秒钟就过去了,有还原卡时要五六分钟。
Warning: Unrecognized partition table for drive 80. Please rebuild it using a Microsoft-compatible FDISK tool(err=28).Current C/H/S=1001/64/63
作者: 不点     时间: 2008-5-27 11:10
你的两次测试,显示了不同的结果:

一次是

     geometry (hd0)
drive 0x80(CHS): C/H/S=1001/256/63, setor count /Size=4036032/512
partitionnum: 0, Filesystem type is fat ,partition type 0xb
partitionnum: 1, Filesystem type unknown,,partition type 0x13

另一次是 CX=E8FF  DX=1F02,这里能算出 C/H/S=1001/32/63

而且你还有一个分区的 ID 是 0x13,这个分区你从来都没有提到过啊?

上次你用 grldr 安装到 U 盘 MBR 时启动失败,那时你插硬盘保护卡了吗?如果插了,那么你拔下再试验一次,以便让我们对此有个清晰的认识。

所有以上的试验,都必须在有卡和无卡两种情况下分别做出,因此应该是两套试验。你也不要更换机器了,认准清华同方的这台机器,先把它解决了之后,再处理其它机器。

请你重新给个测试报告。

另外,grub 下的 debug 的参数是 0x7FFFFFFF,不要弄错了,它是控制以后的命令能够显示详尽的调试信息的。

[ Last edited by 不点 on 2008-5-27 at 11:12 AM ]
作者: lmle     时间: 2008-5-27 16:34
刚刚对有还原卡和无还原卡重新测了一遍(1G U盘,清华同方电脑):
一、有还原卡。
1、freedos下debug
Unexpected breakpoint interrupt
AX=0000 BX=0000 CX=E8FF DX=1F02 SP=FFFE BP=0000 SI=0000 DI=0000
DS=1880 ES=1880 SS=1880 CS=1880 IP=0108 NV UP EI PL ZR NA PE NC
1880:0108    0000                 ADD [BX+SI]                          DS:0000=CD

2、Grub下的Geometry (都先运行Debug 0x7FFFFFFF)
显示内容与上次测试的结果一模一样。
    geometry (fd0)
int 13/41(0), version=0, int 13/08(0),  version=0, C/H/S=80/1/18,INT 13/02(0), ERR=0,
Notice:number of heads for drive 0 tuned from 1 to 256.
Notice:Setors-per-track for drive 0 tuned from 18 to 63.
drive 0x0(CHS):C/H/S=80/256/63, sector count /Size=1440/512

     geometry (hd0)
drive 0x80(CHS): C/H/S=1001/256/63, setor count /Size=4036032/512
partitionnum: 0, Filesystem type is fat ,partition type 0xb
partitionnum: 1, Filesystem type unknown,partition type 0x13

    geometry (hd1)
drive 0x81(LBA): C/H/S=19158/256/63, setor count /Size=307773270/512
partitionnum: 0, Filesystem type is fat ,partition type 0xb
partitionnum: 1, Filesystem type is fat ,partition type 0xc

可我的U盘明明只有一个分区啊,于是我拔下U盘,运行Geometry (hd0),显示:
biosdisk read first sector of drive 0x80:failure! errnun=0
drive 0x80(CHS):=1001/255/63, sector count/size=4036032/512
    partition num:0,Filesystem type unknown, partition type 0xb
    partition num:1,
Error 25: Disk read error

二、无还原卡。
1、freedos下的Debug:显示完全一样。
2、Grub下的Geometry (都先运行Debug 0x7FFFFFFF)
geometry (fd0)
int13/41(0), version=0, int13/08(0), version=0, C/H/S=80/1/18, int13/02(0), err=0,
Notice:number of heads for drive 0 tuned from 1 to 256.
drive 0x0(CHS):C/H/S=80/256/18,sector count/size=1440/512

geometry (hd0)
drive 0x80(CHS):C/H/S=1001/32/63, sector count/size=4036032/512
partition num: 0,Filesystem type is fat, partition type 0x6

geometry (hd1)
drive 0x81(LBA):C/H/S=19158/255/63, sector count/size=307773270/512
     partition num: 0,Filesystem type is fat,partition type 0xb
     partition num: 1,Filesystem type is fat,partition type 0xc

红色部分在没有还原卡是没有的,蓝色部分数值不同。

[ Last edited by lmle on 2008-5-27 at 04:59 PM ]
作者: 不点     时间: 2008-5-27 18:13
1. 你那个软盘 (fd0) 是怎么回事?怎么总是出现它?你在 grub 下用

cat --hex (fd0)+1

可以研究它的第一扇区。你可以研究更多的扇区,看看究竟它是什么内容?

2. 无硬盘保护卡时,bootlace 安装的 grldr 能否成功启动?

3. 既然有硬盘保护卡时也能显示 (hd0) 的分区 partition num: 0, Filesystem type is fat ,partition type 0xb,那么你能否在 grub 下访问 U 盘的内容?

4. 像软盘一样,你也可以用

cat --hex (hd0)+64

来研究 U 盘 MBR 以及分区引导扇区的内容。比较一下有保护卡和无保护卡两种情况下的不同之处。你自己应该了解有关分区表、BPB 表的知识,以便你能对显示结果做出分析。

你当然要检查 grub 能否访问 U 盘上的文件。

5. 考虑 bootlace 安装 grldr 到 MBR 的情况。假定硬盘保护卡强制取得了 BIOS 的硬盘控制权,那么,它有可能把 MBR 整个磁道都截获,换句话说,它给出一个虚拟的 MBR 磁道。那么这样一来,我们的 MBR 上的代码就被“虚拟”掉了。你可以在插上硬盘保护卡进入 grub 的情况下,用 cat --hex (hd0)+17 来检查我们的 GRLDR 的 MBR 是否完整。

对不起,最后这句话显然说错了。既然你无法用 grldr 的 MBR 启动,那么你也就不可能看到 GRLDR 的代码,因为此时的 MBR 代码是 flashboot 建立的。flashboot 只用到了 MBR 的一个扇区,而接下来的 62 个扇区都没有用到。你可以在 Windows 下用16进制工具把 MBR 后的 62 个扇区填上任意的值作为标记(你想填什么就填什么,总之把 62 个扇区都填充一些标记字节,以便将来在 grub 下检查它是否存在或者是否被更改了)。当你进入 grub 后,用 cat --hex (hd0)+63 可以看到整个 MBR 磁道的数据。这时注意看这些数据是否已经被保护卡虚拟掉了。你做的记号应该都在才对,否则,就是被虚拟掉了。

[ Last edited by 不点 on 2008-5-28 at 12:18 AM ]
作者: aimu2000     时间: 2008-5-27 23:55
两位辛苦了!
作者: lmle     时间: 2008-5-28 21:50
找到暂时的解决方法,将就着用了,偷懒一下。
1、用1G的U盘,在拔去还原卡的情况下,用FreeDos+Grub在现有的五六种主板下,全都能启动到PE里,并正常使用。原来清华同方不能启动PE的原因是内存太少了,128M减8M显存,才120M,加内存后正常了。但4G盘能启动,却不能进行读写(现象同前几次所述),在其他电脑则完全正常,不知今后的Grub能否解决?
2、Mbr的Grub引导重新测试了两次(重做U盘,1G),测试的结果与上次有些不一样。
这次能启动4太电脑,包括原清华同方(拔去还原卡,不拔提示:Missing MBR-helper.),但启动不了联想电脑。后来,在FreeDos里发现:能启动的电脑,提示符是C>,联想电脑的提示符是A>
作者: 不点     时间: 2008-5-28 22:57
好了,测试是很辛苦的,等以后有空闲时间再做详细测试也行。说实在话,我只是来布置和设计这个测试,就已经很累了,更何况你还要运用诸多工具进行多次的分区、格式化、安装系统,以及还需要打开机箱插拔板卡,并分别在 DOS 和 GRUB 等环境下调试,然后再把结果抄录或者贴图,实在是一件麻烦的事情,是巨大的劳动量。

  Quote:
但4G盘能启动,却不能进行读写(现象同前几次所述),在其他电脑则完全正常,不知今后的Grub能否解决?

恐怕这与 grub 无关,应该与 PE 有关,或者是与 BIOS 固有的毛病有关。这恐怕难以解决了,除非刷新主板 BIOS,或者更新 PE 的 USB 驱动。

  Quote:
但启动不了联想电脑。联想电脑的提示符是A>。

不用担心这个情况。这个问题一开始就很明朗,不存在可疑之处。导致这一现象的原因,就是 BIOS 并不读取 U 盘的 MBR,而是直接读取 FAT 上的 DOS 引导扇区。所以,你前面曾经提到,你一开始就能启动到 DOS,而 MBR 不起作用。这就是说,BIOS 已经强制把 U 盘的第一分区当作软盘来对待了。

在这种情况下,你可以把 GRLDR 的引导扇区安装到 U 盘第一分区的 FAT 上,这样就不会启动 DOS 了,而是启动 GRLDR。关于这一点,其具体的操作方法就不再多说了,你自己有时间的话,可以摸索一下。这不是令我们很头痛的问题,而是相对比较容易处理的问题。

你的报告已经带来了 grub4dos 的更加强健。再次谢谢你的测试。
作者: lmle     时间: 2008-5-29 10:50
FreeDos+Grub启动经常会出现这样的问题:
1、我要把FreeDos的Command.com换成msdos的comnand.com才能运行Grub,否则提示:Invalid Opcode at 019B 2477 0206 FFFF 0101 20CD 0000 0000 2477 1F8F B11B 1F8F 9FAF
2、换了以后只要移动一些文件或拷贝进一些东西,就会出现:bad or missing command interpreter:command.com /p /e:256 ,当然就运行不了Grub了。
不知怎样解决,在线等,谢谢.
作者: 不点     时间: 2008-5-29 11:32
我想 FreeDOS 自己的 command.com 应该也是可以的。问题很可能是由于 config.sys 以及 autoexec.bat 中的驱动程序引起的。把 FreeDOS 的所有配置文件都删除,应该就好了。
作者: lmle     时间: 2008-5-29 12:36
根本没用 config.sys 以及 autoexec.bat ,只有freedos的两个文件和一个grub。
作者: 不点     时间: 2008-5-29 12:45
freedos 的版本可能太旧了,换个最新的。在网上搜。
作者: lmle     时间: 2008-5-29 16:34
看来真是freedos的版本问题,我把kernel.sys和command.com用freedos1.0里的替换后,grub正常运行了。
另外,freedos的command.com是不能移动的,把它删除后,再把相同的版本拷回来,freedos也会提示command.com出错。flashboot格式化后,要先把kernel.sys和command.com替换,再拷入其他文件。
最后忠心感谢不点大师的热情帮助!谢谢!期望grub越来越好!

[ Last edited by lmle on 2008-5-29 at 05:04 PM ]
作者: chujiafu     时间: 2008-6-5 07:20
感谢Lmle和不点。正是有了Lmle,我们的软件才得以改进;正是有了不点,我们软件才能改进。