中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 06:56
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区 » 12 月 9 日更新:chainloader 和 errorcheck 代码清理
可打印版本  1,611 / 11
第1楼 不点 发表于 2007-12-09 17:22
银牌会员 发帖 1,115 积分 2,491
12 月 9 日更新:chainloader 和 errorcheck 代码清理
以前的代码实际上是不能完美支持两个连续的 chainloader 命令的。此次更新主要解决这个问题。

配合 errorcheck off 命令,那么你现在可以尝试连续执行多个 chainloader 命令。最后一个成功执行的 chainloader 将起作用。



你甚至也可以像下面这样:



这样的话,会按照 chainloader 出现的先后顺序启动相应的操作系统,就是说,第一个成功的 chainloader 将起作用。因为有了 errorcheck off,所以,多个 boot 命令可以出现在同一个 title 菜单项目中。

=========================================================

早就有了 errorcheck 命令,只是其用法好像还未公开。



这是默认的情况。功能:打开错误检查。当“错误检查”是处于开启状态时,菜单命令的执行要进行错误检查,如果菜单项中某条命令的执行产生了错误,那么,这个菜单项本身将终止执行,通常是给出“按任意键返回主菜单”的提示。



功能:关闭错误检查。当“错误检查”是处于关闭状态时,菜单命令的执行不进行错误检查,如果菜单项中某条命令的执行产生了错误,那么继续执行菜单项中的下一条命令。

实用举例(注意其中同时使用了两条 chainloader 命令):



注意:

1. 当执行 errorcheck off 之后,一定要适时地执行 errorcheck on,否则,errorcheck 将一直是处于 off 的状态,这可能不是你想要的效果。

2. 处于所有的 title 之前的那些命令,姑且叫做“菜单初始化命令”或“菜单专用命令”。在这些菜单初始化命令的执行过程中,是不进行 errorcheck 检查的。也就是说,如果某条菜单初始化命令出现了错误,那么直接执行下一条菜单初始化命令,而不管 errorcheck 是 on 还是 off。 实用举例(注意其中同时使用了两条 fontfile 命令):



甚至也可以这样:



以上这个菜单,在初始化过程中就已经开始尝试启动各个 chainloader 所指定的项目,只有当这些项目都失败时,才进入 title 所定义的菜单项目。
第2楼 Fphn 发表于 2007-12-09 17:31
新手上路 发帖 9 积分 18
刚好赶上
第3楼 lhteee 发表于 2007-12-09 17:46
中级用户 发帖 59 积分 223
继续学习,跟上Grub的更新。
第4楼 Fphn 发表于 2007-12-09 17:59
新手上路 发帖 9 积分 18
这样以来通用性就好多了。
我是这样应用的:
原来一些因环境而变的不确定的东西现在可以都写上了,
比如要启动的文件不知道是在(fd0) (hd0,0) 还是(hd1,0),可以把3条都写上。

不知道理解的对不对
第5楼 sypl 发表于 2007-12-09 18:51
初级用户 发帖 22 积分 46
12-9版的GRUB.EXE还是有问题,无法加载中文,启动IMG文件报错15,所用设备U盘,纯DOS加载GRUB.EXE,2007-11-11版以前的GRUB.EXE使用正常.
以下是截获信息:
hard drives: int13: F0008204 int15:F000F859
get-diskinfo(80),int13/41(80),version=AA210005,int13/48(80),err=0,c/h/s=28733/16/255,
sector count/size=11723140810,int13/08(80),vesion=0,c/h/s=0/255/63,int13/02(80),err=0
LBA,c/h/s=28733/255/63,sector count/size=461595645/512
boot drive=80,int13/4B01/(80),err=1,drive=80,Not cd
get-cdinfo(7F),int13/4B01(7F),err=1,drive=7F,cdrom-drive=FFFFFFFF
starting cmain()... int13/41(0),version=0,int13/08(0),version=0,c/h/s=80/2/18,int13/02(0),err=0
Warning:BPB heads(64)is not equal to the BIOS one(2)
Warning:BPB sectors per track(32)is not equal to the BIOS one(18)
Notice:number of heads for drive 0 tuned from 64 to 255
Notice:sectors-per-track for drive 0 tuned from 32 to 63
第6楼 loveheartrain 发表于 2007-12-09 19:30
初级用户 发帖 81 积分 174
不点辛苦了\!
第7楼 fastslz 发表于 2007-12-10 00:18
铂金会员 发帖 2,315 积分 5,493 来自 上海
谢谢~写的太详尽了,学习了

Originally posted by Fphn at 2007-12-9 17:59:
这样以来通用性就好多了。
我是这样应用的:
原来一些因环境而变的不确定的东西现在可以都写上了,
比如要启动的文件不知道是在(fd0) (hd0,0) 还是(hd1,0),可以把3条都写上。


不知道是在(fd0) (hd0,0) 还是(hd1,0)....可以用
find --set-root /xxx.img
map --mem /xxx.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
第8楼 Fphn 发表于 2007-12-10 13:36
新手上路 发帖 9 积分 18
Originally posted by fastslz at 2007-12-10 00:18:
谢谢~写的太详尽了,学习了



不知道是在(fd0) (hd0,0) 还是(hd1,0)....可以用
find --set-root /xxx.img
map --mem /xxx.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)



谢谢楼上的。;) 不过如果是在title之前的那些命令就不能用此法了,
因为
map --mem /xxx.img (fd0)
map --hook
会把盘符弄乱。

[ Last edited by Fphn on 2007-12-10 at 01:40 PM ]
第9楼 sypl 发表于 2007-12-10 17:38
初级用户 发帖 22 积分 46
感谢不点又一次更新,12-10版问题还是没有解决。
第10楼 clonecd 发表于 2007-12-10 18:20
初级用户 发帖 46 积分 94
我刚开始学习这个grub for dos
我也要与时俱进,哈哈
第11楼 longwang 发表于 2007-12-11 14:47
新手上路 发帖 6 积分 14
Originally posted by sypl at 2007-12-9 18:51:
12-9版的GRUB.EXE还是有问题,无法加载中文,启动IMG文件报错15,所用设备U盘,纯DOS加载GRUB.EXE,2007-11-11版以前的GRUB.EXE使用正常.
以下是截获信息:
hard drives ...

我也遇到这个问题,最近的版本进行了BPB转换后,U盘启动很难成功,采用以前的版本正常。
第12楼 sypl 发表于 2007-12-12 20:56
初级用户 发帖 22 积分 46
12-12版我的问题终于解决了,再次感谢不点,但是还有点小问题,启动GRUB.EXE时比原来慢了有1-2分钟,再加载文件时也比原来慢了很多。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023