grubcfg指令详解.docx
《grubcfg指令详解.docx》由会员分享,可在线阅读,更多相关《grubcfg指令详解.docx(15页珍藏版)》请在冰点文库上搜索。
grubcfg指令详解
Grubv2手册 grub.cfg---启动配置文件
作者:
青草青园 来源:
隆安教育论坛 发表:
2010-09-2209:
57 我要评论
--------------------------------------------------------------------------------
Grubv2手册——版权信息
Thepagescontributedhere(FranklinPiat/*)wereanattempttowritesomedocumentationforGrub2.Thisdocumentationisn'tupdatedanymore(sincegrub2-1.96+20080203approximately)
Thiswork,and(anyfurthercontribution),hascopyrightattributiontoFSF.It'sduallicensedunderGPLv1orlaterandGFDL.
--------------------------------------------------------------------------------
grub.cfg---GRUB2版的启动配置文件
1.描述(DESCRIPTION)
grub.cfg不是一个真正的配置文件,它实际上是一个由grub2的引导程序执行的bash类脚本文件。
各种指令或者是内置的,或作为外部模块在使用前加载。
菜单的结构实际上是由menuentry命令所表明。
一个菜单项(menuentry)是一种功能,用户选择它时被调用。
在大多数情况,/boot/GRUB/grub.cfg文件是由update-grub根据/etc/defaults/grub/etc/grub.d/*的内容建立和更新的。
您不应该直接修改grub.cfg。
2.格式(FORMAT)
*以“#”开始的行是解释行。
*空格行会被忽略。
*其余的是命令行。
*命令参数通常有两种格式:
一种是简短格式,用单破折号,如-H。
另一种是长格式,用两个破折号,如--version。
*--符号是选项的结尾,并禁止选项的进一步处理。
--之后的项目是作为参数处理,而不是作为选项。
3.路径(PATHNAMES)
在GRUB环境中,文件路径被写为(hd0,1)/path/to/filename。
一个典型的磁盘驱动器被定义为(hd0,1),它被计算机的固件识别为“第一硬盘的第一分区”(和其相似的还有/dev/hda1,/dev/sda1,"C:
"orPC-BIOS'drive"80")。
注:
分区编号是从1开始(如Linux'hda1)在grub-V1中分区号是从0开始。
路径/path/to/filename是分区文件系统的常规路径名。
注:
在访问磁盘时,必须加载分区模块和文件系统模块,以便能够访问这些文件。
(在pc上,最典型的是加载biosdisk+pc+ext2模块。
)
如果未指定磁盘(驱动器,分区)那末路径的前缀是由变量root的内容决定。
常见的的磁盘名称:
(fd0),第一个软盘驱动器。
(fd1),第二个软盘驱动器
(hd0),第一硬盘驱动器(由计算机固件识别)。
(hd0,1),第一个硬盘驱动器的第一分区。
(memdisk),Grub's[memdisk](虚拟磁盘,包括在core.img)。
(host),Grub-emu's[hostfs]disk。
(ata0),当使用可选的[ata]模块,这是第一个IDE/ATA的外围设备(硬盘或光驱)。
[loopback]设备可以有的任意名字。
4.命令(COMMANDS)
提醒:
大多数命令是加载了相应的模块后才能使用(除了内建的命令)。
惯例:
在本文件中,当一个命令是由一个可加载模块实施,模块的名称写如[MyModule]。
4.1.内置命令(BUILT-COMMANDS)
4.1.1处理模块(Handlingmodules)
insmod[模块名|文件名]
插入一个模块。
他的参数可以是一个文件或模块名称。
需要在磁盘上读取模块所需的磁盘,分区和文件系统模块应该已经加载(或预装在core.img中),以便能够从磁盘加载额外的模块。
如果一个模块是由它的名字规定,那末相应匹配的文件名则由变量prefix规定的文件夹中寻找(如(hd0,1)/boot/grub/)。
lsmod
列表加载的模块。
rmmod[模块名]
删除(卸载)一个模块。
4.1.2菜单项(MenuEntries)
menuentry"被显示的菜单项标题"{若干命令行}
菜单项是用命令menuentry指明的一个子程序。
当用户按"enter"(输入)键后,在本命令大括号之间所列出的命令被执行。
要浏览菜单,根据你的系统,您可能需要使用:
左箭头,右箭头,下箭头,上箭头,或<,>,v和^(对于非us键盘^按Shift+6),或Ctrl-b,Ctrl-f,Ctrl-n,Ctrl-p。
4.1.3环境变量(Environmentvariables)
Grub引导加载器有一些环境变量,可以使用$标示。
(例如echo$root)。
注意变量名是区分大小的。
set
列出环境变量。
setvar=value
设置变量=某一值。
unset
删除(取消设置)的环境变量。
exportvar
导出一个变量。
read变量
以用户输入设置变量。
Remarkablevariables:
rootvariable(特殊的变量:
根变量)
通常包含grub的根分区(如hd0,1)。
当磁盘被省略时,这个变量被加在路径前面。
4.1.4救援模式(Rescuemode)
rescue
进入救援模式。
4.2.操作系统装载机命令(OSLoaderscommands)
linux文件[参数...]
加载Linux内核。
[_linux]
initrd文件initrd
加载一个initrd。
[linux]
multiboot文件[参数...]
加载多重引导内核。
[_multiboot]
module文件[参数...]
加载多重引导模块。
[_multiboot]
chainloader[-f|--force]文件
准备启动另一个引导加载程序。
[chain]
-f,--force:
强制链接,忽略无效的分区签名(!
=0xaa55)。
boot
启动指定的操作系统(当内核和模块指定后,即应该指定它)。
这个命令是隐含在菜单项..(menuentries..)的结尾[boot]
freebsd文件[选项][参数...]
加载freebsd内核。
[_bsd]
freebsd_loadenv文件
加载freebsd的环境。
[_bsd]
freebsd_module[文件[type=module_type][参数...]]
加载freebsd的模块。
[_bsd]
netbsd文件[选项][参数...]
加载netbsd的内核。
[_bsd]
openbsd文件[选项][参数...]
加载openbsd的内核。
[_bsd]
4.3.脚本命令(Scriptingcommands)
if[表达式]then[命令]else[命令]
例如if[A=B];thenecho"foo";elseecho"bar";fi(不要在"A=B"之间放置空格...似乎并不是变量;)
[string=string][字符串=字符串]
teststring=string
评估一个表达式。
目前,仅支持A=B格式的表达式。
[test]
configfile文件
加载另一个配置文件。
[configfile]
source文件
.FILE
加载另一个配置文件,不改变文件的上下文。
[configfile]
search[-f|-l][[-s|--set]]NAME
用文件或文件系统标号搜索设备。
如果--set指定了变量,发现第一个设备设置给这个变量。
如果没有指定变量名,则"root"(根)作为变量名。
[search]
search[-f|--file]NAME
用一个文件搜索设备。
search[-l|--label]]NAME
通过文件系统的标签搜索设备。
echo[-e][-n]FILE
在标准输出上打印参数,以空格分隔。
[echo]
-n
不输出尾随的换行符。
-e
启用解释反斜杠转义:
\a待办事项
\c随后输出被制止。
这是通常用于在最后一个参数结束,制止尾随的新行的输出。
待办事项需要进行测试。
\f输出formfeed.
\n输出一个换行符。
\r输出一个回车。
\t输出(水平)制表符。
\v输出一个垂直制表符。
\0待办事项。
\\输出一个反斜杠。
所有其他反斜杠序列引起不确定的行为。
sleep[-v][-i]秒数
等待指定秒数。
[sleep]
-v,--verbose
详细的倒计时(显示剩余的数秒)。
-i,--interruptible
按Escape键中断倒计时。
cmp文件1文件2
比较两个文件。
[cmp]
[EXPRESSION]
评估表达式。
[test]
test表达式
评估表达式。
[test]
4.4.工具(Tools)
help[PATTERN...]
显示帮助信息。
[help]
ls[-l|-h|-a][FILE]Listdevicesandfiles.[ls]
-l
--long
显示更详细的资料。
-h
--human-readable
以人可读的格式打印大小。
-a
--all
列出所有文件。
hello
问好[hello]
hexdump[-soffset][-nlength]{FILE|(mem)}
转储文件或内存中的内容。
[hexdump]
-soffset
--skipoffset
跳过从文件开始偏移字节。
-nlength
--lengthlength
只读长字节。
cat文件
显示的内容的文件。
[cat]
cpuid
检查CPU的功能。
运行cpuid-h将列出可用cpuid测试。
Asampleuseisavailableinthesamplebelow.下面是一个示例。
[cpuid@i386]目前唯一可用的测试
-l
long-mode
检查长模式标志。
lspci
列出所有PCI设备。
[lspci]输出看起来像"00:
00.08086:
27a0.0DeviceClass"。
halt[-n]
关闭系统,如果可能的话使用APM(自动电源管理)。
[halt]([@ieee1275]:
此命令不能适用所有的固件)
-n
--no-apm
不用APM关闭计算机。
[@i386]
reboot
重新启动计算机。
[reboot@i386,@ieee1275]
suspend
返回到固件提示[suspend@ieee1275]
blocklistFILE
打印块列表。
[blocklist]
loopback[-d|-p]设备名文件
制作一个文件设备。
[loopback]待办事项进一步讲解。
-d设备名文件
--delete设备名文件
删除回环设备项(loopbackdeviceentry)。
-p设备名文件
--partitions设备名文件
设置的驱动器具有分区来模拟硬盘。
play文件
播放曲子。
[play@i386]
4.6.终端(Terminal)
terminal[项目...]
选择一个终端。
[terminal]
项目可以是下列之一(如果适当模块支持和加载):
console:
默认终端(只支持ASCII文本)[@i386,@efi]。
ofconsole:
默认终端(只支持ASCII文本)[@ieee1275]。
gfxterm:
一种图形终端,它可以很好地显示位图背景!
它要求VESA兼容卡。
[gfxterm@i386:
pc]在转到gfxterm以前,您应该确保您已加载了适当的字体。
vga:
一种图形模式的终端,不支持位图,但是支持Unicode的字体,它是与非常老的电脑兼容。
[vga@i386:
pc]
serial:
调用不带参数的terminal,列出当前和可用的终端(基于当前已经加载的模块)。
serial[选项...]
配置串行端口[serial@i386]默认配置是port0,为9600bps8N1
-u,--unit[0|1|2|3]设置串行端口号(默认=)
-p,--port[0x3f8|0x2f8|0x400|..]设置串行端口地址(默认是:
0x3f8i在i386:
pc;0x400在其他计算机上)
-s,--speed[2400|4800|9600|19200|38400|57600|115200]设置串行端口的速度。
DTE-DTE的速度。
(默认=9600)
-w,--word[5|6|7|8]设置串行端口的字长,以bit计(默认值=8)
-r,--parity[no|odd|even]设置串行端口的校验(默认=no)
-t,--stop[1|2]设置串行端口的停止位(默认值=1)
为了浏览菜单,必须使用键盘<,>,v和^代替箭头键(对于非US键盘,^是按Shift+6)。
loadfont文件...
指定一个或多个字体文件来显示。
[manager]
background_image文件
为活动终端装载背景图片,在下列格式之一:
[gfxterm]
[tga]:
24位或32位,RLE或不压缩。
[jpeg]:
(很可能只支持DCT-Integer-8bit,1x1)
[png]:
8-bitdepthRGBorRGBA(ie3*8=24bitsof4*8=32bits),Uncompressedor"Deflated",Unfiltered,Non-interlaced.
terminfo[TERM]
设置terminfo的类型。
[terminfo]
videotest
测试视频子系统。
[videotest]
要设置屏幕分辨率,你应该在装载vbe和/或gfxmterm(默认模式是0x101就是640x4808bpp)以前,设置变量$vbe_mode
vbeinfo
列出兼容VESABIOS扩展视频模式。
[vbeinfo@i386]
已知的BUG:
这个视频模式报告的是变量$vbe_mode的内容,而不是实际的分辨率。
vbetest
测试VESABIOS的扩展2.0+的支持。
[vbetest@i386]
测试模式指定在变量$vbe_mode,默认值0x101(640×4808bpp)
jpeg文件格式限制:
未知(只有8位精度?
)。
菜单颜色()可以设置以下变量:
setmenu_color_normal前景色/背景色
菜单上的文本和边框前景色和背景色。
setmenu_color_highlight前景色/背景色
菜单选择的前景色和背景色。
这里前景色和背景色可以是一种:
black黑色
blue蓝色
green绿色
cyan青色
red红色
magenta品红
brown褐色
light-gray浅灰色
dark-gray暗灰色
light-blue淡蓝色
light-green浅绿色
light-cyan光青
light-red光红
light-magenta光品红
yellow黄色
white白色
如果你的终端有图形功能,你可以加载一个背景图像。
setroot=(hd0,1)
loadfont/boot/grub/unicode.pf2
setgfxmode=640x480
insmodterminal
insmodgfxterm
insmodvbe
setmenu_color_normal=white/black
setmenu_color_highlight=white/grey
terminalgfxterm
insmodtga
background_image/boot/grub/bg.tga
4.7.支持平台/固件(Supportedplatforms/firmware)
i386-pc
i386-efi
i386-linuxbios
i386-ieee1275
sparc64-ieee1275
powerpc-ieee1275
5.样本(SAMPLE)
略
6.作者(AUTHOR)
ProgramWrittenbyYoshinoriK.Okuji,RobertMillan,MarcoGerardsandothers(seeAUTHORSfile).
ManpageWrittenbyFranklinPiat.
7.版权(COPYRIGHT)
Copyright©2008FreeSoftwareFoundation,Inc.
8.翻译
luanqh