Linux中的系统故障排错并解决

Linux中的系统故障排错并解决

    • 故障类型1.硬盘引导阶段:
    • 故障类型2.文件引导阶段:
    • 故障类型3.开机启动级别被篡改:
    • 故障类型4.忘记系统root用户密码:

故障类型1.硬盘引导阶段:

硬盘中的mbr信息丢失
模拟问题: dd if=/dev/zero of=/dev/vda bs=446 count=1
(将启动磁盘的前446字节,即mbr文件更改)

解决方案:
从光盘启动系统,进入rescue(援救)模式
(我们正常启动时,是从系统的硬盘启动)
chroot /mnt/sysimage
grub2-install /dev/vda
(grub2-install 启动分区所在硬盘)
exit
exit

问题产生及现象
图一操作后,reboot重启机器,遇到问题,见图二
(图一中,fdisk -l ,可见。/dev/vda右侧有一 * 号,表示该盘为启动分区所在磁盘)
Linux中的系统故障排错并解决_第1张图片
Linux中的系统故障排错并解决_第2张图片
解决问题具体操作:
先将虚拟机关机。
Linux中的系统故障排错并解决_第3张图片
Linux中的系统故障排错并解决_第4张图片
Linux中的系统故障排错并解决_第5张图片
Linux中的系统故障排错并解决_第6张图片
Linux中的系统故障排错并解决_第7张图片
Linux中的系统故障排错并解决_第8张图片
Linux中的系统故障排错并解决_第9张图片
Linux中的系统故障排错并解决_第10张图片
启动虚拟机
Linux中的系统故障排错并解决_第11张图片
Linux中的系统故障排错并解决_第12张图片
Linux中的系统故障排错并解决_第13张图片
Linux中的系统故障排错并解决_第14张图片
Linux中的系统故障排错并解决_第15张图片
Linux中的系统故障排错并解决_第16张图片
再次关闭虚拟机
Linux中的系统故障排错并解决_第17张图片
这时再启动虚拟机就可以正常启动了

故障类型2.文件引导阶段:

(1)引导文件丢失
模拟问题:rm -fr /boot/grub2/grub.cfg

当系统未重新启动时:
grub2-mkconfig > /boot/grub2/grub.cfg
使用该命令即可以重新找回grub.cfg文件

当系统重新启动时:
grub > set root=‘hd0,msdos1’
grub > linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 root=/dev/vda1
grub > initrd16 /boot/initramfs-3.10.0-123.el7.x86_64.img
grub > boot
以上操作虽然能进入系统,但只是临时的,还是需要下面的命令将grub.cfg文件爱你找回来
grub2-mkconfig > /boot/grub2/grub.cfg

问题及现象:
Linux中的系统故障排错并解决_第18张图片
Linux中的系统故障排错并解决_第19张图片

解决问题具体操作:
Linux中的系统故障排错并解决_第20张图片
Linux中的系统故障排错并解决_第21张图片
(2)内核文件丢失
模拟问题:rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64

进入rescue模式
chroot /mnt/sysimage
mkdir /rhel7
mount /dev/sr0 /rhel7
cd /rhel7/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
(将这个rpm包打开,只安装其中的一部分)
cd boot
cp vmlinuz-3.10.0-123.el7.x86_64 /boot
exit
exit

问题及现象:
Linux中的系统故障排错并解决_第22张图片
Linux中的系统故障排错并解决_第23张图片
解决问题具体操作:
先关闭虚拟机
Linux中的系统故障排错并解决_第24张图片
Linux中的系统故障排错并解决_第25张图片
开启虚拟机
Linux中的系统故障排错并解决_第26张图片
Linux中的系统故障排错并解决_第27张图片
Linux中的系统故障排错并解决_第28张图片
Linux中的系统故障排错并解决_第29张图片
Linux中的系统故障排错并解决_第30张图片
Linux中的系统故障排错并解决_第31张图片
关闭虚拟机
Linux中的系统故障排错并解决_第32张图片
再开启虚拟机就可以正常启动系统了

(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)
exit
exit

问题及现象:
Linux中的系统故障排错并解决_第33张图片
Linux中的系统故障排错并解决_第34张图片
解决问题具体操作:
系统未重启时:
Linux中的系统故障排错并解决_第35张图片
系统重启后:
关闭虚拟机
Linux中的系统故障排错并解决_第36张图片
由光盘启动,进入rescue模式
Linux中的系统故障排错并解决_第37张图片
关闭虚拟机后
再切换回,从硬盘启动进入系统
Linux中的系统故障排错并解决_第38张图片
重新启动虚拟机,就可以正常进入系统

(4)boot分区被删除
进入rescue模式
chroot /mnt/sysimage
mkdir /boot
grub2-install /dev/vda
mount /dev/sr0 /mnt
rpm -ivh /mnt/Packages/kernel-3.10.0-123.el7.x86_64.rpm --force
(此操作时间也较长,需要耐心等待)
grub2-mkconfig > /boot/grub2/grub.cfg

问题及现象:
Linux中的系统故障排错并解决_第39张图片
Linux中的系统故障排错并解决_第40张图片
解决问题具体操作:
从光盘启动,进入rescue模式
Linux中的系统故障排错并解决_第41张图片
exit退出该rescue模式后,关机,设置为从硬盘启动,再重启虚拟机,即可正常启动系统

故障类型3.开机启动级别被篡改:

模拟问题:
systemctl set-default reboot.target

解决方法:
1.开机按上下键停止在选择系统的界面
2.按e进入编辑界面
3.选择内核启动行
linux16 /vmlinuz-xxxxx ro xxxxx 更改为:
linux16 /vmlinuz-xxxxx rw rd.break
(将原来的ro只读挂载,更改为rw读写挂载,进入单用户模式进行操作)
4.ctrl+x
5.chroot /sysroot
6.rm -fr /etc/systemd/system/default.target
7.ln -s /lib/systemd/system/graphical.target
/etc/systemd/system/default.target
(或者6,7可以使用该命令代替systemctl set-default graphical.target,但本质相同)
8.两次exit退出该模式
exit
exit

问题及现象:
Linux中的系统故障排错并解决_第42张图片
Linux中的系统故障排错并解决_第43张图片
再上图位置处会卡住一会,然后就会不断重启系统

解决问题具体操作:
Linux中的系统故障排错并解决_第44张图片
Linux中的系统故障排错并解决_第45张图片
Linux中的系统故障排错并解决_第46张图片
Linux中的系统故障排错并解决_第47张图片

故障类型4.忘记系统root用户密码:

即,如何在无法拥有root权限的限制下,更改root用户的密码,修改完成后,建立文件/.autorelabel让系统重新扫描所有文件

不知道读者注意到没有,刚进入单用户模式下就可以看到switch_root,也就是说我们无需输入密码就获得了root权限
(作者认为,这应该是因为只有一个用户的模式下,也就不存在权限的限制,自然要将所有的权限都给这唯一的一个用户)

也由此可见,最重要的安全保障,不是逻辑上的,而是物理上的,要保证我们的机器的安全才是绝对的安全

解决方法:
同上文类型3,先进入但用户模式下,再使用passwd更改root用户密码,修改完成后,建立文件/.autorelabel让系统重新扫描所有文件

这里如果直接用passwd命令更改,我们无法直观地看到我们所输入的密码,容易在输入错误的情况下,反而不能更改密码成功。因此这里我们使用如下命令:
echo 2019ccjj | passwd --stdin root
(–stdin标准输入)

具体的操作步骤:
Linux中的系统故障排错并解决_第48张图片
Linux中的系统故障排错并解决_第49张图片
Linux中的系统故障排错并解决_第50张图片

你可能感兴趣的:(初识linux)