解决系统启动中的故障

215 阅读4分钟

1、mbr扇区故障

如果mbr被破坏了,系统就无法启动。mbr非常重要,为了解决这个问题,可以使用备份。备份可以用 dd命令。不能用cp命令,cp只能备份文本。

故障原因:

  • 病毒、木马等造成破坏
  • 不正确的分区操作、磁盘读写误操作

1.1 如何使用dd备份?

 语法命令:
     dd if=源绝对路径 of=目的绝对路径 count=1  bs=512  # count=1  代表复制次数是1次, bs=512 是512字节
     dd if=dpt.img of=/dev/sda bs=1 seek=446  #seek=446 代表 只复制到 446字节。

小拓展: 有两个命令:sz 和 rz ,是xshell里自带的文件传输工具。这两个命令必须在xshell里面运行。如果没有这两个命令,就在xshell里安装。

  • 通过sz 把虚拟机的文件传给真机
  • 通过rz 把真机的文件传给虚拟机

1.2 备份mbr分区表

1、备份mbr

 fdisk /dev/sdb   #新建磁盘sdb,然后进行分区
 mkfs.xfs /dev/sdb1    #格式化
 mount /dev/sdb1 /mnt   #挂载
 dd if=/dev/sda of=/mnt/mbr.bak count=1 bs=512  #复制,   mbr.bak相当于是新建的文件夹
 hexdump -C -n512 /dev/sda   #查看


2、模拟破坏mbr

  • 第一种破坏方法:dd if=/dev/zero of=/dev/sda count=1 ba=512 # 这个命令 就是往目的路径里面写0。
  • 第二种破坏方法:勾掉 已连接

image.png
3、reboot重启,发现黑屏,然后进入急救模式

image.png


4、选择急救操作系统 rescue

image.png


5、针对1-4,选择1!

image.png
6、挂载、复制

 先回车
 mount /dev/sdb1 /mnt  #注意是分区:sdb1
 dd if=/mnt/mbr.bak of=/dev/sda count=1 bs=512
 hexdump -C -n512 /dev/sda
 最后,reboot重启

第三种方法(拓展):

服务器之间互相备份。与前两种方法不同,这个要选3。

image.png

 scp  远程拷贝
 scp /mnt/mbr.bak 192.168.125.101:/mnt   #这个ip地址就是服务器地址
 ​
 ifconfig ens33:0 192.168.125.101/24   #有两个作用,一个是可以生成虚拟网卡,另一个是可以临时修改地址

小拓展:

linux中 , ctrl+alt+delete 是强制重启,与windows中不一样,winows中是任务管理器。

2、修复grub引导故障

1、把grub.cfg文件移走,相当于是文件丢失。

 mkdir /data
 cd /boot/grub2 
 mv grub.cfg /data/ 

2、重启。 在读条界面按Esc 键进入启动菜单,改用光盘启动。

// 注意:要在虚拟机中重启。为什么要在虚拟机中重启?因为能弹出下列窗口的时间只有半秒钟。提醒:CD-ROM窗口 必须在连接光驱时才会出现。

image.png image.png

3、然后进入光驱里面的系统,光驱里面的grub是好的,不需要修复。接下来的和mbr实验一样,依次选3、2、1 continue

4、按照下面内容 分步骤输入

 先回车!
 1、chroot /mnt/sysimage    #系统会提示你这个,按照提示敲下来。chroot是切根的意思。
 2、grub2-install /dev/sda   #重新建立加载sda分区
 3、grub2-mkconfig -o /boot/grub2/grub.cfg    #重新构建grub菜单配置文件,/boot/grub2/grub.cfg 文件路径一定一定一定不能写错!!!
 4、exit     先退出
 5、reboot   然后再重启

3、修改密码

本次主要介绍两种修改方式:一种是针对有光驱的情况,一种是没有光驱的情况。

3.1 有光驱改密码

1、同样在虚拟机中重启,把握好半秒钟,控制好手速。点esc,进入CD-ROM,然后依次3、2、1。

2、按照下面内容 分步骤输入

chroot /mnt/sysimage    #进入急救模式后,更改环境
passwd   #修改密码
exit     退出
reboot   重启

3.2 无光驱改密码

按E键(有5秒)

在Linux开始行的最后 输入rd.break

image.png 然后,按ctrl+x 启动,再输入:

 mount -o remount,rw /sysroot/
 chroot /sysroot    #切根
 passwd root    #可以不写root,因为默认就是root登录。
 touch /.autorelabel   #刷新autorelabel这个文件记不住没关系,可以补全的。
 exit
 reboot

4、添加grub密码

为了安全性考虑,可以给grub菜单 添加密码。

#针对centos7版本
     grub2-setpassword   
 ​
#针对centos6版本
     按E进来,然后再按A  #进入单用户 
     空格+s
     passwd 再回车
     reboot