grub.cfg
最开始的部份,其实大多是环境设定与默认值设定等,比½重要的当然是默认由哪个选
项开机
(set default)
以及预设的秒数
(set timeout)
再来则是每一个选单的设定,就是在
menuentry
』这个设定值之后的项目啰!在鸟哥预设的配置文件当中,其实是有两个
menuentry
的,
也就是说,鸟哥的测试机在开机的时候应该就会有两个可以选择的选单的意思啰!
menuentry
之后会有几个项目的规范,包括『
--class, --unrestricted --id
』等等的指定项目,之后
透过『
{ }
』½这个选单会用到的数据框起来,
在选择这个选单之后就会½行括号内的动作的意思。
如果真的点选了这个选单,那
grub2
首先会加载模块,例如上表中的『
load_video, insmod gzio,
insmod part_gpt, insmod xfs
』等等的项目,
都是在加载要读取核心文件所需要的磁盘、分区槽、文
件系统、½压缩等等的驱动程序。之后就是三个比½重要的项目:
.
set root='hd0,gpt2'
root
是指定
grub2
配置文件所在的那个装置。以我们的测试机来说,当初安装的时候分区出
/
/boot
两个装置唷,而
grub2
是在
/boot/grub2
这个位置上,
而这个位置的磁盘文件名为
/dev/vda2
,因此完整
grub2
磁盘名称就是
(hd0,2)
啰!因为我们的系统用的是
GTP
的磁盘分区格式,
因此全名就是
hd0,gpt2
』!这样说,有没有听懂啊?
.
linux16 /vmlinuz
-
... root=/dev/mapper/centos
-
root ...
这个就是
Linux
核心文件以及核心执行时所下达的参数。你应该会觉得比½怪的是,我们的核心文件不是
/boot/vmlinuz-xxx
吗?
怎么这里的设定会是在根目录呢?这个跟上面的
root
有关啦!大部分的系统大多
/boot
这个分区槽,如果
/boot
没有分区,
那会是怎么回事呢?我们用底下的迭代来说明一下:
o
如果没有
/boot
分区,½有
/
分区:所以档名会这样变化喔:
/boot/vmlinuz-xxx --> (/)/boot/vmlinuz-xxx --> (hd0,msdos1)/boot/vmlinuz-xxx
o
如果
/boot
是独立分区,则档名的变化会是这样:
/boot/vmlinuz-xxx --> (/boot)/vmlinuz-xxx --> (hd0,msdos1)/vmlinuz-xxx
因此,这个
linux16
后面½的档名得要跟上面的
root
搭配在一起,才是完整的绝对路径文件名喔!看懂了
吗?至于
linux16 /vmlinuz-xxx root=/file/name
那个
root
指的是『
linux
文件系统中,根目录是在哪个装置
上』的意思
!从本章一开始的开机流程中,我们就知道核心会主动去挂载根目录,并且从根目录中读取配
置文件,
再½一步开始开机流程。所以,核心文件后面一定要½根目录的装置啊!这样理½吧?我们从
/etc/fstab
里面也知道根目录的挂载可以是装置文件名、
UUID
LABEL
名称,因此这个
root
后面也是
可以带入类似
root=UUID=1111.2222.33...
之类的模式喔!
.
initrd16 /initramfs-3.10...
这个就是
initramfs
所在的檔名,跟
linux16
那个
vmlinuz-xxx
相同,这个档名也是需要搭配『
set root=xxx
那个项目的装置,
才会得到正确的位置喔!注意注意!
19.3.3 grub2
配置文件维护
/etc/default/grub
/etc/grub.d
前一个小½我们谈到的是
grub2
的主配置文件
grub.cfg
约略的内容,但是因为该文件的内容太过复
杂,数据量非常庞大,
grub2
官方说明不½议我们手动修改!
而是应该要透过
/etc/default/grub
这个
主要环境配置文件与
/etc/grub.d/
目录内的相关配置文件来处理比½妥当!
我们先来聊聊
/etc/default/grub
这个主要环境配置文件好了!
.
/etc/default/grub
主要环境配置文件