标题: 12 月 9 日更新:chainloader 和 errorcheck 代码清理
[打印本页]
作者: 不点
时间: 2007-12-9 17:22
标题: 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 所定义的菜单项目。
作者: Fphn
时间: 2007-12-9 17:31
刚好赶上
作者: lhteee
时间: 2007-12-9 17:46
继续学习,跟上Grub的更新。
作者: Fphn
时间: 2007-12-9 17:59
这样以来通用性就好多了。
我是这样应用的:
原来一些因环境而变的不确定的东西现在可以都写上了,
比如要启动的文件不知道是在(fd0) (hd0,0) 还是(hd1,0),可以把3条都写上。
不知道理解的对不对
作者: sypl
时间: 2007-12-9 18:51
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
作者: loveheartrain
时间: 2007-12-9 19:30
不点辛苦了\!
作者: fastslz
时间: 2007-12-10 00:18
谢谢~写的太详尽了,学习了
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)
作者: Fphn
时间: 2007-12-10 13:36
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 ]
作者: sypl
时间: 2007-12-10 17:38
感谢不点又一次更新,12-10版问题还是没有解决。
作者: clonecd
时间: 2007-12-10 18:20
我刚开始学习这个grub for dos
我也要与时俱进,哈哈
作者: longwang
时间: 2007-12-11 14:47
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盘启动很难成功,采用以前的版本正常。
作者: sypl
时间: 2007-12-12 20:56
12-12版我的问题终于解决了,再次感谢不点,但是还有点小问题,启动GRUB.EXE时比原来慢了有1-2分钟,再加载文件时也比原来慢了很多。