linux中的磁盘引导修复

  • 2 磁盘引导修复
  • 1. MBR
  • 1.1 磁盘分区
  • 1.2 清空磁盘数据
  • 1.3 磁盘的引导修复
  • 2 grub2文件引导恢复
  • 2.1 模拟问题
  • 2.2 手动引导修复
  • 2.3 硬盘引导修复
  • 3 内核加载
  • 3.1 模拟实验环境
  • 3.2 修复内核文件
  • 4 系统初始化镜像
  • 4.1 模拟实验环境
  • 4.2 恢复方法
  • 5 删除/boot/ 下的所有文件
  • 5.1 模拟实验
  • 5.2 恢复方法
  • 6 忘记超级用户的密码
  • 7 系统启动级别
  • 7.1 模拟问题
  • 7.2 恢复方法


2 磁盘引导修复

1. MBR

主引导记录(Master Boot Record,MBR)是装有Linux系统的硬盘的第一个扇区,也被称为主引导扇区,是计算机开机以后访问硬盘时所必须要读取的第一个扇区,将其开头的446字节内容特指为“主引导记录”
mbr=主引导记录=0磁道1扇区446
作用:记录grub2引导文件的位置
当mbr数据丢失系统会因为到不到其东分区而停止启动

1.1 磁盘分区

  • 查看硬盘及分区信息:fdisk -l,带*的磁盘是引导(Boot)分区(vda1)

Linux安装镜像 linux安装镜像 磁盘修复_引导修复

1.2 清空磁盘数据

  • 使用指令dd覆盖磁盘的第一个扇区446个字节,损坏mbr文件
dd if=/dev/zero of=/dev/vda bs=446 count=1

Linux安装镜像 linux安装镜像 磁盘修复_初始化_02

  • 重启之后虚拟机之后,由于磁盘引导阶段 mbr主引导记录损坏导致系无法正常启动

Linux安装镜像 linux安装镜像 磁盘修复_引导修复_03

1.3 磁盘的引导修复

(1)关闭虚拟机

(2)添加光驱SATA CDROM

Linux安装镜像 linux安装镜像 磁盘修复_引导修复_04

(3)将SATA CDROM1放在开启启动项的第一个

Linux安装镜像 linux安装镜像 磁盘修复_重启_05


(4)启动虚拟机,进入Troubleshooting——>Rescue a Red Hat Enterprise Linux system,进入挽救模式

Linux安装镜像 linux安装镜像 磁盘修复_Linux安装镜像_06

Linux安装镜像 linux安装镜像 磁盘修复_重启_07

Linux安装镜像 linux安装镜像 磁盘修复_引导修复_08

  • 输入“1”继续

Linux安装镜像 linux安装镜像 磁盘修复_初始化_09

  • df可以看到硬盘挂载在 /mnt/sysimage

Linux安装镜像 linux安装镜像 磁盘修复_Linux安装镜像_10

  • 将系统挂载更改到根目录/boot下:chroot /mnt/sysimage
  • 重新安装grub到系统硬盘上:grub2-install /dev/vda

Linux安装镜像 linux安装镜像 磁盘修复_重启_11

  • 指定SELinux的运行模式为关闭模式:disable,不需要重新写入安全上下文信息,重启 Linux 系统的速度会比较快

Linux安装镜像 linux安装镜像 磁盘修复_引导修复_12

  • 两次exit

Linux安装镜像 linux安装镜像 磁盘修复_初始化_13


(5)启动虚拟机之前,将VirtiO Disk1放在第一个

Linux安装镜像 linux安装镜像 磁盘修复_Linux安装镜像_14

(6) 重新启动虚拟机,挽救模式只是临时使系统正常开启,正常进入系统之后需要再次对主引导记录进行恢复,至此磁盘的引导修复就完成了

Linux安装镜像 linux安装镜像 磁盘修复_重启_15

Linux安装镜像 linux安装镜像 磁盘修复_Linux安装镜像_16

2 grub2文件引导恢复

/boot/loader/entries/目录中存放了系统启动时指定加载的文件
如果此目录中的文件丢失,将导致系统无法正常启动

实验前用df查看linux服务器文件系统的磁盘空间占用情况

根目录的文件

Linux安装镜像 linux安装镜像 磁盘修复_初始化_17

2.1 模拟问题

rm -fr /boot/loader/entries/*

Linux安装镜像 linux安装镜像 磁盘修复_引导修复_18


重启后出现下图界面

Linux安装镜像 linux安装镜像 磁盘修复_引导修复_19

2.2 手动引导修复

set root='hd0,msdos1' ##第一个磁盘的第一个分区
##/dev/mapper/rhel-root是系统/分区的设备名称
linux16 /vmlinuz-4.18.0-193.el8.x86_64 ro root=/dev/mapper/rhel-root ##内核文件及/分区所在的设备名称
initrd16 /initramfs-4.18.0-193.el8.x86_64.img ##系统初始化文件
boot #启动系统

Linux安装镜像 linux安装镜像 磁盘修复_Linux安装镜像_20


切换到磁盘启动之后可以正常进入系统

Linux安装镜像 linux安装镜像 磁盘修复_初始化_21

手动引导进入到系统中后,只是从暂时的修复了引导问题,此时查看 /boot/loader/entries/中的文件仍为空,若虚拟机重新启动之后,仍然会出现文件引导的问题,只有在/boot/loader/entries/生成新的引导文件之后才能彻底解决此问题

Linux安装镜像 linux安装镜像 磁盘修复_初始化_22

  • 重新生成/boot/loader/entries/中的文件
  • uname -r :查看内核版本
kernel-install add $(uname -r) /boot/vmlinuz-4.18.0-193.el8.x86_64

正常情况下,执行完此命令后自动生成/boot/loader/entries/目录中文件,如是出现系统无法自动生成全部的引导文件,需要手动修改

Linux安装镜像 linux安装镜像 磁盘修复_Linux安装镜像_23


若系统提示无法自动生成:

/boot/loader/entries/71e18fa292e14cbc921c721d1fc7dcd9-0-rescue.conf

此时将已经生成的.conf文件作为xxxx-rescue.conf的模板,并修改其中的内容

Linux安装镜像 linux安装镜像 磁盘修复_引导修复_24


Linux安装镜像 linux安装镜像 磁盘修复_Linux安装镜像_25


此时grub2文件引导恢复就完成了

2.3 硬盘引导修复

  • 选择硬盘启动,进入到挽救模式
chroot /mnt/sysimage/ ##切换系统环境
kernel-install add $(uname -r) /boot/vmlinuz-$(uname -r)

Linux安装镜像 linux安装镜像 磁盘修复_重启_26

进入系统后界面如下,此时只需手动在/boot/loader/entries/目录中生成xxxx-rescue.conf文件即可

Linux安装镜像 linux安装镜像 磁盘修复_重启_27

3 内核加载

内核加载的作用:系统初始化硬件设备

3.1 模拟实验环境

  • 删除内核文件
rm -fr /boot/vmlinuz-4.18.0-193.el8.x86_64

Linux安装镜像 linux安装镜像 磁盘修复_初始化_28

3.2 修复内核文件

  • 重启系统后出现下图的界面

Linux安装镜像 linux安装镜像 磁盘修复_初始化_29

  • 选择从硬盘启动系统,并进入挽救模式
chroot /mnt/sysimage ##切换环境
mount /dev/cdrom /media ##将硬盘挂载到 /media目录
cd /media/BaseOS/Packages
cp kernel-core-$(uname -r).rpm  /mnt/ ##将内核的安装包复制到/mnt目录里面
cd /mnt
rpm2cpio kernel-core-$(uname -r).rpm | cpio -id #解压内核的安装包
cp /mnt/lib/modules/$(uname -r)/vmlinuz  /boot/vmlinuz-$(uname -r) ##复制内核初始化文件到/boot下,并修改文件的名称
exit
exit

Linux安装镜像 linux安装镜像 磁盘修复_引导修复_30

Linux安装镜像 linux安装镜像 磁盘修复_初始化_31

  • 切换到磁盘启动系统之后能够正常进入

Linux安装镜像 linux安装镜像 磁盘修复_重启_32

4 系统初始化镜像

4.1 模拟实验环境

  • 删除系统中的初始化镜像文件

rm -rf initramfs-4.18.0-193.el8.x86_64.img

Linux安装镜像 linux安装镜像 磁盘修复_引导修复_33

  • 重启后出现下图界面

Linux安装镜像 linux安装镜像 磁盘修复_引导修复_34

4.2 恢复方法

  • 选择从硬盘启动,并进入到挽救模式
chroot /mnt/sysimage ## 切换系统环境
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) ## 恢复系统初始化镜像文件

执行两次:exit

Linux安装镜像 linux安装镜像 磁盘修复_重启_35


选择从磁盘启动,能正常进入系统界面

5 删除/boot/ 下的所有文件

5.1 模拟实验

  • 删除/boot下的所有文件: rm -rf /boot/*

Linux安装镜像 linux安装镜像 磁盘修复_引导修复_36

  • 重启系统进入下图界面

Linux安装镜像 linux安装镜像 磁盘修复_Linux安装镜像_37

5.2 恢复方法

设置系统从硬盘启动,并进入挽救模式

chroot /mnt/sysimage ##切换环境
mount /dev/cdrom /media ##将硬盘挂载到 /media目录
cd /media/BaseOS/Packages
cp kernel-core-$(uname -r).rpm  /mnt/ ##将内核的安装包复制到/mnt目录里面
cd /mnt
rpm2cpio kernel-core-$(uname -r).rpm | cpio -id #解压内核的安装包
grub2-install /dev/vda ##获取磁盘引导mbr
rpm -ivh kernel-core-4.18.0-193.el8.x86_64.rpm --force
exit
exit

Linux安装镜像 linux安装镜像 磁盘修复_初始化_38

Linux安装镜像 linux安装镜像 磁盘修复_重启_39

Linux安装镜像 linux安装镜像 磁盘修复_重启_40

6 忘记超级用户的密码

如果忘记普通用户的登陆密码,可以以超级用户的身份重新设定普通用户的密码。但是如果超级用户的密码忘记了,就无法进入系统,此时我们可以通过以下的方法修改超级用户的密码。

  • 修改超级用户密码
  • 进入到系统启动界面,根据提示按 “ e ” 键进入编辑模式

Linux安装镜像 linux安装镜像 磁盘修复_重启_41

  • 初始化界面如下

Linux安装镜像 linux安装镜像 磁盘修复_初始化_42

  • 删除内核加载选项中 “ ro ” ~ “ quite ” 之后的内容,更改 rorw ,并添加 rw rd.break

Linux安装镜像 linux安装镜像 磁盘修复_重启_43

  • 根据提示按Ctrl + x 启动后,进入下面的界面
chroot /sysroot ## 切换到系统真正的根目录下
echo lee| passwd --stdin root ##修改root用户的密码
8.touch /.autorelabel		##当/.autorelabel文件存在selinux会重新初始化

Linux安装镜像 linux安装镜像 磁盘修复_重启_44


只需等待一段时间重新进入系统,输入超级用户的账号和修改成功的密码即可

7 系统启动级别

7.1 模拟问题

systemctl set-default graphical.target ##进入系统后默认进入图形化界面
systemctl set-default multi-user.target ##进入系统后默认进入无图形化界面

Linux安装镜像 linux安装镜像 磁盘修复_初始化_45


系统启动后默认执行重启操作:systemctl set-default reboot

Linux安装镜像 linux安装镜像 磁盘修复_引导修复_46


重启系统后,系统一直在开机界面跳转

Linux安装镜像 linux安装镜像 磁盘修复_Linux安装镜像_47


Linux安装镜像 linux安装镜像 磁盘修复_Linux安装镜像_48

7.2 恢复方法

(1)在开机选择界面按,“ e ” 进入到引导文件编辑模式

Linux安装镜像 linux安装镜像 磁盘修复_引导修复_49


(2)初始化界面

Linux安装镜像 linux安装镜像 磁盘修复_初始化_50


(3)在内核加载选项最后加入启动级别5,Ctrl+x启动

Linux安装镜像 linux安装镜像 磁盘修复_引导修复_51