CentOS7下重建grub并恢复系统的故障案例

简介: CentOS7下重建grub并恢复系统的故障案例

CentOS7下重建grub恢复系统的故障案例


640.jpg

grub无法启动的故障现象


下面先模拟还原一下故障现象

1、模拟/boot/分区损坏,整个boot分区下文件删掉,当然/boot/grub2/grub.cfg文件也会被删掉

lsblk查看可以看到/boot为单独分区


lsblk
cd /boot/
rm -rf *

640.jpg

640.jpg


2、同时也模拟/etc/fstab文件丢失,删掉/etc/fstab


rm -rf /etc/fstab

640.jpg

3、重启服务器后系统无法启动,卡在grub界面


640.jpg


故障恢复思路


工具:使用ISO镜像光驱启动进入救援模式,进行恢复

1、/etc/fstab文件丢失会导致无法自动挂载分区,所以需要手动挂载

如果使用了LVM逻辑卷在挂载之前还要先加载逻辑卷 需要手动恢复/etc/fstab,写入开机启动需要挂载的分区条目

2、重建/boot目录下系统内核文件

3、重建/boot/grub2/grub.cfg

4、重启服务器后验证是否恢复成功


具体操作步骤


1、使用CentOS7的原版镜像开机从光驱启动


当然你也可以做成启动U盘,从U盘启动


640.jpg


640.jpg

2、选择Troubleshooting->Rescue a CentOS system


640.jpg

640.jpg

3、根据提示先选择1

640.jpg


提示没有找到任何Linux分区,这时会进入shell


4、发现LVM逻辑卷


lsblk
lsblk -f


可以看到/dev/sda2为LVM2_member


/*扫描vg卷*/
vgscan
/*激活vg*/
vgchange -ay


640.jpg

5、挂载故障根分区到/mnt/sysimage


mount -rw /dev/mapper/centos-root /mnt/sysimage
cd /mnt/sysimage
并vi etc/fstab文件
下面是根据lsblk -f 反推出来的/etc/fstab
/dev/mapper/centos-root  /     ext4 defaults 0 0
/dev/mapper/centos-opt   /opt  ext4 defaults 0 0
/dev/sda1                /boot ext4 defaults 0 0


640.jpg640.jpg


保存后reboot重启


6、重复第1,2,3步,重新进到Rescue模式


这时选择1,就可以找到分区了 可以看到提示你的系统已经mounted under /mnt/sysimage 输入回车进到shell

640.jpg


lsblk可以看到/mnt/sysimage 和/mnt/sysimage/boot已经挂载上了(见下面第7步中的截图)


7、安装内核


rpm -ivh /run/install/repo/Packages/kernel-3.10.0-1160.el7.x86_64.rpm --root=/mnt/sysimage --force


640.jpg


8、重建grub.cfg


chroot /mnt/sysimage
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
exit


退出实根后重启服务器 reboot


640.jpg


9、这时验证是否修复成功


可以看到内核菜单已经正常显示

640.jpg

第二次自动重启后,系统正常进行登录界面


640.jpg

640.jpg

系统恢复成功


下图为CentOS7启动原理流程图

640.jpg


相关文章
|
存储 Ubuntu Linux
VMware-安装CentOS系统教程及安装包
虚拟机相当于是一个独立于你电脑的环境,在这个环境上面,你可以安装Linux、Windows、Ubuntu等各个类型各个版本的系统,在这个系统里面你不用担心有病读等,不用担心文件误删导致系统崩溃。 虚拟机也和正常的电脑系统是一样的,也可以开关机,不用的时候,你关机就可以了,也不会占用你的系统资源,使用起来还是比较方便 这里也有已经做好的CentOS 7系统,下载下来解压后直接用VMware打开就可以使用
1701 69
|
Ubuntu Linux 索引
Centos 7、Debian及Ubuntu系统中安装和验证tree命令的指南。
通过上述步骤,我们可以在CentOS 7、Debian和Ubuntu系统中安装并验证 `tree`命令。在命令行界面中执行安装命令,然后通过版本检查确认安装成功。这保证了在多个平台上 `tree`命令的一致性和可用性,使得用户无论在哪种Linux发行版上都能使用此工具浏览目录结构。
1002 78
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
1297 79
|
10月前
|
监控 关系型数据库 MySQL
在CentOS系统中,如何统计哪个进程打开了文件描述符?
利用上述方法,你可以有效地监控和统计CentOS系统中的进程打开的文件描述符数量,以帮助排查错误或优化系统配置。通过组合使用各种工具和命令,可以获得对系统状态和行为的深入了解,进而做出相应的调整和
400 5
|
12月前
|
缓存 监控 Linux
CentOS系统如何查看当前内存容量。
以上方法都不需要特殊软件或者复杂配置即可执行,在CentOS或其他Linux发行版中都适合运行,并且它们各自透露出不同角度对待问题解答方式:从简单快速到深入详尽;从用户态到核心态;从操作层数到硬件层数;满足不同用户需求与偏好。
845 8
|
机器人 Linux
CentOS 7系统中安装特定版本CMake 3.21.2的方法。
到这里,过程已经全部完成。如果你跟随上面的步骤来,那么你现在已经拥有了一个全新的CMake版本在你的CentOS 7系统上了。这个过程就像是你通过一系列仪式,唤醒了一个沉睡已久的古老机器人,它现在完全按照你的意愿来帮你构建和编译软件了。
818 18
|
Linux 应用服务中间件 nginx
CentOS系统下的软件安装与卸载
CentOS系统中安装及卸载软件,常用yum命令安装及卸载软件包。yum是基于RPM的软件包管理器,可用于在CentOS中安装、更新、查询和移除软件包。yum命令可以从指定服务器下载rpm包并安装,能自动解决依赖问题。
837 78
|
Unix Linux 程序员
在Centos系统上如何有效删除文件和目录的指令汇总
记住,有了这个指南,你就不再为删除文件和目录感到困扰。快去尝试一下,让你的CentOS更上一层楼吧!
950 24
|
12月前
|
存储 Linux 数据安全/隐私保护
确定CentOS系统分区表类型(MBR或GPT)
以上方法均能够帮助用户准确地识别出CentOS下连接硬件所应用得具体磁盘标准,并根据实际需求做进一步处理与管理工作。
1106 0
|
Ubuntu Linux 云计算
CentOS与Ubuntu:Linux系统的双璧
选择Ubuntu还是CentOS,取决于用户的具体需求,如是否需要图形化界面、对稳定性的要求、软件包管理的偏好以及对商业支持的需求等。两者都是优秀的Linux发行版,只是在设计理念和目标用户群体上有所不同。#深度好文计划#