本次文档操作,以VMware虚拟机做实验,模拟删除linux-centos系统删除boot文件后如何恢复的过程。
准备工具:
作Linux live 盘,使用软碟通,或者Rufus将u盘制作成启动盘。
-
制作启动盘的系统,应和修复的系统版本一致,或者内核一致。因需要复制内核文件。(Debian,ubuntu,等系统和此文件修复命令些许不一致,修复原理一致。)
-
VMware环境,本次选用VMware进行模拟,加载系统时进入u盘启动。
修复思路:
1、使用linux Live USB进入临时系统,进入救援模式。
2、挂载原系统分区。
一般进入救援模式后,故障系统会自动挂在/mnt文件下,没有,则需要重新挂载故障系统。启动盘为救援系统,故障系统可以理解为一个硬盘,将故障系统挂载至救援系统上操作。
3、重新安装内核和引导加载器。
误删boot,仅仅是boot内的文件缺失,如果是相同的系统和内核引导恢复,直接复制boot下的内核文件即可。
4、修复 GRUB 配置。
模拟环境:
boot内有三种文件,
grub2(GRand Unified Bootloader version 2)是 Linux 系统中最常用的引导加载程序。它负责在计算机启动时加载操作系统内核(如 vmlinuz 文件)和初始内存盘 (initramfs),并将控制权交给内核,从而启动操作系统。
Vmlinuz它是 Linux 操作系统的核心内核的压缩可执行文件。误删后,系统无法启动。
initramfs为(Initial RAM File System)种是一临时的根文件系统,在Linux系统启动过程中,用于在系统初始化期间挂载根文件系统之前进行各种初始化操作。initramfs可以包含必需的驱动程序、二进制文件和脚本等,以便在系统引导期间使用。
在Linux系统引导时,initramfs模块会被加载到内存中,其中包含了必要的文件和驱动程序,用于在启动阶段执行各种任务,例如检查文件系统、加载模块、识别和挂载根文件系统等。此外,initramfs模块还可以用于进行故障排除和修复系统错误,例如恢复损坏的文件系统等。
如下图1:在系统内创建guzhang.txt用来验证。

系统内核,如下图2:

:rm -rf */boot #此命令删除boot文件,慎用。
误删除boot ,系统是可以正常使用的,这时候将boot内文件恢复,设备也可以正常使用。为防止出现此故障,尽量将boot内的文件进行备份。
只有重启后,才开始出现故障,如下图3删除boot操作,图4重启系统进入grub模式:


恢复boot操作
1、将u盘启动盘与故障系统连接,只有虚拟机系统启动后,才会显示此页面,未启动虚拟机u盘将与电脑连接。如图5:
图5
2、将故障系统进行扩盘,选择scsic(s), 使用物理磁盘(需要管理员权限)完成即可
2、再次启动系统,选择打开电源时进入BIOS固件如图6,不确定u盘是哪个选项,可以未插启动盘时,先查看一下,如图7将启动盘调至最先启动。
图6
图7
4、启动后如下图8图9进入救援模式,图10为译文。
图8
图9
图10
5、如图11,输入数字1,进入救援模式,如图13已经进入救援模式。
图11
图12
图13
6、检查故障系统是否挂载至救援模式系统内,
:ls /mnt #检查mnt文件夹下的每一个文件。
如图14:可以发现guzhang.txt验证文件也在,boot内没有任何内容。
图14
注意:若未发现救援模式内mnt文件没有挂在故障系统。若如上图已挂载,不需要下面操作。
LVM系统特殊处理:
:vgscan
:vgchange -ay # 激活卷组
:lvs # 查看逻辑卷
操作如下:
:mount /dev/mapper/centos-root /mnt/root
将故障系统挂在至救援模式系统内需要先检查各个分区。
:fdisk -l | less #分段查看各个分区 | less表示分段查看。
首先需要知道故障系统硬盘多大,本次故障系统20G,根据系统换算显示18.2G,如图15:
图15
:mkdir /mnt/root
:mount /dev/mapper/centos-root /mnt/root #将故障系统挂载至/mnt/root文件内。
7、挂载关键目录,注意,遇到权限不足时,在前面添加sudo提权,具体操作如图16:
:mount --bind /dev /mnt/sysimage/dev
:mount --bind /proc /mnt/sysimage/proc
:mount --bind /sys /mnt/sysimage/sys
:mount --bind /run /mnt/sysimage/run
图16
8、将救援系统内的/boot/vmlinuz-3.10.0-957.e17.x86_64 文件拷贝/mnt/sysimage/boot 文件内,因救援系统和故障系统是一样的镜像和内核,vmlinuz一样的。如图17:
:cp /boot/vmlinuz-3.10.0-957.e17.x86_64 /mnt/sysimage/boot #拷贝文件
图17
9、需要进入chroot环境内操作:
:chroot /mnt/sysimage #进入chroot环境
:dracut -f --regenerate-all # 强制重建initramfs,加载时间较长1-3分钟左右。注意必须复制内核文件后在进行重建。
:grub2-install /dev/sda # 安装引导加载程序
:grub2-mkconfig -o /boot/grub2/grub.cfg # 生成配置
具体操作如图18:
图18
:exit #退出chroot模式,
:umount /mnt/sysimage #将挂载文件卸载。不卸载也不是太影响。
: exit #重启设备
10、可以拔掉启动盘,重新启动,也可以,或者进入bios中,将启动项更改启动。
启动后故障系统如下图19已经能够进入系统,第一进入可能因为生成启动文件进不去系统,重启第二次可以正常进入:
图19
故障系统已正常进入系统,如图20 :
图20
以上为恢复/boot文件误删过程。
如有需要尽量将boot文件进行备份。备份后,直接进入救援模式,将备分boot文件复制到boot即可。
参考:如果故障系统yum或者dnf,源正常,可以直接安装或者更新kernel文件刷新内核文件,不需要靠拷贝vmlinuz文件,直接更新grub文件。
操作 |
Debian/Ubuntu 命令 |
CentOS/RHEL 命令 |
挂载原系统根分区 |
mount /dev/sda1 /mnt/root |
同左(LVM需先vgchange -ay) |
重建 initramfs |
update-initramfs -u -k all |
dracut -f --regenerate-all #可操作 |
重新安装内核 |
apt install --reinstall linux-image-* |
rpm -ivh --force kernel-*.rpm |
修复 GRUB |
grub-install /dev/sda && update-grub |
grub2-install /dev/sda && grub2-mkconfig |