linux系统排错及修复方法

Linux系统的配置文件缺失,或核心文件被篡改(例如:启动级别被篡改),都会导致系统启动的不成功。

为了解决系统启动过程中出现的问题,我们先来了解系统引导启动的过程:

Linux的系统启动过程大致为:

通电——bios初始化——grub2磁盘引导阶段——grub2文件引导阶段——指定boot所在分区——启动内核,只读挂载 / 设备——启动init程序进入初始化阶段——启动systemd初始化进程——读取/etc/systemd/中的文件——启动程序——启动登录程序

1.grub2磁盘引导异常(MBR异常):

磁盘引导阶段 mbr主引导记录如果损坏或者缺失导致系无法正常启动。
模拟问题 :
使用该命令dd if=/dev/zero of=/dev/vda bs=446 count=1 #剪切446个字节的数据放入主引导记录所在的磁盘。通过 fdisk -l 查看系统存储设备,带有*的磁盘为主引导记录所在的磁盘。

[root@localhost ~]# dd if=/dev/zero of=/dev/vda bs=446 count=1
                                  截取446字节覆盖主引导记录 ,模拟其损坏
1+0 records in
1+0 records out
446 bytes (446 B) copied, 0.000112637 s, 4.0 MB/s
[root@localhost ~]# reboot        #重启

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1          ##键入1
           ##回车
chroot /mnt/sysimage/   ##进入shell
df                      
grub2-install /dev/sda   ##安装grub2
exit
exit

##配置完成后,恢复从磁盘启动

2.grub2文件引导异常(引导文件丢失):

问题模拟:为了模拟故障环境,我们删除grub2引导文件:

即删除/boot/gurb2/grub.cfg
在这里插入图片描述
首先df查看挂载情况
在这里插入图片描述

当系统没有重启的时候

 grub2-mkconfig > /boot/grub2/grub.cfg

当系统重新启动以后
可以看到系统的挂载在 / 下的硬盘为/dev/sda3,挂载在/boot下的硬盘为/dev/sda1(也可以进入挽救模式查看挂载情况)

扫描二维码关注公众号,回复: 5970698 查看本文章

重启系统,可以看到异常,重启不了
在这里插入图片描述

set root='hd0,msdos1'			##此位置是不固定的,位置指定boot所在分区
linux16 /vmlinz-3.10.0-123.el7.x86_64 ro root=/dev/sda3		##写根分区挂载设备名称
initrd16 /initramfs-3.10.0-123.el7.x86_64.img      #指定系统初始化文件
boot

在这里插入图片描述
配置完后,可以重启成功,但是这只是临时的,再次启动还是会异常无法启动,所以需要用命令生成引导文件

grub2-mkconfig > /boot/grub2/grub.cfg

在这里插入图片描述

3、文件引导阶段内核文件丢失

内核文件:/boot/vmlinuz-3.10.0-123.el7.x86_64
模拟问题 rm -fr /boot/vmlinuz-3.10.0-123.el7.x86_64

首先我们看一下/boot下有哪些文件:

在这里插入图片描述
系统启动异常模拟:我们删除/boot下的内核文件,模拟内核文件丢失的情况:
在这里插入图片描述
重启电脑,可以看到系统,可以看到系统异常,无法正常启动:
在这里插入图片描述
进入挽救模式

chroot  /mnt/sysimage    #切换正常的跟环境
mount /dev/sr0  /mnt  #将带有系统安装包的光驱挂载在任意目录上
cd /mnt  #进入系统光盘
cp kernel-3.10.0-123.el7.x86_64.rpm /opt #将系统内核安装包复制到另一个目录
cd /opt # 切换到存放内核安装包的目录
rpm2cpio kernel-3.10.0-123.el7.x86_64.rpm |cpio -id   #将压缩的安装包进行解压
ls #显示该安装包分解后产生的文件
cd boot/   # 进入解压后产生的boot目录中,该目录中存在需要的内核文件。
cp  vmlinuz-3.10.0-123.el7.x86_64 /boot   #将系统丢失的内核文件复制到/boot中
exit
exit   #退出

在这里插入图片描述
退出挽救模式。选择使用磁盘启动系统 关闭虚拟机后开启,系统正常启动。

4、文件引导阶段系统初始化镜像文件丢失

系统初始化文件:/boot/initramfs-3.10.0-123.el7.x86_64.img
#模拟问题 : rm -fr /boot/initramfs-3.10.0-123.el7.x86_64.img
在这里插入图片描述
重启系统,我们可以看到系统的异常,系统初始化镜像文件找不到
在这里插入图片描述
当系统没有重启的时候

mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)
uname -r #显示当前系统版本

恢复正常
当系统重启之后

进入挽救模式

  chroot /mnt/sysimage     #切换到正常的跟环境,
    mkinitrd   /boot/initramfs-$(uname -r).img $(uname -r)  # 重新生成系统初始化文件

退出挽救模式
使用磁盘启动系统即可

5、无限重启

模拟问题:systemctl set-default reboot.target #默认系统默认开机重启 导致一直在重新启动

开机时候在下图界面按上下键进行选择,然后按e
在这里插入图片描述
解决方案:

在进入上面的界面后,我们按上下键,避免自动直接进入系统,而后按e进入可编辑模式,在linux16 /。。。后面加上启动级别为 5 即图像化系统启动界面 就可以正常进入系统。
在这里插入图片描述
ctrl+x 继续进行系统启动
正常进入系统后 进行设置systemctl set-default graphical.target ,将默认指向图形模式

6、忘记超级用户密码,进行重新设置

忘记超级用户密码,无法使用超级用户,需重新进行设置。
开机时候在下图界面按上下键进行选择,然后按e
在这里插入图片描述

更改上面的字符后得到一个shell
键入   chroot /sysroot
passwd  root     #改超级用户密码
俩次输入密码
touch /.autorelable     #
exit
exit     #退出

注意:当selinux关闭时不需要建立该文件;当selinux开启时必须建立该文件

猜你喜欢

转载自blog.csdn.net/weixin_44818720/article/details/89445710