|
不点
银牌会员
不甘寂寞的人
积分 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
状态 离线
|
|
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 |
|
|
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 |
|