Grub v2 手册之 “grub.cfg ---启动配置文件” 部分

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
头像
luanqh
帖子: 184
注册时间: 2009-03-31 23:57

Grub v2 手册之 “grub.cfg ---启动配置文件” 部分

#1

帖子 luanqh » 2009-09-26 21:34

前几天在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

如果转载,请注明出处。


上次由 luanqh 在 2009-09-28 0:37,总共编辑 4 次。
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: Grub v2 手册之 “grub.cfg ---启动配置文件” 部分

#2

帖子 wangdu2002 » 2009-09-26 21:37

哥伦布2代还是看smallapple的教程更完善些。 :em04
viewtopic.php?f=139&t=225669&p=1448778# ... 代基础教程和故障修复
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
pediy
帖子: 53
注册时间: 2009-09-18 18:35

Re: Grub v2 手册之 “grub.cfg ---启动配置文件” 部分

#3

帖子 pediy » 2009-10-04 17:17

wangdu2002 写了:哥伦布2代还是看smallapple的教程更完善些。 :em04
viewtopic.php?f=139&t=225669&p=1448778# ... 代基础教程和故障修复
这篇也不错的!
头像
adagio
论坛版主
帖子: 22110
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球

Re: Grub v2 手册之 “grub.cfg ---启动配置文件” 部分

#4

帖子 adagio » 2009-10-05 1:38

:em11
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
回复