Linux入门之系统排错

linux系统虽然是一个相对比较安全的系统,它也会出现一些问题,面对这些问题,我们需要知道和了解常遇到的问题,通过这些故障的学习,我们可以解决简单的故障问题。

一、系统引导过程概述
通电  -->  bios初始化  -->  grub2磁盘引导阶段  -->  grub2文件引导阶段  -->  指定boot所在分区  -->  启动内核,只读挂在/设备  -->  启动init程序进入初始化阶段  -->  启动systemd初始化进程  -->  取/etc/systemd/中的文件  -->  启动程序  -->  启动登录环境

在进行系统排错之前,我们需要对我们的虚拟机或者是快照,添加一个存放镜像文件的光盘设备。要注意一定要有镜像文件,通过镜像文件,可以恢复文件。此外一定不要在真实主机中做实验。镜像文件要和虚拟机的版本一致。

二、boot引导错误

1. 模拟问题:

dd if=/dev/zero of=/dev/vda bs=446 count=1      ##破坏引导分区
vim /etc/sysconfig/selinux       ##状态改为disabled,目的加快系统运行

我们可以通过【fdisk -l】命令,可以查看虚拟中boot引导分区存放的位置,引导程序存放在带*的设备中,我们一定要先知道引导分区的位置,再进行操作。破坏分区后,reboot重启。

2. 出现的现象

我们可以发现系统在该位置卡住,系统启动不了。

3. 问题解决解决

首先,我们要做的是,修改启动顺序,使光盘启动为第一个,因为我们要利用镜像文件进行引导文件的恢复。

我们会看到以下界面,选择【troubleshooting】问题解决选项,不要选择第一个选项,第一个是安装系统。

进入挽救模式,从而进入单人维护模式进行系统的恢复。

单人维护界面,我们需要选择选项【1】,找到系统安装镜像,并将它挂载到/mnt/sysimage上,回车,我们可以看到命令提示行出现,可以通过命令进行恢复。

查看挂载信息,我们看到的boot分区,它是镜像文件中的boot分区,不是我们虚拟机中出错的boot分区。我们需要将我们系统中的boot分区挂载。

chroot /mnt/sysimage        ##挂载到系统上的引导/boot上
df                          ##查看挂载信息

挂载系统上的boot分区

grub2-install /dev/vda      ##安装分区
exit                        ##退出

安装boot分区引导文件,安装完毕会提示“没有错误”,然后我们需要两次【exit】退出该模式。

退出后,系统仍然会进入选项菜单,我们需要通过点击倒三角强制退出,修改启动顺序,启动系统,这样系统就可以登录了。

三、引导文件丢失

1. 模拟问题:

cd /boot/grub2/                 ##启动文件存放位置
rm -fr /boot/grub2/grub.cfg     ##删除启动文件

2. 出现的现象

会出现grub> ,系统告诉我们需要进行手动的引导

3. 问题解决

(1)未重启

删除文件后,没有重新启动,我们可以通过系统启动文件模板进行恢复

grub2-mkconfig > /boot/grub2/grub.cfg        ##文件恢复

(2)已重启

首先,我们需要通过【df】命令查看,根分区挂载的设备,我们在恢复过程需要使用该设备,如果设备填写错误,则手动引导会出现问题。

set root='hd0,msdos1'        ##第一块硬盘和第一块分区
linux16 /vmlinuz-3.10.0-514.el7.x86_64 ro root=/dev/vda3   ##内核文件
initrd16 /initramfs-3.10.0-514.el7.x86_64.img              ##系统初始化镜像
boot            ##启动

在grub> 后直接输入命令,进行手动引导,要注意的是我们不用记住文件的版本,我们可以使用【tab】键,进行命令的补全,同时也避免了我们手动输入的错误。

登录系统后,我们需要将删除的文件恢复,没有恢复,下一次系统启动,还会出现该问题。

grub2-mkconfig > /boot/grub2/grub.cfg          ##文件恢复

四、内核文件丢失

1. 模拟问题:

rm -fr /boot/vmlinuz-3.10.0-514.el7.x86_64     ##删除内核文件
reboot                        ##重启

2. 出现的现象

上传内核文件后,我们可以直接解压镜像文件,将镜像文件中的内核文件复制到/boot目录下。如果我们重启了系统,就不能这样操作了。

3. 解决问题

和第一个排错相同,我们需要修改启动顺序为光盘启动,而后进入挽救模式,进入后,选择【1】,回车,我们会看到命令提示行,首先使/boot分区直接挂载。

mount /dev/cdrom /media           ##挂载镜像文件
cd /media/Packages
cp kernel-3.10.0-514.el7.x86_64.rpm /mnt     ##复制安装包到mnt目录
cd /mnt
rpm2cpio kernel-3.10.0-514.el7.x86_64.rpm | cpio -id     ##解开压缩包

我们需要将镜像文件挂载,将里面关于内核文件的压缩包解压,将我们所需要的内核文件复制到/boot下,我们的系统就可以启动

cd boot                  ##切换到镜像文件中的boot目录下
cp vmlinux-3.10.0-514.el7.x86_64 /boot       ##复制内核文件
cd /boot                 ##查看根分区是否有该文件
exit

五、初始化镜像丢失

1. 模拟问题:

rm -fr initramfs-3.10.0-514.el7.x86_64.img       ##删除初始化镜像文件

2. 出现的现象

删除初始化镜像文件后,系统会报错,找不到初始化镜像文件。

3. 解决问题

(1)未重启

我们可以通过以下命令恢复镜像文件

mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)    ##镜像文件的恢复

(2)已重启

设置启动顺序为光盘启动,进入挽救模式,选择【1】,/boot分区的挂载,开始恢复初始化镜像文件。

mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)    ##恢复初始化镜像文件

六、系统启动级别被篡改

1. 模拟问题:

cd /etc/systemd/system/
ls -l default.target                  ##查看图形界面是否在初始化启动列表中
systemctl set-default reboot.target   ##设置进入默认界面,重新启动

默认启动级别的篡改会使我们的系统处于无限循环重启的状态。

2. 出现的现象

系统一直处于无限重启的循环

3. 解决问题

回车,进入系统,系统会一直回到该界面,我们需要按【e】进入编辑

在编辑界面的Linux16所在行,行末添加启动级别【5】,通过【ctrl+x】执行

登录系统后,我们需要将被篡改的启动级别改正,不然再次启动,系统还是会出现无限重启状态。

cd /etc/systemd/system/
systemctl set-default graphical.target   ##修改默认启动后,进入图形界面
ls -l default.target  ##查看图形界面是否在初始化启动列表中

七、root密码被篡改

reboot 
进入选项菜单,按【e】进入编辑状态,在linux16所处行,改为删除ro之后的代码,并将ro改为rw rd.break
ctrl+x 继续执行         

1. 现象

超级用户登录不了,密码被篡改

2. 解决问题

通过按上下键,可以停止读秒,我们可以看到下面提示按【e】键,进入编辑模式

进入编辑模式之后,我们需要在Linux16所在行,删除ro后面的代码,并将它改为“rw rd.break”,中断直接进入登录界面,设置完毕后,通过【ctrl+x】执行修改。

chroot /sysroot/     
方法一:echo westos | passwd --stdin root        ##修改密码
方法二:passwd root                              ##输入新密码,再次确认
touch /.autorelabel                             ##自动刷新内核级火墙,启动初始化标识   

我们可以看到有命令提示行出现,输入命令修改root用户的密码,由于防火墙可能会阻止超级用户密码的更改,我们需要创建一个自动启动初始化标识的文件,来避免防火墙的阻挡。输入两次【exit】退出单人维护模式。

exit后,系统会自动启动,直接进入启动界面,我们可以用修改后的密码进行登录

猜你喜欢

转载自blog.csdn.net/qq_43830639/article/details/89889255