使用‘grub.cfg’来配置GRUB,这个文件通常在‘/boot/grub’下。这个文件相当灵活,不过绝大多数用户都不需要手工地写出整个文件。
程序grub-mkconfig(参考第20章【调用grub-mkconfig】,53页)产生适用于大多数情形的‘grub.cfg’文件。它可用于升级一个发布版本,它将发现可用的内核,并尝试为它们产生菜单项。
grub-mkconfig确实有某些缺陷。当向列表末尾加入额外定制菜单项,可用通过编辑‘/etc/grub.d/40_custom’或构建‘/boot/grub/custom.cfg’来完成;改变菜单项的次序,或修改它们的名称,可能要求对保存在‘/etc/grub.d/’下的shell脚本进行复杂的修改。在未来这可能会得到改进。在此期间,谁要感到直接写‘grub.cfg’会更简单,我们鼓励他这样做 (参考第4章【启动】,7页,及5.2节【类Shell脚本】,15页),并禁止他们的发布版本中所提供的能自动运行grub-mkconfig的系统。
文件‘/etc/default/grub’控制grub-mkconfig的作用。它为一个shell脚本所寻求,因此必须是有效的POSIX shell输入;通常,它将仅是一系列的‘KEY=value’行,不过如果value包含空格或其它特殊字符,那么就必须用引号括起来。像这样:
GRUB_TERMINAL_INPUT="console serial"
在‘/etc/default/grub’里有效的键值有以下这些:
GRUB_DEFAULT
缺省菜单项。这可以是一个数值,此时它标记所生成菜单从0起计的第N项;或者是一个菜单项的名称;或特殊字符串‘saved’。如果你想把一个菜单项设置为缺省,即使在它之前的有不定数目的菜单项,可用菜单项名称。比如,如果你有:
menuentry ‘Example GNU/Linux distribution’ --class gnu-linux {
...
}
那么你可以使之成为缺省,使用:
GRUB_DEFAULT=’Example GNU/Linuxdistribution’
如果你设置为‘saved’,那么缺省菜单项将是被GRUB_SAVEDEFAULT,grub-set-default,或grub-reboot保存的那个。
这个选项的缺省值是‘0’。
GRUB_SAVEDEFAULT
如果这个选项被设置为‘true’,那么,当选中一个菜单项时,把它保存为GRUB下一次运行时的缺省项。这仅在‘GRUB_DEFAULT=saved’时有用;它是另一个选项,因为没有它,‘GRUB_DEFAULT=saved’与grub-set-default或grubreboot一起还是可用的。默认不设置这个选项。这个选项依赖于环境块,环境块可能在某些情形下不可用(参考13.2节【环境块】,35页)。
GRUB_TIMEOUT
在显示菜单这么多秒之后,启动缺省项,除非按下一个键。缺省值是‘5’。设置为‘0’会直接启动而不显示菜单,或设置为‘-1’来无限等待。
GRUB_HIDDEN_TIMEOUT
在显示菜单之前,给这么多秒来按键。如果没有按键,将直接启动。默认不设置这个选项。
GRUB_HIDDEN_TIMEOUT_QUIET
与‘GRUB_HIDDEN_TIMEOUT’一起使用,把它设置为‘true’来抑制,在显示菜单前,显示等待按键的时间倒数。默认不设置这个选项。
GRUB_DEFAULT_BUTTON
GRUB_TIMEOUT_BUTTON
GRUB_HIDDEN_TIMEOUT_BUTTON
GRUB_BUTTON_CMOS_ADDRESS
对应变量没有‘_BUTTON’后缀的变体,用于支持特定于厂商的电源按钮。参考第9章【厂商电源键】,25页。
GRUB_DISTRIBUTOR
由GRUB的发布者设置他们的标识名。这用于产生更具信息量的菜单项名称。
GRUB_TERMINAL_INPUT
选择终端输入设备。在这里你可能可以选择多个设备,由空格分开。
有效的终端输入名依赖于平台,不过可能包括‘console’(PC BIOS及EFI控制台),‘serial’(串行终端),‘ofconsole’(开放固件控制台),‘at_keyboard’(PC AT键盘,主要用在Coreboot),或‘usb_keyboard’(使用HID启动协议的USB键盘,此中固件不对其进行处理)。
缺省是使用平台原生的终端输入。
GRUB_TERMINAL_OUTPUT
选择终端输出设备。在这里你可能可以选择多个设备,以空格分开。
有效的终端输出名依赖于平台,不过可能包括‘console’(PC BIOS及EFI控制台),‘serial’(串行终端),‘gfxterm’(图形模式输出),‘ofconsole’(开放固件控制台),或‘vga_text’(VGA文本输出,主要用在Coreboot)。
缺省是使用平台原生的终端输出。
GRUB_TERMINAL
如果设置这个选项,它的值同时覆盖‘GRUB_TERMINAL_INPUT’及‘GRUB_TERMINAL_OUTPUT’的值。
GRUB_SERIAL_COMMAND
当使用串行控制台时,配置串行端口的命令。参考14.2.1节【串行】,36页。缺省是 ‘serial’。
GRUB_CMDLINE_LINUX
加入用于Linux内核菜单项的命令行参数。
GRUB_CMDLINE_LINUX_DEFAULT
除非‘GRUB_DISABLE_RECOVERY’被设置为‘true’,每个Linux内核将产生两个菜单项:一个缺省项,一个恢复模式项。这个选项,在‘GRUB_CMDLINE_LINUX’所列出的参数后,列出了向缺省菜单项加入的命令行参数。
GRUB_CMDLINE_NETBSD
GRUB_CMDLINE_NETBSD_DEFAULT
类似于‘GRUB_CMDLINE_LINUX’及‘GRUB_CMDLINE_LINUX_DEFAULT’,不过用于NetBSD。
GRUB_CMDLINE_XEN
GRUB_CMDLINE_XEN_DEFAULT
类似于‘GRUB_CMDLINE_LINUX’及‘GRUB_CMDLINE_LINUX_DEFAULT’,不过用于Linux及Xen。
GRUB_DISABLE_LINUX_UUID
通常,grub-mkconfig将产生使用全局唯一标识符(UUID)的菜单项来识别Linux内核的根文件系统,使用一个‘root=UUID=...’内核参数。这通常会更可靠,不过在某些情形下它可能不合适。把这个选项设置为‘true’,来禁止UUID的使用。
GRUB_DISABLE_RECOVERY
如果这个选项设置为‘true’,禁止产生恢复模式的菜单项。
GRUB_VIDEO_BACKEND
如果要求支持图形视频,或者因为使用了‘gfxterm’图形终端,或者因为设置了‘GRUB_GFXPAYLOAD_LINUX’,那么grubmkconfig通常将载入所有可用的GRUB视频驱动器,并使用对于你的硬件最合适的那个。如果出于某种原因,你需要改变这个行为,那么你可以设置这个选项。
在运行了grub-install之后,可用的视频驱动器被列出在‘/boot/grub/video.lst’里。
GRUB_GFXMODE
设置‘gfxterm’图形化终端上的分辨率。注意你只可使用你的显卡通过VESA BIOS扩展(VBE)所支持的模式,因此例如LCD面板原始分辨率不可用。缺省值是 ‘640x480’。参考13.1.8节【gfxmode】,32页。
GRUB_BACKGROUND
设置‘gfxterm’图形化终端上的分辨率的背景图像。这个选项的值必须是GRUB在启动时刻可读的一个文件,并且它必须以‘.png’,‘.tga’,‘.jpg’,或‘.jpeg’结尾。如果需要适合屏幕,这个图像将被拉伸。
GRUB_THEME
设置用于‘gfxterm’图形化终端的一个主题。
GRUB_GFXPAYLOAD_LINUX
设置为‘text’来强制Linux内核以普通文本模式启动,设置为‘keep’来保留使用‘GRUB_GFXMODE’的图形模式设置,‘widthxheight’[‘xdepth’]来设置特定的图形模式,或一组由逗号或分号分隔的,依次尝试的模式。参考13.1.9节【gfxpayload】,32页。
依赖于你的内核,你的发布版本,你的显卡,及月相,注意到使用这个选项可能导致GNU/Linux遭受各种显示问题,特别是在启动的前期。如果你遇到问题,设置这个选项为‘text’,GRUB将告诉Linux以普通的文本模式启动。
GRUB_DISABLE_OS_PROBER
通常,grub-mkconfig会尝试使用外部的OS搜索程序,如果安装了的话,来发现安装在同一个系统中的其它操作系统,并为之产生合适的菜单项。设置这个选项为‘true’来禁止之。
GRUB_INIT_TUNE
在GRUB启动时,调整扬声器的音量。这对于不能看到屏幕的用户尤其有用。这个选项的值直接传递到14.3.35节【play】,44页。
GRUB_BADRAM
如果设置了这个选项,GRUB产生一个badram命令(参考14.3.2节【badram】,38页)来过滤掉指定区域的RAM。
GRUB_PRELOAD_MODULES
这个选项可以被设置为由空格分开的GRUB模块名的列表。在grub.cfg’开始时,每个模块将被尽早载入。
至于更细致定制grub-mkconfig的输出,你可以直接编辑在‘/etc/grub.d’目录中的脚本。对于加入定制的菜单项,‘/etc/grub.d/40_custom’尤其有用;只要确保至少不改动头两行,在文件末尾输入你想加入的菜单项。
‘grub.cfg’以GRUB的内置脚本语言来编写,其词法与GNU Bash及其他Bourne衍生shell的词法相当类似。
字
一个字是一组被GRUB视为一个单元的字符。字由元字符分隔,元字符是以下字符,加上空格,tab,及换行符:
{ } | & $ ; < >
引用可能被用于在字中包含元字符;参见下面。
保留字
对于GRUB保留字有特殊的含义。以下的字不被引号包含时,被识别为保留字;还有简单命令的第一个字,或一个for命令的第三个字:
! [[ ]] { }
case do done elif else esac fi for function
if in menuentry select thentime until while
不是所有的保留字都有意义;有些保留为将来使用。
引用
引用用来移去某些字符或字的特殊含义。它可以把元字符处理为字的一部分,这样防止保留字被识别,及阻止变量展开。
有三种引用方法:转义符,单引号,及双引号。
一个非引用的反斜杠(\)是转义符。它保留下一个字符的字面值,除了换行符。
包含在单引号中的字符保留了每个字符的字面值。一个单引号不能出现在两个单引号之间,就算它跟在一个反斜杠后。
包含在双引号中的字符保留了所有字符总的字面值,除了‘$’及‘\’。字符‘$’在双引号内保持其特殊的含义。反斜杠保持其特殊含义,仅当后跟以下字符之一:‘$’,‘"’,‘\’,或换行符。一个反斜杠-换行符对被处理作一个行延续(即,它从输入流中移出并忽略(当前在一个变量名中的反斜杠-换行符对没有得到正确处理,因此小心使用这个特性))。一个双引号可以在两个双引号之间,跟在一个反斜杠后被引用。
变量展开
字符‘$’引出变量展开。将要展开的变量名可能被包括在大括号中,这是可选的,用于防止跟在变量后的字符被解释为变量名的部分而展开变量。
普通的变量名以一个字母开头,后跟0个或多个字母数字。这些名字引用GRUB环境中的记录(entries)(参考第13章【环境】,30页)。
位置变量名包含一个或多个数字。它们代表传给函数调用的参数,‘$1表示第一个参数,以此类推。
特殊变量名‘?’展开为最近执行命令的退出状态。当位置变量名是有效的,其它特殊变量名‘@’,*’及‘#’被定义,它们分别展开为:带有必要引用的所有位置变量,不带任何引用的位置变量,及位置变量个数。
注释
以‘#’开头的一个字使得该字,及该行上余下的字符被忽略。
简单命令
一个简单命令是一组由空格或tab分隔,并以分号或换行符结尾的字。第一个字指定了要执行的命令。余下的字被作为参数传给调用的命令。
一个简单命令的返回值是其退出状态。如果在命令之前是保留字!,那么返回值是该命令退出状态的逻辑否定。
复合命令
一个复合命令是以下之一:
for namein word . . . ; do list; done
跟在in后的字列表被展开,产生一个项列表。变量name被依次设置到这个列表的每个元素,并每次执行list。返回值是最后一个执行的命令的退出状态。如果跟在in后的这些项的展开是一个空列表,没有命令执行,那么返回状态是0。
if list;then list; [elif list; then list;] . . .[else list;] fi
执行if list。如果它的退出状态是0,那么执行then list。否则,依次执行每个elif list。如果其退出状态是0,执行相应的then list,并完成这个命令;否则,执行else list,如果有的话。其退出状态是最后执行命令的退出状态,或0如果没有条件测试成立。
while cond; do list; done
until cond;do list; done
while 命令持续执行do list,只要cond中最后的命令返回为0的退出状态。Until命令与while命令相同,除了测试是相反的;只要cond中最后的命令返回非0的退出状态,就执行do list。While及until命令的退出状态是最后执行的do list命令的退出状态,或0如果没有东西可执行。
function name { command; . . . }
这定义了名为name的一个函数。该函数体是大括号内的命令列表,每个命令以分号或换行符结尾。当name被指定为一个简单命令名,这个命令列表将被执行。函数定义不会影响在$?中的退出状态。在执行时,一个函数的退出状态是在其函数体内最后执行命令的退出状态。
menuentry title [‘--class=class’ . . . ] [‘--users=users’] [‘--hotkey=key’] {command;
. . . }
参考14.1.1节【菜单项】,36页。
内置命令
GRUB脚本也提供一些内置命令来帮助脚本作者完成其它方式不可能做到的动作。比如,这包括跳出一个循环的命令,等。
break [n] 从一个for,while,或until循环中退出。如果指定了n,跳出n层。N必须大于等于1。如果n大于封闭(enclosing)循环的层数,退出所有的封闭循环。返回值是0,除非n不是大于等于1。
continue [n]
重新开始封闭的(enclosing)for,while,until循环的下一次迭代。如果指定了n,重新开始第n层封闭循环。N必须大于等于1。如果n大于封闭循环的层数,重新开始最后的封闭循环(最上层的循环)。返回值是0,除非n不是大于等于1。
return [n] 促使一个函数以n所指定的返回值退出。如果n被省略,返回值是在该函数体内最后执行命令的返回状态。如果用在一个函数之外,返回值是false。
shift [n] 从n+1开始的位置参数被重命名到$1. . . 。由数字$#到$#-n+1所代表的参数被取消设置。N必须是一个小于等于$#的非负数。如果n是0,没有参数被改变。如果你n没有给出,就假定为1。如果n大于$#,位置参数不改变。返回值大于0,如果n大于$#或小于0;否则为0。
GRUB支持直接向core映像嵌入一个配置文件,以便在进入普通模式前载入它。这是有用的,比如,当查找真正的配置文件不容易做到,或当你需要调试载入这个文件的问题时。当不使用BIOS硬盘功能,或安装到包含‘/boot/grub’的硬盘以外的硬盘上,grub-install会使用这个特性,这些情况下它需要使用search命令(参考14.3.40节【search】,44页)来查找‘/boot/grub’。
要嵌入一个配置文件,向grub-mkimage使用‘-c’选项。文件被拷贝入Core映像,因此它可能处在文件系统的任意角落,并在运行grub-mkimage之后,可能被移除。
执行了嵌入配置文件之后(如果有的话),GRUB将载入‘普通’模块(参考14.3.30节【normal】,42页),它将从‘$prefix/grub.cfg’读入真正的配置文件。此时,变量root也已经被设置为根设备名。比如,prefix可能被设置为‘(hd0,1)/boot/grub’,而root则可能被设置为‘hd0,1’。那么,在绝大多数情形下,嵌入配置文件只需设置变量prefix及root ,然后转到GRUB的普通处理。一个典型的例子看起来可能向这样:
search.fs_uuid01234567-89ab-cdef-0123-456789abcdef root
set prefix=($root)/boot/grub
(使得这个例子工作,必须把‘search_fs_uuid’模块包含在core映像里)。
在更复杂的情形中,直接从嵌入的配置文件中读入其它配置文件,可能是有用的。这允许诸如:读入不叫‘grub.cfg’的文件,或从GRUB的可加载模块的安装目录以外读入文件。要这样做,在core映像中包括‘configfile’及‘normal’模块,并嵌入一个使用configfile命令来载入另一个文件的配置文件。下面的例子还要求在core映像中包括echo,search_label,及test模块:
search.fs_label grub root
if [ -e /boot/grub/example/test1.cfg ]; then
set prefix=($root)/boot/grub
configfile /boot/grub/example/test1.cfg
else
if [ -e /boot/grub/example/test2.cfg ]; then
set prefix=($root)/boot/grub
configfile /boot/grub/example/test2.cfg
else
echo "Could not find an example configuration file!"
fi
fi
嵌入配置文件可能不直接包含菜单项,但可能使用configfile从其它地方读入它们。
GRUB图形化菜单支持可以定制GRUB启动菜单的布局与外观的主题(theme)。主题通过一个指定了各个GUI组件(包括启动菜单,超时进度条,及文本消息)布局,以及外观所使用颜色,字体及图像,的文本文件进行配置。在docs/example theme.txt有例子。
颜色可以以几种方式来指定:
GRUB使用“PFF2font format”位图字体。字体通过完整的字体名指定。当前不提供首选字体列表,或从其它字体派生。字体在GRUB中使用“loadfont”命令载入。为了查看载入的字体列表,运行“lsfonts”命令。如果字体太多,屏幕容纳不下,在执行“lsfonts”之前,执行“set pager=1”。
进度条用于显示多少时间后GRUB启动默认菜单项。要创建在自动启动前显示剩余时间的进度条,简单地构建一个带有标识“__timeout__”的“progress bar”组件。这指示GRUB该进度条应随时更新,并且自动启动倒数被用户中断后成为不可见。
进度条可能是透明的,上面显示了文本。这通过“show text”属性来控制,这个属性可以被设置为“true”或“false”来控制是否显示文本。当GRUB进行自动启动倒数时,该文本提醒用户余下的时间。
圆形进度指示器的功能类似于进度条。当给出标识“__timeout__”,GRUB更新圆形进度指示器的值来表示余下的时间。至于圆形进度指示器,有两个图像可用于实施:center图像,及tick图像。center图像实施在组件的中间,而tick图像用于实施沿指示器周边的每个标记。
文本标签可以放置在启动屏幕上。可以为标签指定字体,颜色,及水平对齐。如果一个标签给定了标识“__timeout__”,那么该标签的“text”属性也会被更新来提醒用户自动启动的余下时间。如果你希望该文本显示在其它地方,而不是直接显示在进度条上,这是有用的。
GRUB在启动菜单中显示来自“grub.cfg”文件的菜单项。这是一个项列表,其中每个项具有一个标题及一个可选的图标。图标基于为菜单项指定的类别(class)来选定。如果在目录“grub/themes/icons”中有一个名为“myclass.png”PNG文件,它将被为具有类别myclass的项所显示。启动菜单可以几个方式来定制,比如用于菜单项标题的字体及颜色,为菜单本身及选中高亮项指定样式盒。
一个定制布局的重要特性是使用样式盒。一个样式盒是由9个长方形(很可能是空的)区域组成,它们用于在屏幕上无缝地绘制样式盒:
Northwest (nw) North (n) Northeast (ne)
West (w) Center (c) East (e)
Southwest (sw) South (s) Southeast (se)
为了在屏幕上支持任意尺寸的盒子,中间部分及上,下,两边的部分都被拉伸到屏幕上组件的正确大小,这使用以下规则:
1. 边界部分(北,南,东,及西)都被向相邻的边界方向拉伸。例如,西边界垂直拉伸。
2. 角落部分(西北,东北,东南,及西南)不被拉伸。
3. 中间部分被拉伸来填充中部余下的空间。
作为一个图像可能如何被切分的例子,考虑用于终端视图的样式盒。
对于构建样式盒图形,Inkscape可伸缩向量图形编辑器是一个非常用于的工具。对于可以很好切分一个图画为所需的图像切片的一个过程是:
1. 创建或打开你喜欢使用的图画。
2. 在层堆栈(layerstack)的顶部构建一个新的层。使得它可见。选择这个层作为当前层。
3. 在你的图画你喜欢切片的部分上绘制9个长方形。清除填充选项,并设置笔画为1像素宽的实笔画。分片的四角必须精确对齐;如果偏差了一个像素,当样式盒实施在GRUB菜单里时,它将可能变得明显。你可能应该跑到File | Document Properties |Grids并激活一个网格,或创建一个向导(点击靠近图画的其中一个标尺,并把它拖过图画;释放鼠标键以放置向导)来帮助精确放置这些矩形。
4. 右键点击中间矩形切片,选择Object Properties。把“Id”改为“slice c”,然后点击Set。余下的8个矩形重复上述操作,根据位置,把它们的Id值设为“slice n”,“slicene”, “slice e”,以此类推。
5. 保存图画。
6. 选定所有的矩形切片。选定了切片层后,你可以按下Ctrl+A来选定所有的矩形。状态条将显示选定了9个矩形。
7. 在层调色板(layerpalette)上为这个切片层点击层隐藏(layer hide)图标。即便被隐藏了,矩形仍将保持选中。
8. 选择File| Export Bitmap,然后勾上Batch export 9 selected objects。确保Hide all except selected没有被勾上。这将在图画所在目录中构建以切片命名的PNG文件。这些现在可以被用于一个GRUB主题的一个样式盒。
主题文化是一个纯文本文件。以开头“#”的行被视为注释并忽略。(注意:如果上一行结束在期望一个值的地方,这可能不适用)。
主题文件包含两种语句:
1. 全局属性。
2. 组件构建。
全局属性使用简单格式来指定:
l name1: value1
l name2: "value which may contain spaces"
l name3: #88F
在这个例子中,name3被赋予了一个颜色值。
title-text 指定作为显示在屏幕顶部中间的标题的文本。
title-font 定义用于在屏幕顶部的标题消息的字体。
title-color 定义标题消息的颜色。
message-font 定义用于诸如,当GRUB不能自动启动一个项时的消息字体。
message-color 定义消息文本的颜色。
message-bg-color 定义消息文本区域的背景颜色。
desktop-image 指定用作背景的图像。它将被拉伸到匹配屏幕的尺寸。
desktop-color 如果没有指定desktopimage ,指定背景颜色。
terminal-box 指定用于命令行终端窗口的样式盒切片的文件名模式(file name pattern)。例如,“terminal-box: terminal_*.png”将把图像“terminal_c.png”用于中部区域,“terminal_n.png”用在北(上)边界,“terminal_nw.png”用在东北(左上)角,以此类推。如果没有找到用于切片的图像,切片部分将留白。
组件提供了更多的定制能力。一棵组件树构成了用户接口。容器(container)是包含其它组件的组件,总是存在一个根组件,它是一个canvas容器的实例。
通过向组件类型添加前缀‘+’,在主题文件中创建组件:
+ label { text="GRUB" font="aqui 11"color="#8FF" }
一个组件的属性以“name = value”(符号两边的空格是可选的,它们会被忽略)形式指定, 其中value可能是:
以下是组件列表,及它们所支持的属性。
属性:
text 要显示的文本。
font 用于文本显示的字体。
color 文本的颜色。
align 该组件内文本的水平对齐。选项有“左”,“中”,及“右”。
属性:
file 要载入图像的完整路径。
属性:
fg color 用于实心矩形实施的前景颜色。
bg color 用于实心矩形实施的背景颜色。
border color 用于实心矩形实施的边界颜色。
text color 文本颜色。
show text 指示是否在进度条上显示文本的布尔值。如果设置为false,在进度条上不显示文本。如果设置为其它值,将在进度条上显示文本。
bar style 用于进度条边框的样式盒描述。例如:“progress_frame_*.png”
highlight style 用于进度条高亮区域样式盒描述。这个盒子只被用于绘制进度条的高亮区域,并随着进度条趋于完成而增长。例如:“progress_hl_*.png”。
text 显示在该进度条上的文本。如果该进度条的ID被设置为“__timeout__”,那么GRUB将用超时信息来更新这个属性。
value 进度条的当前值。通常不手工设置。
start 进度条的起始值。通常不手工设置。
end 进度条的结束值。通常不手工设置。
属性:
center_bitmap 绘制在组件中间的图像的文件名。
tick_bitmap 用于绘制刻度线的图像的文件名。
num_ticks 构成完整圆的刻度数。
ticks_disappear 指示随着value接近end,刻度是逐步出现,抑或逐步减少。指定“true”或“false”。
value 进度指示器当前值。通常不手工设置。
start 进度指示器起始值。通常不手工设置。
end 进度指示器结束值。通常不手工设置。
属性:
item_font 用于菜单项标题的字体。
selected_item_font 用于选中菜单项的字体,或“inherit”(缺省)为选中菜单项使用“item_font”。
item_color 用于菜单项标题的颜色。
selected_item_color 用于选中菜单项的颜色,或“inherit”(缺省)为选中菜单项使用“item_color”。
icon_width 菜单项图标的宽度。图标被拉伸到所要求的大小。
icon_height 菜单项图标的高度。
item_height 每个菜单项以像素计算的高度。
item_padding 菜单项周边所留出的以像素计算的空间。
item_icon_space 一个项图标与标题文本之间以像素计算的距离。
item_spacing 菜单项之间以像素计算的距离。
menu_pixmap_style 用于菜单边框样式盒的图像文件模式(image file pattern)。例如:“menu_*.png”(将使用诸如“menu_c.png”,“menu_w.png”,“menu_nw.png”等图像)
selected_item_pixmap_style 用于选中项高亮样式盒的图像文件模式(image file pattern)。
scrollbar 指示如果配置了边框及缩略图(thumb)样式盒,是否绘制滚动条。
scrollbar_frame 用于整个滚动条的图像文件模式(image file pattern)。例如:“scrollbar_*.png”。
scrollbar_thumb 用于滚动条缩略图(当发生滚动时,滚动条移动部分)的图像文件模式。例如:“scrollbar_thumb_*.png”。
max_items_shown 在菜单上显示的最大项目数。如果在菜单中有多于max_items_shown个项,这个列表将可滚动,使得可以访问所有的项。
以下属性为所有组件所支持:
left 以下面三种格式之一,从容器的左边界到对象左边界的距离:
x 像素值
p% 百分比
p%+x 两者混合
top 同样格式的从容器的左边界到对象左边界的距离(译:有误,应该为顶部)。
width 同样格式的对象宽度。
height 同样格式的对象高度。
id 组件的标识符。这可以是任意字符串。这个ID可以被脚本使用来在GUI组件树中引用不同的组件。当前,GRUB只识别一个特殊ID:
“__timeout__”任何具有这个ID的组件,在自动启动缺省菜单项倒数时,由GRUB来设置其text,start,end,value,及visible属性。