中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] »
作者:
标题: GRUB 伤脑筋的问题, 大家会诊一下 上一主题 | 下一主题
tmpid
初级用户




积分 104
发帖 2
注册 2004-2-28
状态 离线
『第 211 楼』:  

BUG report:  grldr 自从2月1号后的版本就不能在fat16上面运行了,fat32上面没问题,难道没有一个人发现么。。。。看你们好像都用得好好的,唯独我的不行。为了证明不是因为我的rpwt,我做了一个fat32的分区,果然就没问题了。但是DOS不行了。

BTW, grldr 比 grub.exe 好用,因为机器上要是装了ATA,SCSI卡之类要加载自己的BIOS的卡,grub.exe(0.2)就会抱怨有驻留程序改了中断向量,拒绝运行。grldr没这个问题。

谢谢不点的工作。


2004-2-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 212 楼』:  

tmpid:

GRUB for NTLDR的2月13日和18的新版本(2月7日版的是不行)绝对是支持FAT16分区的,至少在我的两个硬盘(C盘均为FAT16)下可以正常使用,而且我天天都在使用它(通过它禁用另一个硬盘以启动WinME)!

不过,据我在真实机上的测试结果,当GRLDR文件本身在至少是FAT12/16分区的硬盘上是连续存储(即用blocklist命令查看没有逗号)的时候,GRLDR似乎确实无法成功启动(现象是黑屏死机)。但如果GRLDR本身存储不连续的话则启动正常。

另外,新版本的DOS本身既支持FAT16分区又支持FAT32分区。但你说你的DOS不行了,是不是你使用的DOS版本过旧??如果是的话,请升级你的DOS系统。


[此贴子已经被作者于2004-2-28 14:21:56编辑过]






Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-2-28 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 213 楼』:  

谢谢两位。

我说说为什么 GRLDR 不能运行了。GRLDR 的第一扇区,在 2 月 1 日之前是拷贝 NTLDR 的相应内容,所以,运行良好。而 2 月 1 日之后,不再用 NTLDR 了,而是用我自己写的程序,所以,就出现了某些错误。正式发布的版本是不能拷贝别人的东东的。我再检查检查程序,看看有没有什么错误。

测试时,请用最新的 BOOTGRUB 文件(这个文件越新越好)。然后,把没有问题的 GRLDR 的版本贴出来。大家觉得是不是 2 月 1 日就是一个分界线?

FAT32 以及 NTFS 确实没有问题,因为 GRLDR 开头的那段程序只是为 FAT12/16 写的,而 FAT32 和 NTFS 不用这段程序。出错的只能是 FAT12/16。

GRUB.EXE 应当是可以运行的。如果你的不能运行,看看是不是 DOS 版本的问题。我们支持的 DOS 版本是有限的,对 MS DOS 3.3 , 4.0, 5.0, 6.0, 6.22, 7.0, 7.10, 8.0 是支持的。如果有不支持的 MS DOS 版本,请报告版本号。

GRLDR 由 NTLDR 启动,它运行在干净的环境,与 DOS 无关,所以,它不抱怨,总能运行。




因为我们亲手创建,这个世界更加美丽。
2004-2-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 214 楼』:  

果然发现了毛病!谢谢 wengier 关于这个 BUG 的详细描述!没有您的描述,很难找到毛病在哪里。GRUB for DOS 离不开您,wengier 兄。

在 grldrstart.S 中,有如下一段程序:

        movb    %al, %cl
        xorb     %ch, %ch     /* CX = number of sectors read */
        shlw    $9, %cx         /* CX = number of bytes read */
        addw    %cx, %bx        /* ES:BX points to new location */
        jnc     2f
        movw    %es, %ax        /* BX=0, exceeds 64K boundary, adjust ES */
        addw    $0x1000, %ax
        movw    %ax, %es
        movb    $0x80, %ah      /* adjust max number of sectors to read */
2:

改成如下这样就应当 OK 了:

        movb    %al, %cl

        /* xorb %ch, %ch */     /* CX = number of sectors read */
              注释掉该语句,是因为这个语句多余。保留该语句也不算错。注意下面有 shlw 左移 9 位的语句。

        shlw    $9, %cx         /* CX = number of bytes read */
              这一语句是关键。如果扇区数 CX= 0x80,则左移 9 位之后,CX 变成 0 了!!!!

         jz        3f
               当 CX=0 时,跳到标号 3: 去执行修正 ES 的语句。

        addw    %cx, %bx        /* ES:BX points to new location */
               如果 CX 是 0,则把它加到 BX,不可能有进位。执行下面的 JNC 就直接跳到标号 2:了。

        jnc     2f
3:
        movw    %es, %ax        /* BX=0, exceeds 64K boundary, adjust ES */
        addw    $0x1000, %ax
        movw    %ax, %es
        movb    $0x80, %ah      /* adjust max number of sectors to read */
2:

在 ftp://ftp.cosoft.org.cn/incoming/ 之下已经有太多的 GRUB 文件了,有点垃圾的感觉。所以,我有点害怕上载了。谁能提供一个别的上载空间,临时的?因为最近有很多的修改之处,所以不想为一点点修改而上载到 cosoft 的宝贵空间上。

如果没有其它上载空间,要么等待下次一并更新,要么麻烦两位老兄自己编译更新。





因为我们亲手创建,这个世界更加美丽。
2004-2-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 215 楼』:  

更进一步,猜想当 NTLDR 在物理位置上如下排列时,NTLDR 也会死机(微软的 NTLDR)。因为似乎 NTLDR 的程序也存在 BUG。

第一部分是连续的 x 个扇区,第二部分是连续的 y 个扇区,第三、四………部分任意。其中 x 介于 1 和 127 之间,y 大于或等于 128。

处于 FAT12、FAT16 文件系统之下才能表现出该 BUG。在 FAT32 和 NTFS 下没有问题。




因为我们亲手创建,这个世界更加美丽。
2004-2-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 216 楼』:  



  Quote:
以下是引用不点在2004-2-28 19:49:44的发言:
在 ftp://ftp.cosoft.org.cn/incoming/ 之下已经有太多的 GRUB 文件了,有点垃圾的感觉。所以,我有点害怕上载了。谁能提供一个别的上载空间,临时的?因为最近有很多的修改之处,所以不想为一点点修改而上载到 cosoft 的宝贵空间上。

如果没有其它上载空间,要么等待下次一并更新,要么麻烦两位老兄自己编译更新。

不点:上传到上次我说的ipdown.com的FTP上如何,比如在里面建一个grubdos目录,然后随便上传GRUB的文件即可。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-2-28 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 217 楼』:  

好的。给我一个上传口令吧。





因为我们亲手创建,这个世界更加美丽。
2004-2-28 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 218 楼』:  

OK,上传口令已用短信发送,请注意查收。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-2-29 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 219 楼』:  

已经上传。

http://www.ipdown.com/grub4dos/bootgrub
http://www.ipdown.com/grub4dos/grldr

BOOTGRUB 现在是 3 个扇区,也就是 1536 字节。如果它不好用,就改用以前的版本,OK。

BOOTGRUB 现在增加了 FAT32 的启动代码。请将 BOOTGRUB 的第二扇区和第三扇区放置到紧接硬盘 MBR 之后的扇区位置上。BOOTGRUB 的第一扇区,暂时不要放置到 MBR。可从 BOOT.INI 中调用 BOOTGRUB。或者从 grub 中 chainloader (...)/bootgrub 也可以的。

如果 BOOTGRUB 的第二扇区和第三扇区没有放置到紧接 MBR 之后的扇区位置上,那么也可以正常工作,不过依赖于系统存在有 nt boot sector。

BOOTGRUB 并没有彻底完成。目前缺少对 fat12/16 的支持。完成之后大约是 4 个扇区,2048 字节。

BOOTGRUB 的第一扇区,放置到 MBR 也是可以的。当然只能把 BOOTGRUB 的开头 446 字节放到 MBR,也就是说,MBR 尾部的 66 字节是万万不可覆盖掉的(不熟悉的朋友在此止步,不要盲干)。

----------

请测试 GRLDR 文件是否正常了。

又及,微软的 NTLDR 程序没有错误,是我看错了。不要再去试验它了。




因为我们亲手创建,这个世界更加美丽。
2004-2-29 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tmpid
初级用户




积分 104
发帖 2
注册 2004-2-28
状态 离线
『第 220 楼』:  

上次我说改成fat32后DOS不行了,是我忘了更新bootsect.dos。

我做的一些测试:

NTBootSector + bootgrub(2月7日版) + grldr(ipdown版2月29日, blocks连续) + FAT16 = pass
NTBootSector(改NTLDR->GRLDR) + grldr(ipdown版2月29日, blocks连续) + FAT16 = pass

NTBootSector + bootgrub(2月7日版) + grldr(ipdown版2月29日, blocks连续) + FAT32 = pass
NTBootSector(改NTLDR->GRLDR) + grldr(ipdown版2月29日, blocks连续) + FAT32 = pass

NTBootSector + bootgrub(2月7日版) + grldr(ipdown版2月29日, blocks连续) + NTFS = fail
NTBootSector(改NTLDR->GRLDR) + grldr(ipdown版2月29日, blocks连续) + NTFS = 进入grub命令行
  (预料之中)

NTBootSector + bootgrub(ipdown版2月29日)整个在文件系统 + grldr(ipdown版2月29日, blocks连续) + FAT32 = fail
  (显示NTLDR not found)
bootgrub(ipdown版2月29日) 2,3扇区-> MBR 2,3扇区 未测试

另:上次说过有些机器装了ATA raid卡之类的卡不能运行grub for dos 0.2版。0.1版没有这个问题,1.44M软盘只读仿真也正常。建议不点在grub for dos 0.2版遇到BIOS中断向量表有不确定的地方的时候,如果可以的话,保留0.1版最基本的boot功能,或者进一步保留0.1版的标准软盘只读仿真功能,而不是简单地退出grub。这样设计可能更周全一些。因为0.2版至少给人的感觉是0.1版的增强。如果原来0.1版用得还好,换上0.2版后压根儿就拒绝工作,连基本的boot功能都不让用了,这样不利于0.2版的推广。


2004-3-1 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 221 楼』:  

非常感谢 tmpid 兄的大力协助!

根据您的测试,我觉得新的 GRLDR 是比较正常的了。而在你发这个帖子之前,BOOTGRUB 是有错误的,今天早晨(3月1日) 9:00 刚刚更新了 BOOTGRUB 文件,也就是纠正了一个错误。但它究竟能否启动 GRLDR,我确实也没有测试过。更新后的 BOOTGRUB 文件的下载地址仍然是 http://www.ipdown.com/grub4dos/bootgrub

另外源程序下载:

http://www.ipdown.com/grub4dos/bootgrub.S
http://www.ipdown.com/grub4dos/grldrstart.S

有兴趣的朋友可以下载研究,帮助改进。


> 上次说过有些机器装了ATA raid卡之类的卡不能运行grub for dos 0.2版。0.1版没有这个问题,
> 1.44M软盘只读仿真也正常。建议不点在grub for dos 0.2版遇到 BIOS中断向量表有不确定的
> 地方的时候,如果可以的话,保留0.1版最基本的boot功能,或者进一步保留0.1版的标准软盘
> 只读仿真功能,而不是简单地退出grub。这样设计可能更周全一些。因为0.2版至少给人的感觉
> 是0.1版的增强。如果原来0.1版用得还好,换上0.2版后压根儿就拒绝工作,连基本的boot功能
> 都不让用了,这样不利于0.2版的推广。

您这里说的 0.2 不能运行的情况,我感到本来是不应当发生的。0.1都运行了,0.2却不能运行,这肯定是个 BUG 了。不过如果没有更进一步的详情,也难以定位这个 bug。您能否提供您的 DOS 内存映象?也就是把 DOS 所管辖的 1M 内存截获,发到一个可以让我下载的地方。




因为我们亲手创建,这个世界更加美丽。
2004-3-1 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 222 楼』:  

3月2日凌晨4点(北京时间)更新:

BOOTGRUB 和 BOOTGRUB.S 文件刚刚更新。下载地址不变:

http://www.ipdown.com/grub4dos/bootgrub
http://www.ipdown.com/grub4dos/bootgrub.S

以下两个文件没有变化,仍然是 2 月 29 日的版本。

http://www.ipdown.com/grub4dos/grldr
http://www.ipdown.com/grub4dos/grldrstart.S

更新后的 BOOTGRUB 确信可以运行了。原来是犯了一个隐蔽的错误:

mov ah,8
int 13

这个调用的输出结果存放在 CX 和 DX 中,结果把我们的 BIOS 磁盘号码 DL 给覆盖掉了。像这类错误经常发生,而又经常难以避免。已经修改成这样:

mov ah,8
push dx
int 13
pop dx

这样就好了。



因为我们亲手创建,这个世界更加美丽。
2004-3-2 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
windrv
中级用户




积分 385
发帖 118
注册 2003-11-11
状态 离线
『第 223 楼』:  



  Quote:
以下是引用不点在2004-3-2 4:31:55的发言:
3月2日凌晨4点(北京时间)更新:

BOOTGRUB和BOOTGRUB.S文件刚刚更新。下载地址不变:

http://www.ipdown.com/grub4dos/bootgrub
http://www.ipdown.com/grub4dos/bootgrub.S

以下两个文件没有变化,仍然是2月29日的版本。

http://www.ipdown.com/grub4dos/grldr
http://www.ipdown.com/grub4dos/grldrstart.S

更新后的BOOTGRUB确信可以运行了。原来是犯了一个隐蔽的错误:

movah,8
int13

这个调用的输出结果存放在CX和DX中,结果把我们的BIOS磁盘号码DL给覆盖掉了。像这类错误经常发生,而又经常难以避免。已经修改成这样:

movah,8
pushdx
int13
popdx

这样就好了。

Dear TinyBit,

Does the new BootGrub support FAT12/16 partition?

If not, when will it be ready?

[em12][em12][em12]


[此贴子已经被作者于2004-3-2 9:04:13编辑过]




2004-3-2 00:00
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 224 楼』:  

还不支持 FAT12/16.

FREEDOS 的 BOOT 代码, FAT12/16 比 FAT32 还难以看懂. 由于身体问题, 我无法抽出专门时间来做.

===========

BOOTGRUB 又有更新了. 上午 9 点 27 分.






因为我们亲手创建,这个世界更加美丽。
2004-3-2 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
windrv
中级用户




积分 385
发帖 118
注册 2003-11-11
状态 离线
『第 225 楼』:  



  Quote:
以下是引用不点在2004-3-2 9:31:17的发言:
还不支持 FAT12/16.

FREEDOS 的 BOOT 代码, FAT12/16 比 FAT32 还难以看懂. 由于身体问题, 我无法抽出专门时间来做.

===========

BOOTGRUB 又有更新了. 上午 9 点 27 分.



Dear TinyBit,

Health is of No. 1 importance. Take care of your health first!

[em12][em12][em12]

2004-3-2 00:00
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
« [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: