设定
GRUB 2
设定变更通常会修改
/etc/default/grub
和
/etc/grub.d
目录中的自定义档案。/boot/grub/grub.cfg
档不应由使用者直接编辑;此档案由设定稿来变更。
某些最常见的变更,例如默认的操作系统/核心和选单逾时,可以经由一个图形用户界面应用程序「StartUp-Manager」来修改。如何安装及使用此应用程序的相关讯息请参考社群文件
StartUpManager。
/etc/default/grub(档案)
·
变更预设设定的主要配置文件。在安装时,以下内容可由使用者变更:
·
GRUB_DEFAULT-
设定默认选单选项。选项可以是数字、完整的选单选项文字或是「saved」。
·
o
GRUB_DEFAULT=0
以选单位置来设定默认选单选项。如同
GRUB,在
grub.cfg
中的第一笔「选单选项」为
0,第二笔为
1,余类推。
o
GRUB_DEFAULT="xxxx"
一个完全相同的选单条目,包含双引号,也可被使用。在此例中,选单中的位置不会有影响。例如:GRUB_DEFAULT="Ubuntu,
Linux 2.6.31-9-generic"
o
GRUB_DEFAULT=saved
o
§
本段中的信息应用于
GRUB 1.98
及之后版本中。
§
启用「grub-reboot」和「grub-set-default」指令来设定默认操作系统。
§
默认操作系统将不会经由来自选单中的交互式选择而被设定。
§
grub-set-default
设定默认开机选项直到有所变更。
§
§
格式为
sudo grub-set-default X,此处的
X
代表选单选项的位置(第一笔由
0
开始)或是完全一致的选项字符串。例如:sudo
grub-set-default 3
将使用选单选项位置,或是
sudo grub-set-default "Ubuntu, Linux 2.6.32-15-generic"
表示选单选项字符串。
§
欲取得现存的选单选项选择数字(由
0
开始)或是选单选项「字符串」,执行
grep menuentry /boot/grub/grub.cfg
§
grub-reboot
此指令只设定下一次开机时的默认开机选项。指令格式与
grub-set-default
相同(参考上面)。
·
GRUB_SAVEDEFAULT=
若设定为
true
则上次所选择的开机选项将会自动成为下次开机时的默认值。
·
o
不需要执行指令来设定默认操作系统。
o
任何时间只要手动选择
GRUB 2
选单中的选项,它就会变为默认操作系统。
o
若您的
/boot
目录位于
LVM
分割区或是
RAID
上,此选项会无作用。
·
GRUB_HIDDEN_TIMEOUT=0
·
o
此设定用来决定
GRUB 2
选单会有多长时间不被显示。当屏幕是空白时,用户可以按下任何键以显示选单。
o
默认状态下若只有存在一个操作系统时才会隐藏选单。如果用户只有一个
Ubuntu
想要显示选单,那么在此选项最前方加上一个
#
符号来关闭此隐藏选单功能。
o
从
GRUB 1.97~beta - Karmic
使用的版本开始,选单能否包含空白屏幕的倒数延迟取决于
GRUB 2
是否找到多重操作系统。
多重操作系统用户注意:若执行
/etc/grub.d/30_os-prober
时,GRUB
2
的
os-prober
发现额外的操作系统,隐藏选单的
timeout
功能会依照某些条件状况而关闭。这也会同时关闭开机时按住
SHIFT
以显示选单的功能。多重操作系统的用户想要隐藏选单的话,可以在各大论坛中(例如:ubuntuforums)找到如何编辑的文件,以在开机过程中加入隐藏倒数的功能。
o
GRUB_HIDDEN_TIMEOUT=0
在单一操作系统计算机中。
o
§
不会有选单显示。系统将会立刻以默认操作系统开机。
§
只有一个操作系统识别出来的状况下,这是预设的设定。
§
§
在此状态下若想显示选单,就在此行最前方加上
#
符号并确认
GRUB_TIMEOUT
设定为正整数。
§
若数值设为
0,会进行一个按键状态检查来确认
SHIFT
键是否被按住。若
GRUB 2
认定在开机过程中
SHIFT
键是被按住的,则选单就会显示出来。这样能让用户有方法在没有显示选单的情形下中断自动开机程序。
o
GRUB_HIDDEN_TIMEOUT=X
o
§
X
为一正整数(例如
1、5、10
等等)
§
开机程序将会暂停并显示空白画面或是已设定的开机影像
X
秒钟。在时间结束后,系统将会开机。不会有选单显示。
§
当
GRUB_HIDDEN_TIMEOUT
启用时,可以按下任何键以显示选单。
o
GRUB_HIDDEN_TIMEOUT=
o
§
在
=
符号后没有输入任何数值
§
选单将会依据
GRUB_TIMEOUT
设定的数值作为显示的秒数。
·
GRUB_HIDDEN_TIMEOUT_QUIET=true
·
o
true
不显示倒数。屏幕将会是空白的。
o
false
在
GRUB_HIDDEN_TIMEOUT
中设定的时间内,空白屏幕上会显示一个倒数定时器。
·
GRUB_TIMEOUT=10
·
o
此指令将推迟
GRUB_HIDDEN_TIMEOUT
设定,除非
GRUB_HIDDEN_TIMEOUT
被批注掉(#)。若
GRUB_HIDDEN_TIMEOUT
启用,则当选单显示时,GRUB_TIMEOUT
将会只运作一次。
o
设定此值为
-1
将会导致选单持续显示,直到用户进行选择。
o
GRUB 2
选单预设为隐藏,除非其他操作系统被系统侦测到。若没有其他操作系统,此行将会被批注掉,除非使用者改变之。为了在每次开机时显示选单,去掉此行的批注并使用
1
或更大的值。
·
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null ||
echo Debian
·
o
取得选单选项中的描述名称。(Ubuntu,
Xubuntu, Debian
等等。)
·
GRUB_CMDLINE_LINUX
·
o
若存在,无论在一般或是救援模式,此行将汇入任何在
'linux'
批注行中的项目(传统
GRUB
的「kernel」行)。类似于
menu.lst
中的「altoptions」行。
·
GRUB_CMDLINE_LINUX_DEFAULT="quiet
splash"
·
o
此行将汇入任何在
'linux'
行中的项目(传统
GRUB
的「kernel」行)。此选项只会附加于一般模式的最后方。类似于
menu.lst
中的「defoptions」行。欲显示黑色屏幕以及开机行程文字,移除「quiet
splash」。若想看到
grub
开机影像及简短的文字输出,使用「splash」。选项「acpi=off」,若有需要的话,也可以输入在此行。
·
#GRUB_TERMINAL=console
·
o
移除批注以停用图形化终端机(只限
grub-pc)
·
#GRUB_DISABLE_LINUX_UUID="true"
·
o
若您不想让
GRUB
传递「root=UUID=xxx」参数给
Linux
时,移除此批注。
o
这里有一个
bug,若使用者移除最前面的批注符号,则
true
必须要有双引号包起来以使得此选项生效。双引号预设并没有出现,使用者必须手动加入。
·
#GRUB_GFXMODE=640x480
·
o
您可移除
#
符号来启用此行。此选项会设定图形化选单的分辨率(选单文字大小)。它将提供用户的显示适配器所支持的分辨率(例如
640x480, 800x600, 1280x1024
等等)。此设定只套用于开机选单显示,而不是完成开机后的操作系统分辨率。
o
§
小技巧:在
GRUB 2
中设定与操作系统相同的分辨率将会稍微减少开机所需时间。
o
虽然并不是必要,使用者可以指定颜色深度,附加在分辨率设定之后。一个例子像是
1280x1024x24
或
640x480x32。
o
用户可以加入多个分辨率。若
GRUB 2
无法使用第一个选项,它会试着使用下一个设定。设定由逗号分开。例如:1280x1024x16,800x600x24,640x480。
o
若有使用开机影像,请确定分辨率设定和开机影像大小兼容。
o
若使用的选项导致在执行
update-grub
时有「无法找到
(not found)」讯息,试着加上或变更颜色深度设定。
o
能够在
GRUB 2
中使用的分辨率可透过在
GRUB 2
命令行模式下键入
vbeinfo
得知。此命令行模式可在
GRUB 2
选单画面显示时按下「c」键进入。
o
若此行被批注掉(#)或是分辨率无法使用,GRUB
2
将使用由
/etc/grub.d/00_header
中的预设设定。
o
欲参考关于使用开机影像时改变分辨率的指南请参考开机影像和主题小节。
·
GRUB_DISABLE_LINUX_RECOVERY=true
·
o
加上或移除此行批注来防止「救援」模式核心选项显示在选单中。若您只想要在其中一个核心有「救援」选项,在
/etc/grub/40_custom
中制作一个特殊选项。
·
GRUB_INIT_TUNE="480 440 1"
·
o
当移除批注时,会在
Grub 2
选单显示前播放一次哔声。
o
格式为节奏
[音调1
持续时间1][音调2
持续时间2]...
o
§
节奏只需设定一次,应用于所有持续时间设定。
§
持续时间是
60/节奏的结果,当持续时间为
1
而节奏为
60
时,会产生一个长度为一秒钟的哔声。持续时间为
1
节奏为
480
时会产生长度为
0.125
秒的哔声。
o
警告:选单会在声音播放完毕后才显示。制作一个冗长的旋律将会让选单显示延迟。
o
在终端机中可以输入
info grub --index-search play
来读取联机帮助文件。此份文件会说明使用
play file
指令来播放
little-endian
格式制作的旋律。
·
额外可能包含的指令:
·
o
GRUB_DISABLE_OS_PROBER=true
o
§
启用/停用
os-prober
对其他分割区操作系统的检查,包括
Windows, Linux, OSX
和
Hurd。
开机显示行为
GRUB 2
会在任何操作系统前加载。它的模块化组件将在依需求的情形下被加载。选单显示行为基本上由
/etc/default/grub
来决定。特定选项和格式化指引请参考「设定
GRUB 2」小节。
初始化默认值
·
若没有侦测到其他操作系统,GRUB
2
将会直接开机至默认的操作系统中。不会显示选单。若侦测到其他操作系统,GRUB
2
选单将会显示。
逾时显示
·
选单将会在预定的秒数中显示。默认选项会以高亮度表示,使用者可以在逾时时间到期前选择其他选项。预设的逾时时间为
3
秒。定时器会在任何按键被按下前或是按下
ENTER
选定高亮度标明的选项前持续计时。若使用者未进行输入则
GRUB 2
将会在逾时时间到期时以默认选项开机。
·
当按下任何按键时,逾时将会失效,且使用者必须手动进行选择。
·
默认选项由
/etc/default/grub
中的
DEFAULT=
来设定;第一笔「选单选项」的值为「0」。
隐藏
·
不显示选单选项。若有设定开机影像,将会显示开机影像。
·
使用者可以藉由按住
SHIFT
键直到选单显示,以此来中断开机程序并显示选单。
·
o
GRUB 2
会在开机过程中搜寻
SHIFT
键按下的讯号。若此键按下或是
GRUB 2
无法确认此键的状态,选单将会显示。
·
屏幕保持空白但允许显示选单的时间是由
/etc/default/grub
中的设定来决定。
·
GRUB 2
可以显示一个倒数定时器以提供剩余时间的视觉回馈,直到默认的选项被选定。此逾时设定在
/etc/default/grub
中。
·
在逾时时间结束时,在
/etc/default/grub
中所设定的默认选项将会被选定。
储存
·
若在
/etc/default/grub
设定为
DEFAULT=saved,则可以执行
sudo grub-set-default
指令来储存默认的操作系统。当
/etc/default/grub
设定为
SAVEDEFAULT=true
时也可储存。在此情况下,默认的操作系统将会保持设定,直到从
GRUB 2
选单中手动选择新的操作系统或是执行了
grub-set-default
指令。
上次开机失败或开机至恢复模式
若上次开机失败或开机至恢复模式后,选单将会显示出来直到用户作出选择。此情况下在
/etc/default/grub
的倒数时间设定将不会生效。若想改变此特性,必须要修改
/etc/grub.d/00_header(在测试
recordfail
状态的
if
叙述中,位于
00_header
的末端)。
自定义选单项目
GRUB 2
允许用户建立自定义选单选项,在执行
sudo update-grub
时此选项将会自动加入主选单中。在
/etc/grub.d/
中有一个空的
40_custom
档可以使用,或是以其当作建立其他自定义选单的模板。这里有一些自定义选单需要考虑的地方:
·
档案的名称将会决定选项在选单中的排序。数字文件名会在前先执行,跟着是文本文件名。
·
o
10_linux
选项会出现在
30_os-prober
选项之前,然后跟着是
40_custom
选项,最后是
my.custom.entries。
o
用户欲将自定义选项排在主选单第一位,可以将档案命名为
06_xxx
如此一来它将会是选单中的第一笔选项。
·
档案必须有可执行权限:sudo
chmod +x /etc/grub.d/filename。
·
在
update-grub
指令未执行前,grub.cfg
的内容不会加入新增变更部份。
·
不像
grub.cfg,自定义档案可以在任何时间编辑,不是只读权限,而且若想要的话可以以使用者为档案拥有者。
·
自定义档案是静态的。当新的核心加入或移除时其内容将不会被变更(除非内容受使用者加入的命令稿影响)。
若自定义档案将
menuentry
放在
grub.cfg
的最上方,使用者也许想要在执行
update-grub
后确认
/etc/default/grub
的
DEFAULT=
设定状态。确保它依然指到想要的选单选项上。在计数时,/etc/default/grub
第一笔「选单选项」为
0。
建立自定义选单
使用者可选择由预设的
/etc/grub.d/40_custom
档来修改或是建立一个新档。建立一个新自定义选单最简单的方法为从
/boot/grub/grub.cfg
复制一份使用中的选项。复制之后,在
40_custom
中的内容可剪裁为用户想要的样式。
·
根据默认的范例自定义文件(/etc/grub.d/40_custom)在
/etc/grub.d
中任何自定义档的头两行应该是:
#!/bin/sh
exec tail -n +3 $0
·
使用者可从
/boot/grub/grub.cfg
或是从传统
GRUB
档中复制已存在的选单选项。若使用者想从传统
GRUB
的
menu.lst
中复制:
·
o
若使用者从
GRUB
升级至
GRUB 2
则也许可找到一份备份文件在
/boot/grub
目录下。
o
以下来自
GRUB
选单中的项目必须修改才能作用:
o
§
title
更改为
menuentry。此行必须由
{
作为结束
§
root
更改为
set root=
§
kernel
必须改为
linux
§
任何
partition
命名(sda4,
sdb6)必须修改,因为
GRUB
和
GRUB 2
的分割区计数方式不同。GRUB
2
中的第一个分割区为
1,不是
0。装置依然由
0
开始计数。
§
仔细检视任何作用中的
GRUB 2
menulist
条目格式以确保使用正确的格式。
·
一般
menuentry
建构规则:
·
o
第一行一定由
menuentry
开头,并以
{
结束
o
大括号之间的区域就是会出现在
GRUB 2
的内容。依照需求编辑。
o
menuentry
最后一行一定是
}
o
每行最后面不要留下空白
o
set root=
行应该指到
GRUB 2
的
/boot
地址(sdXY)
o
在
linux
行中的
root
应指向系统分割区。
o
§
若
GRUB 2
无法找到指定的核心,试试看以装置名称来取代
UUID(例如:/dev/sda6)。
·
一份从
grub.cfg
复制来由用户修改过的选项范例可能会看起来像这样:
menuentry
"My Default Karmic" {
set root=(hd0,1)
search --no-floppy --fs-uuid --set
cb201140-52f8-4449-9a95-749b27b58ce8
linux /boot/vmlinuz-2.6.31-11-generic
root=UUID=cb201140-52f8-4449-9a95-749b27b58ce8 ro quiet
splash
initrd /boot/initrd.img-2.6.31-11-generic
}
·
一份由网站上的指令将系统还原光盘(SystemRescueCD)安装为硬盘版(在
sda8
上)的选项范例:
menuentry "System Rescue CD" {
set root=(hd0,8)
linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
initrd /sysrcd/initram.igz
}
·
一份连锁加载另一个
GRUB
启动加载程序的选项范例:
menuentry "Grub 1 Bootloader" {
set root=(hd0.8)
chainloader +1
}
Grub 2
可以被设定为若默认选单项目因某些原因而开机失败时,退回至先前成功开机的选单项目。这个网页(德文)可以找到一个范例稿以达成此目的。