Linux之系统排错

本文详细介绍了Linux系统遇到MBR主导分区损坏、文件引导损坏、内核程序丢失及初始化镜像文件丢失等问题时的修复方法。包括使用GRUB2修复MBR,重建grub.cfg文件,恢复内核程序vmlinuz及初始化镜像initramfs,并处理/boot分区被删除和开机启动级别被篡改的情况。

MBR主导分区损坏

模拟问题:dd if=/dev/zero of=/dev/vda bs=446 count=1
在这里插入图片描述
当你重启电脑后会出现以下错误,系统无法正常开机
在这里插入图片描述
前提条件----------------必须要有一个与系统相同的镜像
解决方案
(1)真机执行virt-manager,选择grub2出现错误的虚拟机,并关闭虚拟机;

在这里插入图片描述

(2)点击灯泡,根据虚拟机版本添加光驱(如7.3的系统光驱为7.3版本的镜像)

在这里插入图片描述

(3)点击Boot opations,将IDE CDROM 调到第一个,以便系统启动时第一个识别IIDE CDROM1; ##注意:光驱启动
在这里插入图片描述

(4)打开虚拟机,选择修复选项
在这里插入图片描述
在这里插入图片描述
(5)进入系统后,进行过下面的步骤
进入真实环境:chroot /mnt/sysimage
查看boot程序所在分区:df
执行:grub2-install /dev/vda
两次exit重启系统
在这里插入图片描述

(5)关闭虚拟机点击灯泡,选择Boot opations将IDE CDROM1调到最后一个,使系统重启时第一个识别
在这里插入图片描述
重新打开系统并打开图形界面,就可启动成功

文件引导损坏——/boot/grub2/grub.cfg

boot分区的引导文件 /boot/grub2/grub.cfg
在这里插入图片描述
/boot/grub2/grub.cfg.此文件属于 Linux 系统开启的自动引导文件,通过此文可以自动完成对系统根目录的挂载,linux 内核的初始化和初始化程序的引导,此文件若是缺失,系统则无法自动开启,需要进行手动引导。

模拟问题:/boot/grub2/grub.cfg文件缺失
第一种情况:没有重启:grub2-mkconfig > /boot/grub2/grub.cfg
在这里插入图片描述

第二种情况:/boot/grub2/grub.cfg文件缺失,重启后:
(1)设定root用户读取第一个磁盘的第一个分区 : set root=‘hd0,msdos1’
(2)手动进行内核引导 ,将根目录只读挂在到/dev/vda1:linux16 /boot/vmlinuz-3.10.0-123.el7.x86_64 ro root=/dev/vda1
(3)生成自动引导初始化程序 :initrd16 /boot/initramfs-3.10.0-123.el7.x86_64.img
(4)启动机器
在这里插入图片描述
(5)打开虚拟机,在虚拟机里进行恢复:grub2-mkconfig > /boot/grub2/grub.cfg
在这里插入图片描述

内核程序被删除——vmlinuz-3.10.0-123.el7.x86_64

若是系统的 vmlinuz-3.10.0-123.el7.x86_64 缺失,系统因为无法进行下一步的开机引导而不能启动。

模拟问题:rm -rf /boot/vmlinuz-3.10.0-123.el7.x86_64
重启服务后出现下面的问题
在这里插入图片描述

解决问题:
(1)进入修复模式且进入真正的系统中(第一个问题的第四步)
(2)切换到Packages目录下:cd /run/install/repo/Packages
(3)复制内核文件到真实环境的真实目录下: cp kernel-3.10.0-123.el7.x86_64.rpm /mnt/sysimage/mnt
(4)rpm2cpio 命令用于将rpm软件包转换为cpio格式的文件:rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm | cpio -id
(5)复制vmlinuz-3.10安装到boot分区:cp boot/vmlinuz-3.10.0-123.el7.x86_64 /boot/
第一个’boot/’是内核安装包内的东西,第二个/boot/是真实主机的根目录,将内核安装包内的对应内核程序移动到/boot/下,使机器可以正常运行
(6)两次exit进行重新启动
在这里插入图片描述

初始化镜像文件丢失——initramfs-3.10.0-123.el7.x86_64.img

模拟问题:rm -f /boot/initramfs-3.10.0-123.el7.x86_64.img
情况一:没有重启系统
重新恢复:mkinitrd /boot/initramfs-3.10.0-123.el7.x86_64.img 3.10.0-123.el7.x86_64.img
在这里插入图片描述

情况二:重启系统后
重启服务后出现下面的问题
在这里插入图片描述

(1)进入修复模式且进入真正的系统中(第一个问题的第四步)
(2)进入真实环境:chroot /mnt/sysimage
(3)在/boot目录下建立一个映像文件:mkinitrd /boot/initramfs-3.10.0-123.el7.x86_64.img 3.10.0-123.el7.x86_64
mkinitrd /boot/initramfs-$(uname -r).img (uname−r)等同于mkinitrd/boot/initramfs−3.10.0−123.el7.x8664.img3.10.0−123.el7.x8664mkinitrd指定映像文件名称和路径指定所依据的内核版本信息mkinitrd可建立映像文件,以供linux开机时载入ramdis;根据内核版本和指定参数生成映像文件显示内核版本uname−r在bash中,(uname -r) 等同于 mkinitrd /boot/initramfs-3.10.0-123.el7.x86_64.img 3.10.0-123.el7.x86_64 mkinitrd 指定映像文件名称和路径 指定所依据的内核版本信息 mkinitrd 可建立映像文件,以供linux开机时载入ramdis;根据内核版本和指定参数生成映像文件 显示内核版本uname -r 在bash中,(unamer)mkinitrd/boot/initramfs3.10.0123.el7.x8664.img3.10.0123.el7.x8664mkinitrdmkinitrdlinuxramdisunamerbash()与(反引号)都是用来做命令替换的,$()并不是所有的unix系统都支持这种方式,但反引号肯定支持。
报错信息:cat:write error:Broken pipe
pro里面的东西在这个环境下(IDE CDROM1)没有,所以出现报错信息;
(5)两次exit重新启动系统
在这里插入图片描述

当/boot分区被删除

模拟问题:rm -fr /boot/
重启服务后出现下面的问题
在这里插入图片描述
解决问题:

(1)进入修复模式且进入真正的系统中(第一个问题的第四步)
(2)进入真实环境:chroot /mnt/sysimage
(3)挂载光驱
(4)强制安装内核文件
在这里插入图片描述

当开机启动级别被篡改

模拟问题:sytemctl set-default reboot.target
重启服务后出现下面的问题
在这里插入图片描述

解决问题:

(1)进入修复模式且进入真正的系统中(第一个问题的第四步)
(2)进入真实环境:chroot /mnt/sysimage
(3)删除软连接 :rm -fr /etc/systemd/system/default.target
(4)建立新连接: ln -s /lib/systemd/system/graphical.target /etc/systemd/system/default.target ##建立新的软连接
837
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值