Linux引导过程及引导修复(误删/boot/的文件修复方法)

Linux引导过程及引导修复

注:问题模拟和恢复都可以在虚拟机里面做

磁盘引导

mbr =主引导记录=0磁道1扇区446
作用:记录grub2引导文件的位置,当mbr数据丢失系统会因为找不到启动分区而停止启动。

问题模拟:

  • dd if=/dev/zero of=/dev/vda bs=446 count=1在这里插入图片描述

  • reboot后出现的情况在这里插入图片描述

恢复方法:

  1. 先给主机断电,才可以修改该主机的启动方式为光盘启动,进入救援模式在这里插入图片描述
    (1) ,如果没有光盘可以手动添加光盘在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
    (2)进入救援模式的步骤
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. chroot /mnt/sysimage        #进入需要恢复的系统的挂载目录下

  3. grub2-install /dev/vda        #重新获得mrb文件在这里插入图片描述

  4. 两次exit退出,切换该系统的启动模式为硬盘启动 在这里插入图片描述

grub2文件引导

文件:/boot/loader/entries/xxxxxxxxx.conf
作用:指定/boot位置,指定系统启动时加载文件

问题模拟:

  • rm -fr /boot/loader/entries/xxxxxxxx.conf在这里插入图片描述

  • reboot后出现的问题在这里插入图片描述

恢复方法:

  1. 手动引导就可以进入系统
    在这里插入图片描述
  2. 重新下载这两个文件在这里插入图片描述

内核加载

作用:系统初始化硬件设备

问题出现:

  • rm -fr /boot/vmlinuz-$(uname -r)       #$(uname -r) 的意思是 先执行括号里面的命令 uname -r 意思是查找内核的版本号在这里插入图片描述

  • reboot的结果在这里插入图片描述

恢复方法:

  1. 切换到救援模式

  2. 进入 chroot /mnt/sysimage

  3. mkdir /westosdir           #建立一个westosdir目录

  4. mount /dev/cdrom /westosdir      #将光盘挂载到这个目录里面

  5. cp /westosdir/Baseos/Packages/kernel-core-$(uname -r).rpm /mnt     #将内核的安装包复制到/mnt目录里面

  6. cd /mnt       #进入/mnt

  7. rpm2cpio kernel-core-$(uname -r).rpm |cpio -id      #把这个安装包的文件解压出来到当前的目录

  8. cp /mnt/lib/modules/$(uname -r)/vmlinuz /boot/vmlinuz-$(uname -r)     #复制软件包里的内核初始化文件到/boot里面,复制过去的文件需要修改名称在这里插入图片描述

  9. 两次exit退出,选择硬盘启动就好了

系统初始化镜像

文件:/boot/initramfs-4.18.0-80.el8.x86_64.img
作用:加载系统时钟,加载selinux,加载系统主机信息,加载/etc/fstab文件中磁盘挂在策略,加载磁盘配额,初始化系统程序开启开机启动服务,开启虚拟控制台,开启图形

问题出现:

  • rm -fr /boot/initramfs-xxxxx.img
  • reboot 在这里插入图片描述

恢复方法:

  1. 进入救援模式
  2. chroot /mnt/sysimage
  3. mkinitrd /boot/initramfs-$(uname -r) $(uname -r)       #恢复系统初始化镜像文件
    在这里插入图片描述
  4. 两次exit,改成硬盘启动

系统启动级别

问题出现:

  • systemctl set-default reboot.target #设置用户的启动级别为0
  • reboot之后系统一直在重启过程中

恢复方法:

  1. 在开机选择界面按,进入到引导文件编辑模式,在内核加载选项最后加入启动级别5,ctrl+x执行在这里插入图片描述

  2. 进入系统之后,修改系统的开机启动级别,systemctl set-default graphical.target 在这里插入图片描述

超级用户密码忘记

解决方法

  1. 在开机选择界面按进入到引导文件编辑模式

  2. 在内核加载选项最后删除到ro选项

  3. 更改ro---->rw

  4. 加入rd.break参数终止系统启动进入单用户模式在这里插入图片描述

  5. ctrl+x启动

  6. chroot /sysroot

  7. echo 密码 | passwd --stdin root

  8. touch /.autorelabel #当/.autorelabel文件存在selinux会重新初始化在这里插入图片描述

  9. 两次exit重新启动,密码就被修改成功了

当/boot/ 下的所有文件都被删除了

问题出现:

  • rm -fr /boot/*
  • reboot出现的情况
    在这里插入图片描述

恢复方法

  1. 进入救援模式

  2. chroot /mnt/sysimage

  3. cd /boot               #进入/boot

  4. mount /dev/cdrom /mnt         #挂载光盘到/mnt

  5. cp /mnt/BaseOS/Packages/kernel-core-4.18.0-80.el8.x86_64.rpm /boot        #复制安装包到/boot

  6. grub2-install /dev/vda #重新获取磁盘引导mbr

  7. rpm -ivh kernel-core-4.18.0-80.el8.x86_64.rpm --force    #重新下载安装包到当前目录在这里插入图片描述

  8. 两次exit之后,切换硬盘启动,重启系统
    在这里插入图片描述

  9. grub2文件引导在这里插入图片描述

  10. grub2-mkconfig > /boot/grub2/grub.cfg          #建立配置文件
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Snji_G/article/details/107834190