##################
系统恢复
##################
接下来会模拟一些问题,然后进行操作,但是前提有俩个:
必须有光驱(在进行操作的时候必须先用光驱打开,改完之后再用磁盘方式打开)
模拟破坏问题之后必须将selinux的值改为disabled然后reboot才可以进行恢复
1.硬盘引导阶段 mbr主引导记录的恢复
fdisk -l 表示查看磁盘的目录
#模拟问题:dd if=/dev/zero of=/dev/vda bs=446 count=1
可以看到由于磁盘引导阶段被破坏,虚拟机已经开启不了了
这个时候应该将虚拟机关闭,然后用光驱打开虚拟机,就会出现如下图示,选择Troublshooting,回车
选择第二项Rescue,回车
选择1回车
df 查看一下 boot分区所在硬盘为/dev/vda
grub2-install 启动分区所在硬盘
grub2-install /dev/vda
两次exit就好了
这个时候关闭虚拟机,恢复磁盘模式打开,再开启虚拟机就好了
出现用户界面,说明已经恢复引导磁盘的功能
2.文件引导阶段
#1)引导文件丢失
/boot/grub2/grub.cfg
#模拟问题: rm -fr /boot/grub2/grub.cfg
#当系统没有从新启动时 grub2-mkconfig > /boot/grub2/grub.cfg
#当系统被重新启动
首先还得重复上一个问题解决的步骤,进入到挽救模式,还是熟悉的配方,还是原来的步骤,做完之后用磁盘打开
grub > set root='hd0,msdos1' ##此位置是不固定的,位置指定/boot所在分区
grub > linux16 /vmlinuz-3.10.0-123.el7.x86_64 ro root=/dev/vda1 #跟分区的设备名称
查看跟分区的命令 df
查看boot分区的命令 fdisk -l
grub > initrd16 /initramfs-3.10.0-123.el7.x86_64.img
grub > boot
#以上操作可以使系统正常启动,但是是临时的,所以进入系统后还是需要执行:
grub2-mkconfig > /boot/grub2/grub.cfg
#2)内核文件丢失
#模拟问题: rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64
打开虚拟机可以看到出现问题
进入到挽救模式
chroot /mnt/sysimage
mkdir /westos
mount /dev/cdrom /westos/
cd /westos/Packages
cp kernel-3.10.0-123.el7.x86_64.rpm /mnt
cd /mnt
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id
结果就是会以磁盘的方式启动
#3)系统初始化镜像文件丢失
#模拟问题: rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img
#当系统没有重启时
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
#当系统重启后
会出现如下图所示的情况
进入挽救模式
chroot /mnt/sysimage
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
结果是以硬盘方式可以启动
#当/boot分区被删掉后
进入到挽救模式
chroot /mnt/sysimage
mkdir /boot
grub2-install /dev/vda
mount /dev/cdrom /mnt
rpm -ivh /mnt/Packages/kernel-3.10.0-123.el7.x86_64.rpm --force
grub2-mkconifg > /boot/grub2/grub.cfg
3.当开机启动级别被篡改
查看常用的启动级别
cd /etc/systemd/system/
cd multi-user.target.wants/
systemctl disable sshd
systemctl enable sshd
cd ..
ls -l default.target
#错误形成
systemctl set-default reboot.target
#解决
1.开机按上下键停止读秒
2.按“E”进入编辑模式
3.选择内核启动行
linux16 /vmlinuz-xxxxxx ro xxxxxxxxxxxxxx 改变为: linux16
/vmlinuz-xxxxxx ro xxxxxxxxxxxxxx 5
手动输入级别5,ctrl+x退出,启动系统
4.重新设定启动
systemctl set-default graphical.target
4.重置root密码
当我忘掉自己的root密码怎么办
先在重启主机的时候按下e进入编辑模式
删除到ro,改为rw rd.break,ctrl+x退出
输入chroot /sysroot/
echo westos | passwd --stdin root
touch /.autorelabel
这样再次打开就可以登陆进去了,密码时westos