(c) 菜单编辑模式
菜单编辑模式用来对菜单项进行编辑改变,其界面和菜单模式的界面十分类似,不同的是菜单中显示的是对应某个菜单项的命令列表。如果在编辑模式下按下,则取消所有当前对菜单的编辑并回到菜单模式下。在编辑模式下选中一个命令行,就可以对这条指令进行修改,修改完毕后按下,GRUB将提示你确认并完成修改。如果你想在当前命令列表中增加一条命令,按在当前命令的下面增加一条指令,按在当前命令前处增加一条指令。按删除一条指令。
仅用于菜单的命令(不包括菜单项内部的启动命令)
default num
设置菜单中的默认选项为num(默认为0,即第一个选项),超时将启动这个选项
fallback num
如果默认菜单项启动失败,将启动这个num后援选项。
password passwd new-config-file
关闭命令行模式和菜单编辑模式,要求输入口令,如果口令输入正确,将使用new-config-file
作为新的配置文件代替menu.lst,并继续引导。
timeout sec
设置超时,将在sec秒后自动启动默认选项。
title name ...
开始一个新的菜单项,并以title后的字串作为显示的菜单名。
在菜单(不包括菜单项内部的命令)和命令行方式下都可用的命令
bootp
以BOOTP协议初始化网络设备
color normal [highlight]
改变菜单的颜色,normal是用于指定菜单中非当前选项的行的颜色,highlight是用于指定当前菜单选项的颜色。如果不指定highlight,GRUB将使用normal的反色来作为highlight颜色。指定颜色的格式是“前景色/背景色”,前景色和背景色的可选列表如下:
* black
* blue
* green
* cyan
* red
* magenta
* brown
* light-gray
下面的颜色只能用于背景色
* dark-gray
* light-blue
* light-green
* light-cyan
* light-red
* light-magenta
* yellow
* white
你可以在前景色前加上前缀"blink-",产生闪烁效果,你可以在menu.lst中加上下面这个选项来改变颜色效果:
title OS-BS like
color magenta/blue black/magenta
device drive file
在GRUB命令行中,把BIOS中的一个驱动器drive映射到一个文件file。你可以用这条命令创建一个磁盘映象或者当GRUB不能真确地判断驱动器时进行纠正。如下
grub> device (fd0) /floppy-image
grub> device (hd0) /dev/sd0
这条命令只能在命令行方式下使用, 是个例外。
dhcp
用DHCP协议初始化网络设备。目前而言,这条指令其实就是bootp的别名,效果和bootp一样。
hide partition
这条指令仅仅对DOS和WINDOWS有用,当在一个硬盘上存在多个DOS/WIN的主分区时,有时需要这条指令隐藏其中的一个或几个分区,即在分区表中设置“隐藏”位。
rarp
用RARP协议初始化网络设备。
setkey to_key from_key
改变键盘的映射表,将from_key映射到to_key,注意这条指令并不是交换键映射,如果你要交换两个键的映射,需要用两次setkey指令,如下:
grub> setkey capslock control
grub> setkey control capslock
其中的键必须是字母,数字或者下面的一些代表某一键的字符串:
`escape, `exclam, `at, `numbersign, `dollar, `percent,
`caret, `ampersand, `asterisk, `parenleft, `parenright,
`minus, `underscore, `equal, `plus, `backspace, `tab,
`bracketleft, `braceleft, `bracketright, `braceright, `enter,
`control, `semicolon, `colon, `quote, `doublequote,
`backquote, `tilde, `shift, `backslash, `bar, `comma,
`less, `period, `greater, `slash, `question, `alt, `space,
`capslock, `FX (`X is a digit), and `delete.
下面给出了它们和键盘上的键的对应关系:
`exclam=`!
`at=`@
`numbersign=`#
`dollar=`$
`percent=`%
`caret=`^
`ampersand=`&
`asterisk=`*
`parenleft=`(
`parenright=`)
`minus=`-
`underscore=`_
`equal=`=
`plus=`+
`bracketleft=`[
`braceleft=`{
`bracketright=`]
`braceright=`}
`semicolon=`;
`colon=`:
`quote=`
`doublequote=`"
`backquote=``
`tilde=`~
`backslash=`
`bar=`|
`comma=`,
`less=`
`slash=`/
`question=`?
`space=`
unhide partition
仅仅对DOS/WIN分区有效,清除分区表中的“隐藏”位。
仅用于命令行方式或者菜单项内部的命令
blocklist file
显示文件file在所占磁盘块的列表。
boot
仅在命令行模式下需要,当参数都设定完成后,用这条指令启动操作系统
cat file
显示文件file的内容,可以用来得到某个操作系统的根文件系统所在的分区,如下:
grub> cat /etc/fstab
chainloader [`--force] file
把file装入内存进行chainload,除了能够通过文件系统得到文件外,这条指令也可以用磁盘块列表的方式读入磁盘中的数据块,如+1`指定从当前分区读出第一个扇区进行引导。如果指定了`--force`参数,则无论文件是否有合法的签名都强迫读入,当你在引导SCO UnixWare时需要用这个参数。
cmp file1 file2
比较文件的内容,如果文件大小不一致,则输出两个文件的大小,如下:
Differ in size: 0x1234 [foo], 0x4321 [bar]
如果两个文件的大小一致但是在某个位置上的字节不同,则打印出不同的字节和他们的位移:
Differ at the offset 777: 0xbe [foo], 0xef [bar]
如果两个文件完全一致,则什么都不输出。
configfile FILE
将FILE作为配置文件替代menu.lst。
embed stage1_5 device
如果device是一个磁盘设备的话,将Stage1_5装入紧靠MBR的扇区内。如果device是一个FFS文件系统分区的话,则将Stage1_5装入此分区的第一扇区。如果装入成功的话,输出写入的扇区数。
displaymem
显示出系统所有内存的地址空间分布图。
find filename
在所有的分区中寻找指定的文件filename,输出所有包含这个文件的分区名。参数filename应该给出绝对路径。
fstest
启动文件系统测试模式。打开这个模式后,每当有读设备请求时,输出向底层例程读请求的参数和所有读出的数据。输出格式如下:
先是由高层程序发出的分区内的读请求,输出:之后由底层程序发出的扇区读请求,输出:[磁盘绝对扇区偏移] 可以用install或者testload命令关闭文件系统测试模式。
geometry drive [cylinder head sector [total_sector]]
输出驱动器drive的信息。
help [pattern ...]
在线命令帮助,列出符合pattern的命令列表,如果不给出参数,则将显示所有的命令列表。
impsprobe
检测Intel多处理器,启动并配置找到的所有CPU。
initrd file ...
为Linux格式的启动映象装载初始化的ramdisk,并且在内存中的Linux setup area中设置适当的参数。
install stage1_file [`d] dest_dev stage2_file [addr] [`p] [config_file] [real_config_file]
这是用来完全安装GRUB启动块的命令,一般很少用到。
ioprobe drive
探测驱动器drive所使用的I/O口,这条命令将会列出所有dirve使用的I/O口。
kernel file ...
装载内核映象文件(如符合Multiboot的a.out,ELF,Linux zImage或bzImage,FreeBSD a.out,NetBSD
a.out等等)。文件名file后可跟内核启动时所需要的参数。如果使用了这条指令所有以前装载的模块都要重新装载。
makeactive
使当前的分区成为活跃分区,这条指令的对象只能是PC上的主分区,不能是扩展分区。
map to_drive from_drive
映射驱动器from_drive到to_drive。这条指令当你在chainload一些操作系统的时候可能是必须的,这些操作系统如果不是在第一个硬盘上可能不能正常启动,所以需要进行映射。如下:
grub> map (hd0) (hd1)
grub> map (hd1) (hd0)
这个就用来对付双硬盘最过瘾!!!哈哈
module file ...
对于符合Multiboot规范的操作系统可以用这条指令来装载模块文件file,file后可以跟这个module所需要的参数。注意,必须先装载内核,再装载模块,否则装载的模块无效。
modulenounzip file ...
同module命令几乎一样,唯一的区别是不对module文件进行自动解压。
pause message ...
输出字符串message,等待用户按任意键继续。你可以用(ASCII码007)使PC喇叭发声提醒用户注意。
quit
退出GRUB shell,GRUB shell类似于启动时的命令行模式,只是它是在用户启动系统后执行/sbin/grub才
进入,两者差别不大。
read addr
从内存的地址addr处读出32位的值并以十六进制显示出来。
root device [hdbias]
将当前根设备设为device,并且试图mount这个根设备得到分区大小。hdbias参数是用来告诉BSD内核在当前分区所在磁盘的前面还有多少个BIOS磁盘编号。例如,系统有一个IDE硬盘和一个SCSI硬盘,而你的BSD安装在IDE硬盘上,此时,你就需要指定hdbias参数为1。
rootnoverify device [hdbias]
和root类似,但是不mount该设备。这个命令用在当GRUB不能识别某个硬盘文件系统,但是仍然必须指定根设备。
setup install_device [image_device]
安装GRUB引导在install_device上。这条指令实际上调用的是更加灵活但是复杂的install指令。如果
image_device也指定了的话,则将在image_device中寻找GRUB的文件映象,否则在当前根设备中查找。
testload file
这条指令是用来测试文件系统代码的,它以不同的方式读取文件file的内容,并将得到的结果进行比较,如果正确的话,输出的`i=X,filepos=Y`中的X,Y的值应该相等,否则就说明有错误。通常这条指令正确执行的话,之后我们就可以正确无误地装载内核。
uppermem kbytes
强迫GRBU认为高端内存只有kbytes千字节的内存,GRUB自动探测到的结果将变得无效。这条指令很少使用,可能只在一些古老的机器上才有必要。通常GRUB都能够正确地得到系统的内存数量。
其中大部分命令我们不常用,建议在试验的时候,做好相应的准备和备份工作