中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区 » 12 月 9 日更新:chainloader 和 errorcheck 代码清理
作者:
标题: 12 月 9 日更新:chainloader 和 errorcheck 代码清理 上一主题 | 下一主题
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『楼 主』:  12 月 9 日更新:chainloader 和 errorcheck 代码清理

以前的代码实际上是不能完美支持两个连续的 chainloader 命令的。此次更新主要解决这个问题。

配合 errorcheck off 命令,那么你现在可以尝试连续执行多个 chainloader 命令。最后一个成功执行的 chainloader 将起作用。
title test1
errorcheck off
chainloader .........................
chainloader .........................
chainloader .........................
chainloader .........................
chainloader .........................
errorcheck on
boot
你甚至也可以像下面这样:
title test2
errorcheck off
chainloader .........................
boot
chainloader .........................
boot
chainloader .........................
boot
chainloader .........................
boot
chainloader .........................
boot
errorcheck on
这样的话,会按照 chainloader 出现的先后顺序启动相应的操作系统,就是说,第一个成功的 chainloader 将起作用。因为有了 errorcheck off,所以,多个 boot 命令可以出现在同一个 title 菜单项目中。

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

早就有了 errorcheck 命令,只是其用法好像还未公开。
errorcheck on
这是默认的情况。功能:打开错误检查。当“错误检查”是处于开启状态时,菜单命令的执行要进行错误检查,如果菜单项中某条命令的执行产生了错误,那么,这个菜单项本身将终止执行,通常是给出“按任意键返回主菜单”的提示。
errorcheck off
功能:关闭错误检查。当“错误检查”是处于关闭状态时,菜单命令的执行不进行错误检查,如果菜单项中某条命令的执行产生了错误,那么继续执行菜单项中的下一条命令。

实用举例(注意其中同时使用了两条 chainloader 命令):
title load setupldr.bin
errorcheck off
chainloader (cd)/boot/setupldr.bin
chainloader (cd)/BOOT/SETUPLDR.BIN
errorcheck on
boot
注意:

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

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

title 1........
......
title 2........
......
甚至也可以这样:
chainloader .........................
boot
chainloader .........................
boot
chainloader .........................
boot
chainloader .........................
boot
chainloader .........................
boot
default 0
timeout 5

title 1........
......
title 2........
......
以上这个菜单,在初始化过程中就已经开始尝试启动各个 chainloader 所指定的项目,只有当这些项目都失败时,才进入 title 所定义的菜单项目。



因为我们亲手创建,这个世界更加美丽。
2007-12-9 17:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Fphn
新手上路





积分 18
发帖 9
注册 2007-11-1
状态 离线
『第 2 楼』:  

刚好赶上

2007-12-9 17:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lhteee
中级用户




积分 223
发帖 59
注册 2005-5-23
状态 离线
『第 3 楼』:  

继续学习,跟上Grub的更新。



欢迎光临蜗牛软园:http://lhteee.ys168.com
欢迎光临 Ghost家:http://lhtooo.ys168.com
电子信箱(Email):lhteee@163.com
电子信箱(Email):lhteee@gmail.com
2007-12-9 17:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Fphn
新手上路





积分 18
发帖 9
注册 2007-11-1
状态 离线
『第 4 楼』:  

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

不知道理解的对不对

2007-12-9 17:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
sypl
初级用户





积分 46
发帖 22
注册 2007-2-5
状态 离线
『第 5 楼』:  

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

2007-12-9 18:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
loveheartrain
初级用户

DOS之迷


积分 174
发帖 81
注册 2007-11-7
状态 离线
『第 6 楼』:  

不点辛苦了\!



愛意之无尽@灵犀!
QQ:71216716 E_mail:l.h.r.@163.com
2007-12-9 19:30
查看资料  发送邮件  发短消息 网志  OICQ (71216716)  编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 7 楼』:  

谢谢~写的太详尽了,学习了

  Quote:
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)



第一高手    第二高手

2007-12-10 00:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Fphn
新手上路





积分 18
发帖 9
注册 2007-11-1
状态 离线
『第 8 楼』:  



  Quote:
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 ]

2007-12-10 13:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
sypl
初级用户





积分 46
发帖 22
注册 2007-2-5
状态 离线
『第 9 楼』:  

感谢不点又一次更新,12-10版问题还是没有解决。

2007-12-10 17:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
clonecd
初级用户





积分 94
发帖 46
注册 2006-5-14
状态 离线
『第 10 楼』:  

我刚开始学习这个grub for dos
我也要与时俱进,哈哈

2007-12-10 18:20
查看资料  发短消息 网志   编辑帖子  回复  引用回复
longwang
新手上路





积分 14
发帖 6
注册 2006-2-12
状态 离线
『第 11 楼』:  



  Quote:
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盘启动很难成功,采用以前的版本正常。

2007-12-11 14:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sypl
初级用户





积分 46
发帖 22
注册 2007-2-5
状态 离线
『第 12 楼』:  

12-12版我的问题终于解决了,再次感谢不点,但是还有点小问题,启动GRUB.EXE时比原来慢了有1-2分钟,再加载文件时也比原来慢了很多。

2007-12-12 20:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: