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

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

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

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

  1. BIOS自检,检查硬件;
  2. 激活MBR,MBR上不存在文件系统,可以视作硬件一部分,因此可以被直接读取
  3. grub加载到内存,生成一个微系统,微系统内置了精简版的文件系统
  4. 通过这个微系统,他会去引导分区,比如默认一般是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 配置文件来实现最基本的开机界面配置。

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

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

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

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

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

默认是5秒

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

修改之后重新编译一下

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

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

例3: 加密grub

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

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

重新编译

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

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

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

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

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

一样需要输入管理员密码

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

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

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

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

重新加载成 rw的权限

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

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

重启看看

开机排错技巧:

例1. 如果grub文件坏了怎么办,比如下面我把前446个字节都写成0覆盖了

开机的时候会自动尝试从本地,光盘和网络加载引导程序;这里是从我的光盘加载的,因为本地的引导程序已经没有了

选择troubleshooting (查错)

选择 rescue

选择continue,注意有耐心多等一下,有的时候会卡个10秒才有反应

看看提示,本机系统被挂载到/mnt/sysimge里面,确认OK

按照提示,切换根到本机的系统

fdisk -l 看看启动分区是哪个,有星号的就是

重装一下 grub2 到启动分区就可以了

重启Okay

例2:如果grub引导程序没问题,但是我们把内核文件或者grub.cfg配置文件给删除了怎么办

看看目前有哪些文件,全删了

重启之后,直接进入grub的救援模式,这表明引导程序木有问题,但是引导文件找不到了

和前面一样,光盘启动

切换根目录,挂载一下光盘到/iso, 顺便看看/boot目录,里面空荡荡的,内核文件和配置文件都没了

没了的话那就从头安装吧,安装内核可以用rpm 或者yum,用yum需要先卸载当前的,再安装; rpm可以强行--force覆盖安装。

用yum 安装

或者 rpm 也可以(这里我是重复操作了2次,因为由于图形界面的问题,我以为哪里出问题了)

装完内核之后,重新安装一次 grub2, 输入 grub2-install /dev/sda, 然后重新编译一下grub2就行了

重启

重启之后,我还遇见了2个问题,第一个问题是启动的时候显示i/o错误,经度娘谷歌确认,关掉软盘驱动即可;

第二个问题是开机直接进入命令行模式,即使runlevel显示的是5,手动输入startx一样报错。解决方式是重新安装图形化界面

yum grouplist

yum groupinstall ‘Server with GUI‘

时间: 2024-08-01 19:23:27

RHCE 学习笔记(27) grub 和开机排错的相关文章

RHCE学习笔记27——使用firewall限制网络通信

使用图形化界面管理firewall  [[email protected] ~]# firewall-config &

C++学习笔记27,虚函数的工作原理

C++规定了虚函数的行为,但是将实现交给了编译器的作者. 通常,编译器处理虚函数的方法是给每一个对象添加一个隐藏成员.隐藏成员中保存了一个指向函数地址数组的指针. 这个数组称为虚函数表(virtual function table,vtbl).虚函数表中存储了为类对象进行声明的虚函数的地址. 例如:基类对象包含一个指针,该指针指向基类的虚函数表. 派生类对象包含一个指针,该指针指向一个独立的虚函数表.如果派生类提供了虚函数的新定义,虚函数表将保存新的函数地址. 如果派生类没有重新定义虚函数,虚函

[原创]java WEB学习笔记27:深入理解面向接口编程

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

RHCE 学习笔记(38 ) - Shell

Shell脚本的参考书从基础到高级可以找几百本出来,豆子这里过为了整个学习笔记的完整性,还是厚颜把最最基本的语法回顾一遍.最基本包括变量,比较,运算符,条件语句,循环语句. 变量分为本地变量,环境变量,位置变量 首先看看本地变量, 变量名=值的方式赋值,不过只在当前的shell里面有效 比如,子shell里面就无法识别了 可以通过export的方式配置环境变量,这样子shell里面也可以识别 不过上面的配置只是临时生效,重启就没了 可以通过修改配置文件的方式永久生效.登录家目录的时候,会自动加载

学习笔记之grub应用

GRUB(Boot Loader):基本应用 grub: GRand Unified Bootloader 版本:grub 0.x: grub legacy传统grub版本 grub 1.x: grub2 以centos6为例: grub是安装在MBR中的 grub legacy: stage1: mbr stage1_5: mbr之后的扇区中,让stage1中的bootloader能识别stage2所在的分区上的文件系统: stage2:存放于磁盘分区(/boot/grub/) grub的配置

RHCE 学习笔记(14)- 文件系统 (1)

这一节学习了RHEL的文件管理系统,主要包括了文件系统的查看,设备的挂载,创建链接和文件定位4个方面的知识点. 首先来看看文件系统 我们可以在/proc/partitions这个文件查看当前的分区 通过df -h查看已经挂载了的设备 -hT可以显示设备的文件系统类型 有的挂载点路径比较长,自动分2行显示,可以-P强制一行显示 如同进程有pid,用户有uid,每个文件系统也有自己的id,称为uuid,可以通过 blkid(block id)来查看.注意uuid标记的是文件系统,而不是分区.uuid

RHCE 学习笔记(9) 网络管理

n这一节本来按照教学大纲应该是学习SSH,不过SSH有很多网络相关的知识,因此老师把网络内容提前了一些.网络的基本知识例如IP,DNS,DHCP,路由协议等常识就不在此解释了. RHEL查看网卡的相关信息很容易,ifconfig就可以查看.注意 RHEL7里面的网卡名目方式从eth0,1,2的方式变成了enoXXXXX的格式. en 代表的是enthernet (以太网),o 代表的是onboard (内置),那一串数字是主板的某种索引编号自动生成,以便保证其唯一性.和原先的命名方式对比,这种新

【Linux学习笔记】关于ubuntu开机菜单栏和任务栏不见了的有效解决方法

(一) 问题描述 ubuntu开机只有桌面,没有菜单栏和任务栏,如下图: (二) 问题解决 刚学习ubuntu,总有些像我这样不折腾就不舒服的人,今天改了一下主题,图标什么的,重启开机后就发现!咦!我的菜单栏和任务栏呢?它们都跑到哪里去了! 于是就各种百度啊,google啊,试过一大堆的方法,都没法解决! 终于!皇天不负有心人,在Unity doesn't load, no Launcher, no Dash appears这里找到了答案,ps:英文好的可以直接看原文解决! 罪魁祸首就是Ubun

【RHCE学习笔记】基于安全的NFS认证(kerberos)

一.Kerberos工作流程理解 kerberos是一种安全的认证系统,通过kerberos,客户端与服务器端之间加入kerberos后,基于对称的加密算法,不再需要将自己的密码通过加密的方式传递到互联网上,而是基于target,用户拿到对应的target后,就可以取得相应服务或者应用的权限 KDC(Key Distribution Center)钥匙分发中心,用于专门存放key,它与client,Server通过加密,KDC拥有client和Server的Key,而client和Server拥