一.MBR主导分区损坏
1.覆盖掉虚拟机的主导分区
命令:dd if=/dev/zero of=/dev/vda bs=446 count=1
此时系统无法正常开机
2.根据虚拟机版本添加光驱(如7.0的系统光驱为7.0版本的镜像)
virt-managers命令打开虚拟机管理界面
先关闭server,再添加一个光驱。
点击上面的此图标
再点击
添加光驱:点击左下角的添加
出现此界面:
添加光驱成功,使用光驱启动。
开启虚拟机,选择修复选项
选择
然后选择
cotinue
3.再硬盘启动即可恢复。
二.文件引导损坏
1.boot 分区的自动引导文件
/boot/grub2/grub.cfg
引导文件指定了boot分区的位置;加载内核;启动系统初始化进程。
出现问题时,需手动引导,恢复后,再重新创建。
手动引导步骤。
grub>set root='hd0,msdos1' 设定系统引导启动分区路径
linux16 /boot/vmlinuz-3.10.0-123.e17.x86_64 ro root=/dev/vda1
initrd16 /boot/initramfs-3.10.0-123.e17.x86_64.img
boot
如果安装过程中系统卡住,则可能是由于Selinux没关,则改变第二条命令为:
linux16 /boot/vmlinuz-3.10.0-123.e17.x86_64 ro root=/dev/vda1 selinux=0
即可。
2.恢复
grub2-mkconfig > /boot/grub2/grub.cfg
三.内核引导软件损坏 vmlinuz
1.内核引导文件 /boot/vmlinuz-3.10.0-327.e17.x86——64
检测硬件设备;设备驱动初始化;将/只读挂载;载入初始进程systemd
2.内核文件损坏,则无法正常开机,需重新安装内核软件
在这里为了方便实验我们删除此文件。
在开机模式中选择修复选项 ##光驱启动(即force off虚拟机,再virt-manager,点击server,点击灯泡,选择光驱启动)
根据提示:trouble-->第二个得到一个shell->继续输入命令。
sh-4.2#chroot /mnt/sysimage/ ##切换真实的root环境
df 查看
mkdir /rhel7.0
mount /dev/sr0 /rhel7.0/
cd /rhel7.0/
ls
cd Packager/
cp kernel-3.10.0-123.e17.x86_64.rpm /mnt/
cd /mnt/
ls
rpm2cpio kernel-3.10.0-123.e17.x86_64.rpm |cpio -id
解开kernel,得到所需的内核引导软件
cd /boot/
ls -l
cp vmlinuz-3.10.0-123e17.x86_64 /boot/
exit
exit
确定/boot分区文件完整后,将虚拟机再force off,改为以虚拟机硬盘驱动启动即可。
四.img文件损坏
1.若不小心删除,可通过命令自动创建
rm -fr initramfs-3.10.0-123.e17.x86_64.img
uname -r 查看系统内核版本:3.10.0-123.el7.x86_64
2.img文件损坏后,无法正常开机,需重新建立img文件
在开机时依旧是转为光驱启动,然后先输入chroot /mnt/sysimage/
再输入命令:mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
可以ls /boot/查看/boot分区是否完整,完成后两下exit,再以虚拟硬盘驱动开机即可。
五.systemd初始化目录
/etc/systemd/system/multi-user.target.wants/
当把/usr/lib/systemd/system/poweroff.target 覆盖链接到 default.target
其命令为:ln -snf /usr/lib/systemd/system/poweroff.target default.target
则系统故障无法正常开机
重启时按上下键,停止系统引导。
在开机时,根据提示选择e,在内核引导时设置图形化界面开启 即
在linux16那行 sun16 后面加空格 5
Ctrl + x 启动
正常开启后,修改systemd初始化默认参数,即可修复
systemctl set-default graphical.target
六.root用户密码修改
当root密码忘记或者被更改时,即可通过此方法。
1.重启虚拟机时按上下键,停止系统引导。
2.按e,在内核引导时找到指定行linux16从最后往前删除至ro
修改:ro=rw rd.break
3.Ctrl + x启动
4.进入系统后切换到真实shell 即:chroot /sysroot/
修改root密码:echo 密码 | passwd --stdin 用户root
例:echo redhat | passwd --stdin root
两次exit即可。