前几天在http://grub.enbug.org/FranklinPiat/grub.cfg.manpage上看到这篇介绍grub.cfg的文章,觉得比较好;grub 1版和2版的很大不同之一就是启动配置文件由menu.lst变为grub.cfg,所以熟悉grub.cfg对grub2的使用是很关键的。此文版本较老,有少量我已作了修改,还有一些我自己也不了解,请谅解。此文仅供初学者参考。
以下是正文:
--------------------------------------------------------------------------------
Grub v2 手册
The pages contributed here (FranklinPiat/*) were an attempt to write some documentation for Grub2. This documentation isn't updated anymore (since grub2-1.96+20080203 approximately)
This work, and (any further contribution), has copyright attribution to FSF. It's dual licensed under GPLv1 or later and GFDL.
--------------------------------------------------------------------------------
grub.cfg --- GRUB2版的启动配置文件
1.描述 (DESCRIPTION)
grub.cfg不是一个真正的配置文件,它实际上是一个由grub2的引导程序执行的bash 类脚本文件。各种指令或者是内置的,或作为外部模块在使用前加载。
菜单的结构实际上是由 menuentry 命令所表明。 一个菜单项(menu entry)是一种功能,用户选择它时被调用。
在大多数情况,/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:" or PC-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 处理模块(Handling modules)
insmod [模块名|文件名]
插入一个模块。他的参数可以是一个文件或模块名称。需要在磁盘上读取模块所需的磁盘,分区和文件系统模块应该已经加载(或预装在 core.img中),以便能够从磁盘加载额外的模块。
如果一个模块是由它的名字规定,那末相应匹配的文件名则由变量prefix规定的文件夹中寻找 (如(hd0,1)/boot/grub/)。
lsmod
列表加载的模块。
rmmod [模块名]
删除(卸载)一个模块。
4.1.2 菜单项 (Menu Entries)
menuentry "被显示的菜单项标题" { 若干命令行 }
菜单项是用命令menuentry指明的一个子程序。当用户按"enter"(输入)键后,在本命令大括号之间所列出的命令被执行。
要浏览菜单,根据你的系统,您可能需要使用: 左箭头,右箭头 , 下箭头,上箭头 , 或< , >,v和^(对于非us键盘 ^ 按Shift +6), 或 Ctrl-b , Ctrl-f , Ctrl-n , Ctrl-p。
4.1.3 环境变量 (Environment variables)
Grub引导加载器有一些环境变量,可以使用$标示 。( 例如 echo $root )。注意变量名是区分大小的。
set
列出环境变量。
set var=value
设置变量=某一值。
unset
删除(取消设置)的环境变量。
export var
导出一个变量。
read 变量
以用户输入设置变量。
Remarkable variables:root variable (特殊的变量:根变量)
通常包含grub的根分区(如hd0,1)。当磁盘被省略时,这个变量被加在路径前面。
4.1.4 救援模式 (Rescue mode)
rescue
进入救援模式。
4.2. 操作系统装载机命令(OS Loaders commands)
linux 文件 [参数...]
加载Linux内核。 [_linux]
initrd 文件 initrd
加载一个initrd。 [linux]
multiboot 文件 [参数...]
加载多重引导内核。 [_multiboot]
module 文件 [参数...]
加载多重引导模块。 [_multiboot]
chainloader [-f|--force] 文件
准备启动另一个引导加载程序。 [chain]
-f , --force :强制链接,忽略无效的分区签名(!= 0xaa55)。
boot
启动指定的操作系统(当内核和模块指定后 ,即应该指定它)。这个命令是隐含在菜单项..(menu entries..)的结尾 [boot]
freebsd 文件 [选项] [参数...]
加载freebsd内核。 [_bsd]
freebsd_loadenv 文件
加载freebsd的环境。 [_bsd]
freebsd_module [文件 [type=module_type] [参数...]]
加载freebsd的模块。 [_bsd]
netbsd 文件 [选项] [参数...]
加载netbsd的内核。 [_bsd]
openbsd 文件 [选项] [参数...]
加载openbsd的内核。 [_bsd]
4.3. 脚本命令(Scripting commands)
if [表达式] then [命令] else [命令]
例如 if [ A=B ] ; then echo "foo" ; else echo "bar" ; fi (不要在"A=B"之间放置空格...似乎并不是变量;)
[ string=string ] [字符串=字符串]
test string=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 输出 form feed.
\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] List devices and files. [ls]
-l
--long
显示更详细的资料。
-h
--human-readable
以人可读的格式打印大小。
-a
--all
列出所有文件。
hello
问好[hello]
hexdump [ -s offset ] [-n length] { FILE | (mem) }
转储文件或内存中的内容。 [hexdump]
-s offset
--skip offset
跳过从文件开始偏移字节。
-n length
--length length
只读长字节 。
cat 文件
显示的内容的文件。 [cat]
cpuid
检查CPU的功能。运行 cpuid -h 将列出可用cpuid测试。 A sample use is available in the sample below.下面是一个示例。
[cpuid @i386] 目前唯一可用的测试
-l
long-mode
检查长模式标志。
lspci
列出所有PCI设备。 [lspci]输出看起来像"00:00.0 8086:27a0.0 Device Class"。
halt [-n]
关闭系统,如果可能的话使用APM(自动电源管理)。 [halt] ([@ ieee1275]:此命令不能适用所有的固件)
-n
--no-apm
不用APM关闭计算机。 [@i386]
reboot
重新启动计算机。 [reboot @i386,@ieee1275]
suspend
返回到固件提示 [suspend @ieee1275]
blocklist FILE
打印块列表。 [blocklist]
loopback [-d|-p] 设备名 文件
制作一个文件设备。 [loopback] 待办事项进一步讲解。
-d 设备名 文件
--delete 设备名 文件
删除回环设备项(loopback device entry)。
-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,为9600bps 8N1
-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-bit depth RGB or RGBA (ie 3*8=24 bits of 4*8=32bits), Uncompressed or "Deflated", Unfiltered, Non-interlaced.
terminfo [TERM]
设置terminfo的类型。 [terminfo]
videotest
测试视频子系统。 [videotest]
要设置屏幕分辨率,你应该在装载vbe 和/或 gfxmterm (默认模式是 0x101 就是 640x480 8bpp)以前,设置变量$vbe_mode
vbeinfo
列出兼容VESA BIOS扩展视频模式。 [vbeinfo @i386]
已知的BUG:这个视频模式报告的是变量$vbe_mode的内容,而不是实际的分辨率。
vbetest
测试VESA BIOS的扩展2.0+的支持。 [vbetest @i386]
测试模式指定在变量$vbe_mode,默认值0x101(640 × 480 8bpp)
jpeg文件格式限制: 未知 (只有8位精度?)。
菜单颜色()可以设置以下变量:
set menu_color_normal 前景色/背景色
菜单上的文本和边框前景色和背景色。
set menu_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白色
如果你的终端有图形功能,你可以加载一个背景图像。
set root=(hd0,1)
loadfont /boot/grub/unicode.pf2
set gfxmode=640x480
insmod terminal
insmod gfxterm
insmod vbe
set menu_color_normal=white/black
set menu_color_highlight=white/grey
terminal gfxterm
insmod tga
background_image /boot/grub/bg.tga
4.7. 支持平台/固件(Supported platforms/firmware)
i386-pc
i386-efi
i386-linuxbios
i386-ieee1275
sparc64-ieee1275
powerpc-ieee1275
5. 样本(SAMPLE)
略
6. 作者(AUTHOR)
Program Written by Yoshinori K. Okuji, Robert Millan, Marco Gerards and others (see AUTHORS file).
Manpage Written by Franklin Piat.
7. 版权(COPYRIGHT)
Copyright © 2008 Free Software Foundation, Inc.
8. 翻译
luanqh
如果转载,请注明出处。
Grub v2 手册之 “grub.cfg ---启动配置文件” 部分
- luanqh
- 帖子: 184
- 注册时间: 2009-03-31 23:57
Grub v2 手册之 “grub.cfg ---启动配置文件” 部分
上次由 luanqh 在 2009-09-28 0:37,总共编辑 4 次。
- wangdu2002
- 帖子: 13284
- 注册时间: 2008-12-13 19:39
- 来自: 物华天宝人杰地灵
Re: Grub v2 手册之 “grub.cfg ---启动配置文件” 部分
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
海内生明月,天涯共此夕。
--------------------吾本独!
-
- 帖子: 53
- 注册时间: 2009-09-18 18:35
- adagio
- 论坛版主
- 帖子: 22110
- 注册时间: 2008-02-17 23:47
- 来自: 美丽富饶的那啥星球
Re: Grub v2 手册之 “grub.cfg ---启动配置文件” 部分

明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……
---------------------------------------------------------------------------------
★ [图片版]新手当自强(续)FAQ
★ [新手进阶]挂载、fstab、调整linux分区
★ [图片版]E17桌面环境配置手把手
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……
---------------------------------------------------------------------------------
★ [图片版]新手当自强(续)FAQ
★ [新手进阶]挂载、fstab、调整linux分区
★ [图片版]E17桌面环境配置手把手