当发生意外,使电脑不能正常启动的一些情况

一.硬盘引导阶段

1.mbr主引导记录的恢复

mbr的作用:是为了记录/boot目录所在分区位置,磁盘的0磁道1扇区的前446字节,有时侯我们可能会破坏磁盘上的引导程序,使磁头找不到/boot分区

linux还原系统镜像的方法 linux镜像恢复_重启


模拟问题: 将引导程序破坏掉

dd if=/dev/zero of=/dev/vda bs=446 count=1

linux还原系统镜像的方法 linux镜像恢复_初始化_02


报错界面:

linux还原系统镜像的方法 linux镜像恢复_初始化_03


解决方式:

添加镜像:添加镜像之前可以使用hostnamectl命令看一下主机的版本,选择合适的镜像

linux还原系统镜像的方法 linux镜像恢复_初始化_04

在真机中打开虚拟机管理截面

linux还原系统镜像的方法 linux镜像恢复_重启_05


给虚拟机添加一个版本相同的镜像

linux还原系统镜像的方法 linux镜像恢复_文件恢复_06

选择光驱引导,并将其调到第一位

linux还原系统镜像的方法 linux镜像恢复_重启_07

2.再次打开server,进入挽救模式
  • 选择troubleshooting

选择Rescue a Red Hat Enterprise Linux system

linux还原系统镜像的方法 linux镜像恢复_初始化_08

选择continue ok ok

linux还原系统镜像的方法 linux镜像恢复_重启_09

linux还原系统镜像的方法 linux镜像恢复_初始化_10

linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_11

注意:以上三张图,系统都提示我们真实的系统在/mnt/sysimages中,所以我们进入挽救模式打开一个shell后将系统切换到真实的shell中

可以看到真实的系统在/mnt/sysimages中

linux还原系统镜像的方法 linux镜像恢复_初始化_12

linux还原系统镜像的方法 linux镜像恢复_重启_13

linux还原系统镜像的方法 linux镜像恢复_初始化_14

执行命令:

grub2-install  /dev/vda

linux还原系统镜像的方法 linux镜像恢复_重启_15


两次exit退出去掉光盘引导,重新选回磁盘引导

linux还原系统镜像的方法 linux镜像恢复_文件恢复_16

登录成功

linux还原系统镜像的方法 linux镜像恢复_重启_17

二.文件引导阶段

(1)引导文件丢失

  • /boot底下有grub文件,这个文件的用处是自动引导系统启动内核程序和系统的初始化程序
  • 模拟问题: rm -fr /boot/grub2/grub.cfg 可以先用df -H看一下boot分区是否独立挂载
    这里用到的server虚拟机boot分区没有独立出来

linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_18


linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_19

  • 解决方式

(1)当系统没有重新启动时:
引导文件丢失,我们可以输入命令grub2-mkconfig > /boot/grub2/grub.cfg,将grub写回/boot,这样系统在开机的时候又会自动引导

linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_20


linux还原系统镜像的方法 linux镜像恢复_初始化_21


(2)系统被重新启动时

我们需要在第一次开机的时候手动引导系统加载内核程序和初始化程序

linux还原系统镜像的方法 linux镜像恢复_文件恢复_22

  • 报错界面:

linux还原系统镜像的方法 linux镜像恢复_文件恢复_23

  • 手动引导:
  • linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_24

  • hd0中的0——>vda1中的a
    msdos1中的1——>vda1中的1
  • 系统启动以后
    在虚拟机里边执行grub2-mkconfig > /boot/grub2/grub.cfg
    这样在下一次的时候就可以恢复自动引导
  • linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_25

  • (2) 内核文件丢失
模拟问题:rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64

linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_26

linux还原系统镜像的方法 linux镜像恢复_初始化_27

  • 报错界面

linux还原系统镜像的方法 linux镜像恢复_初始化_28

  • 解决方式

将光盘引导添加到第一位,进入到挽救模式

进入挽救模式开启一个shell后,切换系统的环境

linux还原系统镜像的方法 linux镜像恢复_文件恢复_29


执行以下步骤:

linux还原系统镜像的方法 linux镜像恢复_初始化_30


linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_31

linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_32


linux还原系统镜像的方法 linux镜像恢复_文件恢复_33

linux还原系统镜像的方法 linux镜像恢复_文件恢复_34

linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_35

linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_36

开启虚拟机,登录成功

linux还原系统镜像的方法 linux镜像恢复_重启_37


(3)系统初始化镜像文件丢失

  • 模拟问题:
rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img
  • 解决方式:
    (1)系统没有重启时:
    删除初始化镜像文件后,执行命令: mkinitrd  /boot/initramfs-$ (uname -r).img  $ (uname -r)

linux还原系统镜像的方法 linux镜像恢复_重启_38

linux还原系统镜像的方法 linux镜像恢复_初始化_39

linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_40

$ (uname -r)
$ ( )表示在执行这条命令的时候先执行括号里边的内容
uname -r 表示显示内核版本号

(2)当系统重启后

linux还原系统镜像的方法 linux镜像恢复_初始化_41

报错界面:

linux还原系统镜像的方法 linux镜像恢复_重启_42


将光盘引导添加到第一位,进入到挽救模式

linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_43


去掉光盘引导,重新选回磁盘引导

系统登录成功

linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_44

三.当/boot分区被删除

  • 模拟问题:

linux还原系统镜像的方法 linux镜像恢复_重启_45

  • 报错界面
  • 解决方式

/boot下的文件全部删掉,实际上就是要恢复其硬盘引导,和文件引导(三个重要文件),也就是将上面的报错问题全部恢复一遍

(1)将光盘引导添加到第一位,进入到挽救模式

(2)mbr主引导记录的恢复

linux还原系统镜像的方法 linux镜像恢复_文件恢复_46


(3)内核文件恢复

linux还原系统镜像的方法 linux镜像恢复_重启_47


(4)系统初始化镜像文件恢复

linux还原系统镜像的方法 linux镜像恢复_初始化_48


(5)引导文件恢复

linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_49

(6)两个exit退出

(7)去掉光盘引导,重新选回磁盘引导

(8)系统成功登陆

linux还原系统镜像的方法 linux镜像恢复_初始化_50

四.启动级别发生错误

系统的启动级别一共有六个:

0:系统停机模式,系统不能正常启动,机器关闭
1:单用户模式,root权限,用于系统维护,禁止远程登陆

2:多用户模式,没有NFS网络支持
3:完整的多用户文本模式,有NFS,登陆后进入控制台命令行模式
4:系统未使用,保留一般不用
5:图形化模式,登陆后进入GUI模式 6:重启模式,默认级别不能为6,否则不能正常启动

  • 模拟问题
  • 解决方式
    (1)重启系统,在上下页的界面,按e
    (2)按e进入到如下界面

    (3)在linux16这一行,最后添加 5,按ctrl+x,系统重启

    (4)系统重启后,我们应该修改系统的启动级别,让它在下次启动的时候不会再出现这种问题

五.忘记超级用户密码的解决方法

  • (1)重启系统,在上下页的界面,按e
    (2)按e进入到如下界面
    (3)将initrd16 这行前到ro的内容删除掉,并把ro改为rw,然后添加rd.break选项

    ctrl+x启动设定过后的系统引导条目
    (4)进入系统后执行chroot /sysroot切换到真实的系统环境

    (5)passwd 修改超级用户密码

    (6)建立文件touch /.autorelabel让系统从新扫描所有文件

当selinux关闭时,可不建立该文件;但当selinux开启时,必须建立该文件
推荐:重启时默认执行此命令

linux还原系统镜像的方法 linux镜像恢复_初始化_51


(7)exit两次使系统自动重新启动

linux还原系统镜像的方法 linux镜像恢复_重启_52

六、/bin/bash不存在

出现以下的报错界面

linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_53

  • 切换到挽救模式:(这里不再赘述截图)
  • 发现切换系统环境时,提示/bin/bash文件不存在

linux还原系统镜像的方法 linux镜像恢复_linux还原系统镜像的方法_54

但是查看后发现其存在,那就缺什么补什么

linux还原系统镜像的方法 linux镜像恢复_重启_55

再次重启后,就发现可以正常登陆了