RHEL7 学习笔记(27) grub 和开机排错

这一节学习了grub的概念,开机调用顺序,如何自定义grub文件,以及对一些常见的系统启动错误如何排错等等。

之前学习了MBR分区的前446个字节存放的是系统引导程序grub,中间64字节是分区表,最后2个字节表示结束。那么什么是grub是怎么工作的呢?

简单的说,开机会经历以下几步:

BIOS自检,检查硬件;

激活MBR,MBR上不存在文件系统,可以视作硬件一部分,因此可以被直接读取

grub加载到内存,生成一个微系统,微系统内置了精简版的文件系统

通过这个微系统,他会去引导分区,比如默认一般是sda1上去找内核文件如vmlinuz,然后再调用grub的配置文件。

grub的主要把他的配置文件放在了3个地方。

/boot/grub2/grub.cfg 

/etc/grub.d/ 

/etc/default/grub   

如下所示。他们的关系是 grub.cfg里面通过 ####BEGIN  ##### 这种格式按照顺序调用/etc/grub.d里面的脚本实现不同的功能。grub.d目录里面有很多数字开头的脚本,按照从小到大的顺序执行。以00__header为例,他又会调用 /etc/default/grub 配置文件来实现最基本的开机界面配置。

Ubuntu 14.04 Grub2 的小技巧

Ubuntu 14.04 下载、安装、配置的相关知识

Ubuntu 14.04系统下载地址

如何在Ubuntu12.04/12.10中重装或修复Grub2引导

Linux启动引导过程 grub和mbr

grub 的安装与使用

grub引导程序配置文件分析

CentOS 6.4 grub加密码

RHEL7 学习笔记(27) grub 和开机排错

比如说,在/etc/grub2/grub.cfg 文件里面调用 /etc/grub.d/10_linux 来配置不同的内核,这里面有2个 menuentry (菜单入口),所以我们开机的时候会看见两个默认选项,一个是普通模式,一个是救援模式。

RHEL7 学习笔记(27) grub 和开机排错

这个是/etc/default/grub 文件。和其他的脚本比较起来,非常简单直观了。后面会举例如何修改

RHEL7 学习笔记(27) grub 和开机排错

值得注意的是,千万不要直接去修改 /etc/grub2/grub.cfg 文件。 这个是因为如果后期升级内核,所有的配置都会失效。如果需要自定义这个文件,我们可以修改对应的脚本或者 /etc/default/grub文件,然后通过 grub2-mkconfig 重新生成grub.cfg文件。

下面来看看如何修改一些简单的设定。

例1: 修改启动的等待时间

默认是5秒

RHEL7 学习笔记(27) grub 和开机排错

我改成-1,那么开机每次必须手动确认才可以了

RHEL7 学习笔记(27) grub 和开机排错

修改之后重新编译一下

RHEL7 学习笔记(27) grub 和开机排错

开机就没有自动等待的时间了,必须手动确认

RHEL7 学习笔记(27) grub 和开机排错

例2 修改网卡的显示名字,这个前面做网络配置的时候提到过,这里不赘述了。

RHEL7 学习笔记(27) grub 和开机排错

RHEL7 学习笔记(27) grub 和开机排错

例3: 加密grub

开机界面的时候如果输入e,会打开编辑窗口,我们可以根据需要进入rescue, emergency 或者 shell 模式。如何限制访问。

在00_header 文件末尾,添加以下内容

RHEL7 学习笔记(27) grub 和开机排错

重新编译

重启之后 输入e,就需要用户和密码才能进入编辑窗口了

RHEL7 学习笔记(27) grub 和开机排错

RHEL7 学习笔记(27) grub 和开机排错

在这个编辑窗口,我们可以根据需要进入 rescue,emergency和 shell引导的3种模式。这3种模式对于系统启动排错很有帮助,比如某个服务卡住了无法加载我们可以通过这3种模式来排错。

rescue模式: 在commandline的配置末尾添加 s ,类似rhel6之前的单用户模式

RHEL7 学习笔记(27) grub 和开机排错

普通模式需要加载的服务很多,但是这个rescue模式加载的就少很多了,输入管理员密码就可以进入了。这个时候再来看看相关配置和日志等信息。

RHEL7 学习笔记(27) grub 和开机排错

emergency 模式和rescue模式类似,不过加载的服务更少,把s改成 emergency就行了

RHEL7 学习笔记(27) grub 和开机排错

一样需要输入管理员密码

RHEL7 学习笔记(27) grub 和开机排错

那么如果忘记root密码了怎么办?!

在linux16 的最后一行删除 rhgb quiet, 然后添加 init=/bin/sh, 他会用shell替代默认的daemon进程

RHEL7 学习笔记(27) grub 和开机排错

RHEL7 学习笔记(27) grub 和开机排错

进来之后改改密码吧,貌似不行。

RHEL7 学习笔记(27) grub 和开机排错

原因很简单,根目录加载的权限是ro,只读   

RHEL7 学习笔记(27) grub 和开机排错

重新加载成 rw的权限

RHEL7 学习笔记(27) grub 和开机排错

这个时候就可以修改密码了

RHEL7 学习笔记(27) grub 和开机排错

别忘记了selinux,创建这个文件会自动在开启的时候重新做标签

重启看看

RHEL7 学习笔记(27) grub 和开机排错

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/16802.html