原文:http://c.biancheng.net/view/1032.html

本节,我们就来看看 GRUB 的配置文件 /boot/gmb/grub.conf 中到底写了什么。命令如下:

[rootdlocalhost ~]# vi /boot/grub/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu

password=123456

serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1

terminal --timeout=10 serial

#以上为GRUB的整体设置
title CentOS (2.6.32-279.el6.i686)
root (hdO,0)
kernel /vmlinuz-2.6.32-279.el6.i686 ro root=OOID=b9a7ala8-767f-4a87-8a2b-a535edb362c9 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel= auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initd.cpio.gz

这个文件的内容可以分成两部分:前 面为 GRUB 的整体设置;title 以下 4 行为要启动的 CentOS 系统的具体配置。这里只安装了一个系统,如果多系统并存,那么每个系统都会有类似的 title 行存在(不一定都是 4 行)。

我们先看整体设置:

  • default=0:默认启动第一个系统。也就是说,如果在等待时间结束后,用户没有选择进入哪个系统,那么系统会默认进入第一个系统。如果有多系统并存,那么每个系统都会有自己的 title 字段,如果想要默认进入第二个系统,这里就可以设为 default=1。
  • timeout=5:等待时间,默认是 5 秒。也就是在进入系统时,如果 5 秒内用户没有按下任意键,那么系统会进入 default 字段定义的系统。当然,也可以手工修改这个等待时间,如果timeout=0,则不会等待直接进入系统;如果 timeout=-1,则会一直等待用户输入,而不会自动进入系统。
  • splashimage=(hd0,0)/gnjb/splash.xpm.gz:用来指定 GRUB 启动时的背景图像的保存位置。记得 CentOS 6.x 启动时后台的蓝色图像吧,就是这个文件的作用。不过这个文件具体在哪里呢?我们已经说过,hd(0,0) 代表第一块硬盘的第一个分区,而笔者的系统在安装时 /boot 分区就是第一个分区,所以这个背景图像的实际位置就是 /boot/gmb/splash.xpm.gz。
  • hiddenmenu:隐藏菜单。启动时默认只能看到读秒,而不能看到菜单。如果想要看到菜单,则需要按任意键。如果注释了这句话,那么启动时就能直接看到菜单了。
  • password:设定密码。放在title外表示进入kernel或操作系统的编辑模式需要密码,此时需要先按p输入密码后才能按e进入编辑模式,若无此参数可直接按e进入编辑模式;而放在title内表示启动对应的kernel或操作系统需要密码,若无此参数则直接启动对应系统;密码可以是明文或是用MD5进行加密过的。可以防止其他人进入编辑kernel菜单进入单用户模式启动我们的系统。
  • Serial:用于设置串口的参数:

    --unit:串口设备,0就表示ttyS0,如果是ttyS1就要设为1;

    --speed:波特率;

    --work:数据位;

    --parity:奇偶校验位;

    --stop:停止位。

  • Terminal:用于设置终端的类型,默认是console,此处是将启动信息输出到串口,--timeout:等待时间,单位是秒。

再来介绍 CentOS 系统的具体配置:

  1. title CentOS(2.6.32-279.d6.i686):title 就是标题的意思,也就是说,在 title 后面写入的是什么,系统启动时在 GRUB 的启动菜单中看到的就是什么。
  2. root(hd0,0):是指启动程序的保存分区。这里要注意,这个 root 并不是管理员。在我的系统中,/boot 分区是独立划分的,而且设备文件名为 /dev/sda1,所以在 GRUB 中就被描述为 hd(0,0)。
  3. kernel /vmlinuz-2.6.32-279.el6.i686 ro root=UUID=b9a7a1a8-767f-4a87-8a2b-a535edb362c9 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet。其中:
    • /vmlinuz-2.6.32-279.el6.i686:指定了内核文件的位置,这里的 / 是指 boot 分区。
    • ro:启动时以只读方式挂载根文件系统,这是为了不让启动过程影响磁盘内的文件系统。
    • root=UUID=b9a7a1 a8-767f-4a87-8a2b-a535edb362c9:指定根文件系统的所在位置。这里和以前的Linux版本不太一样了,不再通过分区的设备文件名或卷标号来指定,而是通过分区的 UUID 来指定的。

那么,如何査询分区的 UUID 呢?方法有很多种,最简单的办法就查询 /ec/fstab 文件。命令如下:

[root@localhost ~]# cat /etc/fetab | grep"/ "
UUID=b9a7a1a8-767f-4a87-8a2b-a535edb362c9 / ext4 defaults 1 1

可以看到"/"分区的 UUID 和 kernel 行中的 UUID 是匹配的。注意一下 grep 后的"/",在"/"后是有空格的。

以下禁用都只是在启动过程中禁用,是为了加速系统启动的:

  1. rd_NO_LUKS:禁用 LUKS,LUKS 用于给磁盘加密。
  2. rd_NO_MD:禁用软 RAID。
  3. rd_NO_DM:禁用硬 RAID。
  4. rd_NO_LVM:禁用 LVM。

除了以上这样,命令输出信息中还包含以下内容:

    1. KEYBOARDTYPE=pc KEYTABLE=us:键盘类型。
    2. crashkernel=auto:自动为crashkernel预留内存。
    3. LANG=zh_CN.UTF-8:语言环境。
    4. rhgb:(redhatgraphics boot)用图片来代替启动过程中的文字信息。启动完成之后可以使用dmesg命令来查看这些文字信息。
    5. quiet:隐藏启动信息,只显示重要信息。
    6. initrd/initd.cpio.gz:指定了initramfs虚拟文件系统镜像文件的所在位置,可通过gunzip解压后再用cpio解压查看其内容,完全解开后可看到里面有个init可执行程序,init是个脚本,在里面会调用/sbin/init(

      A. boot loader 把内核以及 initrd 文件加载到内存的特定位置。

      B. 内核判断initrd的文件格式,如果是cpio格式。

      C. 将initrd的内容释放到rootfs中。

      D. 执行initrd中的/init文件,执行到这一点,内核的工作全部结束,完全交给/init文件处理。E:init调用/sbin/init,/sbin/init即为1号init进程)

GRUB 的配置文件解析的更多相关文章

  1. MyBatis配置文件解析

    MyBatis配置文件解析(概要) 1.configuration:根元素 1.1 properties:定义配置外在化 1.2 settings:一些全局性的配置 1.3 typeAliases:为 ...

  2. 我的grub.cfg配置文件

    路径:/boot/grub/grub.cfg 配置文件如下: # # DO NOT EDIT THIS FILE # # It is automatically generated by grub-m ...

  3. Nginx安装与配置文件解析

    导读 Nginx是一款开放源代码的高性能HTTP服务器和反向代理服务器,同时支持IMAP/POP3代理服务,是一款自由的软件,同时也是运维工程师必会的一种服务器,下面我就简单的说一下Nginx服务器的 ...

  4. Hadoop配置文件解析

    Hadoop源码解析 2 --- Hadoop配置文件解析 1 Hadoop Configuration简介    Hadoop没有使用java.util.Properties管理配置文件, 也没有使 ...

  5. Python3 配置文件 解析

    /************************************************************************ * Python3 配置文件 解析 * 说明: * ...

  6. Hibernate的配置文件解析

    配置mybatis.xml或hibernate.cfg.xml报错: <property name="connection.url">jdbc:mysql://loca ...

  7. WCF中配置文件解析

    WCF中配置文件解析[1] 2014-06-14 WCF中配置文件解析 参考 WCF中配置文件解析 返回 在WCF Service Configuration Editor的使用中,我们通过配置工具自 ...

  8. haproxy之配置文件解析

    功能--> 提供高可用/负载均衡/基于tcp和http应用的代理;支持虚拟主机,特别适用于负载特大的web站点. 配置文件解析--> #配置文件-->开启/proc/net/ipv4 ...

  9. nginx源代码分析--配置文件解析

    ngx-conf-parsing 对 Nginx 配置文件的一些认识: 配置指令具有作用域,分为全局作用域和使用 {} 创建其他作用域. 同一作用域的不同的配置指令没有先后顺序:同一作用域能否使用同样 ...

随机推荐

  1. Windows2016的 IIS中配置PHP7运行环境

    Windows2016的 IIS中配置PHP7运行环境 在Windows 的IIS(8.0)中搭建PHP运行环境: 一:安装IIS服务器 .进入控制面板>>程序和功能>>打开或 ...

  2. jdbc连接sqlserver,mysql,oracle

    class xxx{ private static String port = "1433"; private static String ip = "192.168.2 ...

  3. CentOS7.6编译安装nginx

    配置阿里云yum源 cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak wget -O /etc/yu ...

  4. 论文阅读笔记四十:Deformable ConvNets v2: More Deformable, Better Results(CVPR2018)

    论文源址:https://arxiv.org/abs/1811.11168 摘要 可变形卷积的一个亮点是对于不同几何变化的物体具有适应性.但也存在一些问题,虽然相比传统的卷积网络,其神经网络的空间形状 ...

  5. 四.property

    将一个类的函数定义成特性以后,对象再去使用的时候obj.name,根本无法察觉自己的name是执行了一个函数然后计算出来的,这种特性的使用方式遵循了统一访问的原则 # 例一:BMI指数(bmi是计算而 ...

  6. js分析 天_眼_查 字体文件

    0. 参考 js分析 猫_眼_电_影 字体文件 @font-face 1. 分析 1.1 定位目标元素 1.2 查看网页源代码 1.3 requests 请求提取得到大量错误信息 对比猫_眼_电_影抓 ...

  7. scrapy相关:splash 实践

    0. 1.参考 https://github.com/scrapy-plugins/scrapy-splash#configuration 以此为准 scrapy相关:splash安装 A javas ...

  8. 记一次Mysql魔鬼实训

    1.查看某个Mysql数据库当前使用的字符集 show create database [库名称] 2.查看当前书库版本信息 #mysql -V MariaDB [(none)]> use my ...

  9. Codeforces 715B. Complete The Graph 最短路,Dijkstra,构造

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF715B.html 题解 接下来说的“边”都指代“边权未知的边”. 将所有边都设为 L+1,如果dis(S,T ...

  10. servlet(一):Servlet的概念和运行流程

    概念: 狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指 任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者. Servl ...