Generated by Unregistered Batch CHM TO DOC Convertor 2011.3.211.1266, please register!
--skip=S :跳过的字节数 --length=L :长度
--locate=STRING :定位,字符串区分大小写,最长16个字节 --locate-align=A :对齐方式
--replace=STRING :替换字符串,最长16个字节 --number=N :搜索的个数
cat 命令既不扩大也不减小目标文件的大小,源文件尾部剩余的部分将被丢弃。
新版本与老版本的区别:新版本在debug off状态下都提供显示输出,老版本(2011.01前)在非debug off下显示输出。 例子:
1:十六进制格式显示 NTLDR 文件内容
cat --hex (hd0,0)/NTLDR 2:十六进制格式显示 MBR 扇区
cat --hex (hd0)+1
3:十六进制格式显示内存起始地址处的1 KB内容(实际上就是实模式的IDT表)
cat --hex (md)+2 4:十六进制格式显示扩展内存的第一个扇区
cat --hex (md)0x800+1
5:十六进制格式显示(hd0,0)分区的第一扇区,通常这个扇区包含操作系统的引导记录
cat --hex (hd0,0)+1
6:搜索文本中从指定位置开始指定范围的第一个字符串的位置
cat --skip=0x200 --length=2048 --locate=ABCD --number=1 7:可以用来判断文件 FILE 是否存在。
cat --length=0 /FILE 8:固定用法,获取当前分区偏移。
cat --length=0 ()-1
9: 一个高级用法,配合批处理,搜索文本中指定字符串的段落名%scsi% 以下文本名为(fd1)/OEM,包含下面段落 ......
[HardwareIds.scsi.lsi_sas]
id = \id = \id = \id = \id = \id = \id = \ ......
现在只知道ID是PCI\\VEN_1000&DEV_0058,要取出HardwareIds.scsi.lsi_sas 用批处理:
Generated by Unregistered Batch CHM TO DOC Convertor 2011.3.211.1266, please register!
!BAT
set ID=PCI\\VEN_1000&DEV_0058
cat --locate=%ID:~-16% --number=1 (fd1)/OEM | set a= set a && set a=0x%a% ! exit
cat --length=%a% --locate=[ (fd1)/OEM | call :get_last set /a b=0x%last%+1
cat --length=%a% --locate=] (fd1)/OEM | call :get_last set /a a=0x%last%-%b%
cat --skip=%b% --length=%a% (fd1)/OEM | set scsi= ...... :get_last
if \shift
if \goto :get_last
cdrom
用法: cdrom --add-io-ports=P | --init | --stop 描述:
initialise/stop atapi cdroms or set additonal I/O ports for a possible atapi cdromdevice. The high word of P specifies the base register of the control block registers,and the low word of P specifies the base register of the command block registers.
1. 初始化ATAPI接口的CDROM设备:
grub> cdrom --init
显示找到的atapi接口的cdrom光驱的数目:参数为 atapi_dev_count 2. 停止ATAPI接口的CDROM设备:
grub> cdrom --stop
这会设置参数atapi_dev_count为0 。 3. 增加搜索atapi cdrom设备的IO端口。例如:
grub> cdrom --add-io-ports=0x03F601F0 在执行'cdrom --init'以及'map --hook'命令后,cdrom光驱可以通过(cd0), (cd1), ...等设备号来访问。 注意 1:如果系统不完全支持ATAPI CD-ROM 规范,在你试图访问这些(cdX)设备时将遭遇失败。 注意 2:在执行一条'cdrom --stop'命令后,你应当使用一条'map --unhook'命令。 当然,你可以再次使用`map --hook'命令,假如还有驱动器被映射着的话。 注意 3:在增加IO端口之后,你应当接着`cdrom --init'执行一条`map --unhook'命令 然后再接着执行一条`map --hook'命令。
默认将使用这些端口来搜索cdrom设备(因此不需要再添加了) 0x03F601F0, 0x03760170, 0x02F600F0, 0x03860180, 0x6F006B00, 0x77007300.
注意 4:BIOS可能已经提供了cdrom 的接口。它的设备号总是(cd)。在 `cdrom --init' 和 `map --hook' 执行后,我们可以有我们自己有效的(cd0), (cd1), ...等设备。 注意 5:你可以用块列表的方式去访问(cd)和 (cdX) 等设备。例子: cat --hex (cd0)16+2
cdrom 扇区是大小为 2048 字节的大扇区。
Generated by Unregistered Batch CHM TO DOC Convertor 2011.3.211.1266, please register!
注意 6:我们的iso9660文件系统驱动具有Rock-Ridge扩展支持,但没有Joliet扩展支持。 因此当你试图在一个使用Joliet扩展的光盘上读取文件时,可能遭遇失败。 注意 7:现在,(cd)及 (cdX)设备可以被引导了。示例: chainloader (cd) boot
chainloader (cd0) boot
chainloader (cd1) boot
在chainloader (cd)之前,你必须保证已经可以访问该设备。 CDROM 驱动器上发现的缺陷
似乎 cdrom 应当连接在IDE控制器的主设备通道上。 如果 cdrom 是从设备,读取cdrom扇区的驱动将失败。
chainloader
用法: chainloader [--force] [--load-degment=LS] [--load-offset=LO] [--load-length=LL] [--skip-length=SL] [--boot-cd=CS] [--boot-ip=IP] [--ebx=EBX] [--edx=EDX] [--sdi] [--disable-a20] FILE 描述:
load the chain-loader FILE, if --force is specified, then load it forcibly, whether the boot loader signature is present or not. LS:LO specifies the load address other than 0000:7C00. LL specifies the length of the boot image(between 512 and 640K). CS:IP specifies the address where the boot image will gain control. EBX:EDX specifies the EBX:EDX register value when the boot image gets control.Use --sdi if FILE is a System Deployment Image, which is of the Windows XP RAM boot file format.Use --diable-a20 if you wish to turn off A20 when transferring control to the boot image.SL specifies length in bytes at the beginning of the image to be skipped when loading.
加载扇区链式加载器。
若使用了--force参数, 则忽略该扇区的启动标识的有效性,强制启动。 使用0000:7C00地址以外的的启动地址的话,需要使用LS:LO参数指定。 LL 指定引导映像的长度(在512和640K大小之间)。 SL 在启动镜像时,将会忽略文件头指定的字节长度。 CS:IP 指定将获得控制权的引导映像的地址。
EBX:EDX 在引导映像获得控制权后指定EBX:EDX寄存器的值。
如果 FILE 是一个系统部署,即Windows XP RAM启动文件格式,需要使用 --sdi 参数。 使用 --disable-a20 参数,将会在把控制权移交给引导映像时关闭A20总线。 当你使用 chainloader 命令装载一个pxe 设备上的文件时,有一个选项你可以使用:
chainloader --raw (pd)/BOOT_FILE
选项 --raw 的执行就和--force一样,但是它是一次性将文件装载执行。这可以改善一些情况下的执行效率。 例1:
chainloader /ntldr #加载 ntldr 文件启动
Generated by Unregistered Batch CHM TO DOC Convertor 2011.3.211.1266, please register!
chainloader (hd0,0)+1
#加载启动第一硬盘第一主分的第一扇区
注意: 命令行下使用该命令后还需再执行 boot 命令才会真正启动。 例二:
直接启动 WinNT/2K/XP 的 NTLDR 和 Win9x/ME 的 IO.SYS, 以及FreeDOS 的 KERNEL.SYS. 例如:
chainloader --edx=0xPPYY (hd0,0)/ntldr boot
chainloader --edx=0xYY (hd0,0)/io.sys boot
chainloader --ebx=0xYY (hd0,0)/kernel.sys boot 十六进制的YY 指定了启动驱动器号,十六进制的PP指定了 NTLDR 的启动分区号。如果启动驱动器是软驱,PP应该是一个十六进制的值ff,即十进制的255.
对于 Freedos 的 KERNEL.SYS , 选项--edx不能执行,请使用--ebx 。当文件位于它们平常的位置时,选项 --edx (--ebx)可以省略。但某些情况下,这些选项是必需的。
例如,假设被调用的ntldr文件在ext2分区(hd2,8)中,而你又希望它认为(hd0,7)的 windows 分区是启动分区,那么--edx就是必需的:
chainloader --edx=0x0780 (hd2,8)/ntldr 对于DOS核心(即,IO.SYS和KERNEL.SYS),启动分区号是没有意义的,因此你只需指定恰当的启动驱动器号YY(不过指定了启动分区号也是无害的)。
上面的PPYY也可以在chainloader命令之后通过root和rootnoverify命令来指定。 例如:
chainloader (hd2,6)/kernel.sys
rootnoverify (hd0) <-------- YY=80 boot
chainloader (hd0,0)/ntldr
rootnoverify (hd0,5) <-------- YY=80, PP=05 boot 提示:CMLDR (the ComMan LoaDeR,它被用于加载Windows的故障恢复控制台)可以像NTLDR一样被良好的加载。
Bean 先生成功地解压和启动了WinME的IO.SYS,感谢这个出色的工作。
checkrange
用法: checkrange RANGE COMMAND 描述:
return ture if the return value of COMMAND is in RANGE and false otherwise.
Checkrang 命令检查一条命令的返回值是否是在指定的值域或排列中。 Usage: checkrange RANGE COMMAND 用法: checkrange 域 命令 这里是参数 RANGE 的一些示例: 3 是仅包含数字 3 的值 3:3 等价于 3
3:8 是一个包含数字3, 4, 5, 6, 7, 8的值域
Generated by Unregistered Batch CHM TO DOC Convertor 2011.3.211.1266, please register!
3,4,5,6,7,8 等同于3:8 3:5,6:8 也等同于3:8 3,4:7,8 也等同于3:8
注意:你不能把空格放在值域中。比如:以下是错误的。 checkrange 1 2 COMMAND
这里用一个示例来演示怎样使用 checkrange 命令: 例一:
checkrange 0x05,0x0F,0x85 parttype (hd0,1) || hide (hd0,1)
这意谓着:如果 (hd0,1) 不是一个扩展分区,那么执行hide (hd0,1)命令隐藏它。 例二:
checkrange 0x21 read 0x8280 && pxe detect NotExist 判断是否为PXE启动,如果是PXE启动,指定一个不存在的配置文件“NotExist”,
让PXE启动时不去搜索PXE服务器上的其他配置文件,加快启动速度(pseudo 发明的写法)。
checktime
用法: checktime [[min] [hour] [dom] [month] [dow]] 描述:
check time.
直接执行为输出本地当前时间。 命令格式如下: checktime * * * * *
checktime后面的五个参数分别表示分钟,小时,日期,月份和星期几。 '*'表示全范围,你也可以使用数字, 用'-'表示某一范围,
用'/'表示每隔一定数字取一个值,具体的用法可以查看一下crontab的语法。 如:
1-4 2,5-6 1-2,4-5,7 */2
checktime本身只是一个测试函数,它判断当前时间是否符合参数的指定。 但把它和&&相结合,你就可以使得某些命令只有在一定的条件下才会执行,例如: 1、上午使用第一项作为缺省项,下午使用第二项
checktime * 0-12 * * * && default 0 checktime * 13-23 * * * && default 1 2、四季使用不同的背景图片
checktime * * * 1-3 * && splashimage /spring.xpm checktime * * * 4-6 * && splashimage /summer.xpm
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库grub4dos-chinese(4)在线全文阅读。
相关推荐: