『学了就忘』Linux启动引导与修复 — 70、grub启动引导程序的配置文件说明

1、grub中分区的表示方法

在说grub启动引导程序的配置文件之前,我们还需要了解一下,在grub中分区的表示方法。

从下图中我们可以看到,Linux系统的分区中是/dev/目录下自动识别设备分区名称,关于Linux系统的分区命名请看之前文章中的介绍。但是在grub的分区中,是有自己一套独立的标识方式,无论是SATA接口的硬盘还是IDE接口的硬盘,都用hd来表示硬盘(不再像Linux系统分区,识别成hdsd了)。括号中第一位数表示第几块硬盘,第二位表示硬盘中的分区号。

如下图所示:

image

2、grub的配置文件

上一篇文章我们说过,grub启动引导程序的配置文件有三个,源文件是/boot/grub/grub.conf,而/boot/grub/menu.lst/etc/grub. conf文件是/boot/grub/grub.conf文件的两个软链接文件,说白了三个文件就是一个文件。

查看grub的配置文件,内容如下:

执行命令:[root@localhost ~]# vim /boot/grub/grub.conf

结果如下图所示:

image

在实际工作中的服务器上,不可能安装多系统,原因

  • 第一、选择需要进入的系统需要在本机上选择,而我们的服务器往往远处。
  • 第二、多个系统占用过多的系统资源。
  • 第三、虚拟机比真实机使用起来方便很多,比如系统崩溃了,恢复快照就可以等,根本没有必要安装多系统。

3、grub的配置文件内容说明

(1)grub的整体设置

1)default属性

default=0:默认启动第一个系统。也就是如果在等待时间结束后,用户没有选择进入哪一个系统,那么系统会默认进入第一个系统。如果有多系统并存,那么每个系统都会有自己的title字段,如果想要默认进入第二个系统,这里就可以设为 default=1,以此类推。

2)timeout属性

timeout=5:等待时间,默认是5秒。也就是进入系统时,如果5秒内用户没有按下任意键,那么系统会进入default字段定义的系统。当然可以手工修改这个等待时间,如果timeout=0则不会等待直接进入系统,timeout=-1则是--直等待用户输入,而不会自动进入系统。

说明:

在进入Linux系统的时候,会出现如下画面:

image

此画面读秒的时候,按下任意键,就可以进入到grub启动引导程序,选择需要启动的系统。

如下图所示:

image

这个timeout=5就是图1中的读秒数。

这里还有要注意一点,在图2界面的时候,Linux系统是没有启动好的,网卡此时并没有加载好, 所以远程终端是无法连接的,这就是上面说的只有到本机上才能操作。

3)splashimage属性

splashimage=hd(0,0)/grub/splash.xpm.gz:这里是指定grub启动时的背景图像文件的保存位置的。记得CentOS 6.X启动时后台的蓝色图像吧,就是这个文件的作用。hd(0,0)代表第一个硬盘的第一个分区,而我们在系统安装时,/boot分区就是第一个分区,所以这个背景图像的实际位置就是/boot/grub/splash.xpm.gz(说明hd(0,0)=/boot)。

4)hiddenmenu属性

hiddenmenu:隐藏菜单。启动时默认只能看到读秒,而不能看到菜单,如果想要看到菜单需要按任意键。
如果注释了这句话,那么启动时就能直接看到菜单了。

以上就是grub的整体设置,个人觉得除了default属性,其他的都没有什么好修改的。

(2)CentOS系统的启动设置

接下来介绍CentOS系统的启动设置。

1)title属性

title CentOS(2.6.32-279.el6.i686)title就是标题的意思,也就是说在title后面写入的是什么,那么系统启动时在grub的启动菜单中看到的就是什么,如上图中的选项名称。

如果有多个系统,每个系统都会有一个title属性。

2)root属性

root hd(0,0):是指启动程序的保存分区(也可以说是主启动目录的位置)。这里要注意啊,这个root并不是管理员用户,也不是根目录同级的root目录,而是主启动目录的位置。在我的系统中,/boot分区是独立划分的,而且设备文件名为/dev/sda1,所以在grub中,就被描述为hd(0,0),也就是说root/boot分区下的根目录。

3)kernel属性

kernel属性就是描述内核加载的选项,下面简单说明一下:

  • /vmlinuz-2.6.32-279.el6.i686:指定了内核文件的位置,这里的/是指/boot分区。
  • ro:启动时以只读方式挂载根文件系统,这是为了不让启动过程影响磁盘内的文件系统。(这些选项都是在系统启动过程中的选择)
  • root=UUID=b9a7a1a8-767f-4a87-8a2b-a535edb362c9:指定根文件系统的所在位置。这里和以前的Linux版本不太一样了,不再是通过分区的设备文件名或卷标号来指定,而是通过分区的UUID来进行指定。那么如何查询分区的UUID号呢?方法有很多种,最简单的办法就是查询/etc/fstab文件,命令如下:
    image
    可以看到/分区的UUID和kernel行中的UUID是匹配的。
    注意一下,grep命令后的·/ ,在/后是有空格的。
  • rd_NO_LUKS :禁用LUKSLUKS用于给磁盘加密。
  • rd_NO_MD :禁用软RAID
  • rd_NO_DM:禁用硬RAID
  • rd_NO_LVM :禁用LVM。以上禁用都只是在启动过程中禁用,是为了加速系统启动的。(启动完了自动开启,所以这些属性我们不必太关注)
  • KEYBOARDTYPE=pc KEYTABLE=us :键盘类型。
  • crashkernel=auto:自动为crashkernel预留内存。
  • LANG=zh_CN.UTF-8 :语言环境。
  • rhgb:(redhat graphics boot)用图片来代替启动过程中的文字信息。启动完成之后可以使用dmesg命令来查看这些文字信息。(如启动时候的百分比等)
  • quiet:隐藏启动信息,只显示重要信息。(系统启动的时候按ESC键,可以查看隐藏的信息)

提示:以上这么多信息,我们平时真的用不到,大概知道什么意思就可以了。

4)initrd属性

initrd /initramfs-2.6.32-279.el6.i686.img:加载虚拟文件系统,指定了initramfs内存文件系统镜像文件的所在位置。

5)总结

以上四条属性,titlerootkernelinitrd都是自动生成的,我再新安装一个操作系统,这四个属性也是自动生成,能看懂就好,这四个属性不用我们修改。

posted @ 2021-12-09 17:04  繁华似锦Fighting  阅读(1028)  评论(0编辑  收藏  举报