系统排错
一·进行grub磁盘引导阶段
模拟mbr引导分区数据(程序)丢失
实验步骤:
第一步:在虚拟机上:
[root@localhost ~]# dd if=/dev/zero of=/dev/vda bs=446 count=1 ##模拟mbr引导分区数据丢失
[root@localhost ~]# reboot ##重启后发现无法启动
第二步:
关机,virt-manager进入虚拟机管理界面(先将虚拟机force off);添加镜像,选择镜像启动
第三步:
开机进入救援模式(先选最后一个Troubles...然后选择第二个Rescue;continue->ok->ok)
进入到一个shell
第四步:
df ##查看
chroot /mnt/sysimage/ ##挂载系统镜像到根目录
grub2-install /dev/vda ##启动分区所在硬盘
出现NO error reported说明恢复446的分区表成功
exit
exit
第五步:
选择虚拟硬盘启动,重新开机(将CD光驱从第一拉到最后)
第一步:
第二步:
点击左下角ADD Hardware添加光驱
选择光驱,添加镜像7.0
点击Boot Options ,将光驱选在第一位
第三步:
选择第三个:Troubleshooting
选择第二个:Rescue……
选择Continue—>ok—->ok
第四步:
在 /etc/sysconfig/selinux 文件中改为disabled后,wq保存:
写两次exit退出:
第五步:
把光驱调在最后一位
注:做完以后必须turn off,否则会循环
二·文件引导阶段
grub引导文件/boot/grub2/grub.cfg丢失
实验步骤:
方法一:删除文件后本机未reboot
在虚拟机上:rm -fr /boot/grub2/grub.cfg
[root@localhost boot]# cd
[root@localhost ~]# cd /boot/
[root@localhost boot]# ls /boot/grub2
device.map fonts grub.cfg grubenv i386-pc locale themes
[root@localhost boot]# rm -fr /boot/grub2/grub.cfg
[root@localhost boot]# ls /boot/grub2 ##删除成功,文件不存在
device.map fonts grubenv i386-pc locale themes
[root@localhost boot]# grub2-mkconfig > /boot/grub2/grub.cfg ##恢复成功
[root@localhost boot]# ls /boot/grub2 ##查看文件存在
device.map fonts grub.cfg grubenv i386-pc locale themes
方法一:
方法二:删除文件后本机已经重新启动
在新的shell里
grub> set root='hd0,msdos1' ##指定boot分区
grub> linux16 /boot/vmlinuz-3.10.0-123.e17.x86_64(内核文件) ro root=/dev/vda1 ##分区设备名称
grub> initrd16 /boot/initramfs-3.10.0-123.e17.x86_64.img ##初始化镜像文件
grub> boot
上述操作可以使系统正常启动,但是临时的,进入系统后要执行grub2-mkconfig > /boot/grub2/grub.cfg
[root@localhost ~]# grub2-mkconfig > /boot/grub2/grub.cfg ##恢复
[root@localhost ~]# ls /boot/grub2/ ##查看有文件
device.map fonts grub.cfg grubenv i386-pc locale themes
方法二:
成功开启后需要手动恢复:
三·内核文件丢失
方法一:删除文件后本机没有重新启动
[root@localhost Desktop]# cd /boot/
[root@localhost boot]# ls
vmlinuz-3.10.0-123.el7.x86_64
[root@localhost boot]# rm -fr vmlinuz-3.10.0-123.el7.x86_64
[root@localhost boot]# yum whatprovides /boot/vmlinuz-3.10.0-123.el7.x86_64
桌面上有7.0镜像,打开后点Packages,搜 vmlinuz-3.10.0-123.el7.x86_64 安装包,然后拖到桌面
[root@localhost boot]# cd /root/Desktop/
[root@localhost Desktop]# ls
kernel-3.10.0-123.el7.x86_64.rpm
[root@localhost Desktop]# file kernel-3.10.0-123.el7.x86_64.rpm
kernel-3.10.0-123.el7.x86_64.rpm: RPM v3.0 bin i386/x86_64 kernel-3.10.0-123.el7
[root@localhost Desktop]# rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id ##恢复
219282 blocks
[root@localhost Desktop]# cp boot/vmlinuz-3.10.0-123.el7.x86_64 /boot/ ##复制到/boot/下
在7.0镜像中,目录Packages中找到kernel-3.10.0-123.el7.x86_64.rpm,拖拽到桌面
恢复以及复制:
方法二:删除文件后本机已经重新启动
[root@localhost ~]# cd /boot/
[root@localhost boot]# ls
vmlinuz-3.10.0-123.el7.x86_64
[root@localhost boot]# rm -fr vmlinuz-3.10.0-123.el7.x86_64
[root@localhost boot]# reboot
首先要进入挽救模式,然后再输入以下步骤:
df
cd /run/install/repo
ls
cd Packages
pwd
cp kernel-3.10.0-123.e17.x86_64.rpm /mnt/sysimage/mnt/
chroot /mnt/sysimage
cd /mnt/
ls
rpm2cpio kernel-3.10.0-123.e17.x86_64.rpm | cpio -id
cp boot/vmlinuz-3.10.0-123.el7.x86_64 /boot/
删除vmlinuz-3.10.0-123.el7.x86_64
重启后查看恢复成功:
注:利用光盘恢复所损失文件输入命令时,必须清楚实际/目录的环境
四·初始化程序丢失
[root@localhost Desktop]# rm -fr /boot/initramfs-3.10-123.e17.86_64.img
实验步骤:
方法一:删除文件后本机没有重新启动
[root@localhost ~]# cd /boot/
[root@localhost boot]# ls
initramfs-3.10.0-123.el7.x86_64.img
[root@localhost boot]# mkinitrd /boot/initramfs-$(name -r).img $(uname -r) ##恢复 (uname -r 显示内核版本名)
[root@localhost boot]# ls
方法二:删除文件后本机重新启动
进入挽救模式:
chroot /mnt/sysimge
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) ##恢复
ls /boot/initramfs-3.10.0-123.el7.x86_64.img ##查看是否恢复成功
exit
exit
进入virt-manager后先将server force off 再将光盘驱动调到最后,启动
进入挽救模式:
启动成功后查看是否由此文件:
五·系统启动级别被修改
syatemctl set-deflault shutdown.target
实验步骤:
[root@localhost ~]# systemctl set-default multi-user.target
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'
[root@localhost ~]# systemctl set-default shutdown.target
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/shutdown.target' '/etc/systemd/system/default.target'
[root@localhost ~]# reboot
1.开机按上下键
2.按e进入编辑模式
3.选择内核启动行
linux16 /vmlinuz-xxxx ro xxxxxx 5 ##添加5是表示开启图形
4.ctrl +x
5.进入虚拟机
[root@localhost ~]# systemctl set-default graphical.target
rm '/etc/systemd/system/default.target'
ln -s '/usr/lib/systemd/system/graphical.target' '/etc/systemd/system/default.target'