Linux大神必会操作——系统排错

1.了解系统引导过程

Linux大神必会操作——系统排错_第1张图片

(1).BIOS初始化

基本输入/输出系统(BIOS)时内置于标准x86/x86-64硬件的固定接口,将硬件置于已知状态并准备好系统以加载操作系统;用于检测并初始化硬件确定从中引导的设备。

此过程可能出现的错误:
错误或异常的BIOS设置以及错误引导设备顺序

按特定于供应商的健设,使用特定于供应商的配置实用程序
通常,【F12】可以执行一次引导顺序覆盖

(2)grub磁盘引导阶段

MBR的作用是为了记录/boot目录所在分区位置

如下图中所示,当磁盘0磁道1扇区的前446字节被我们用其它数据填充之后,系统将正常启动

dd if=/dev/zero of=/dev/vda bs=446 count=1		##截取数据填充磁盘
grub2-install /dev/vda							##启动分区所在的硬盘

Linux大神必会操作——系统排错_第2张图片
(3)gurb文件引导阶段

引导文件

/boot/gurb2/grub.cfg

指定/boot分区位置,加载内核,启动系统初始化进程

(4)内核引导阶段

检测硬件设备,设备驱动初始化,将/只读挂载,载入初始进程systemd

内核文件丢失需要重新安装内核

(5)systemd初始化

开启selinux和systemd-tools
加载内核参数
加载系统时钟键盘,主机名称
读写挂载/文件系统
激活raid,lvm设备
激活系统配额
启动multi-user.target.wants中的所有服务脚本
器用虚拟控制台
启动图形

(6)系统启动级别

runlever0.target->poweroff.target
runlever1.target->rescue.target
runlever2.target->multi-user.target
runlever3.target->multi-user.target
runlever4.target->multi-user.target
runlever5.target->grapical.target
runlever6.target->reboot.target

设定启动级别

systemctl set-defualt + 启动级别
/etc/systemd/system/defualt.target

2.系统错误模拟与解决

下面我们根据上述系统的各个阶段来模拟每个启动阶段可能产生的问题,并提供解决方案

(1)破坏开机引导的446字节并重启

模拟问题:

我们首先找到要操作的设备名——/dev/sda ,【/dev/sda1】是它的一个分区
注意:【*】符号表示该设备具有自举功能
Linux大神必会操作——系统排错_第3张图片
dd if=/dev/zero of=/dev/sda bs=446 count=1 ##截取数据填充磁盘

Linux大神必会操作——系统排错_第4张图片
系统无法重启,卡着如下所示界面
Linux大神必会操作——系统排错_第5张图片
解决方案

首先强制关闭系统,进入挽救模式:

【小提示:如果在操作过程中鼠标光标消失,可使用contl+alt解决】

添加光盘引导方式,并调整磁盘顺序
Linux大神必会操作——系统排错_第6张图片
Linux大神必会操作——系统排错_第7张图片
启动系统——选择第三项系统修复
Linux大神必会操作——系统排错_第8张图片
选择第二项,进入后选择第一项【继续】
Linux大神必会操作——系统排错_第9张图片Linux大神必会操作——系统排错_第10张图片

chroot /mnt/sysimage
df
grub2-install /dev/sda	     ##启动分区所在硬盘
exit
exit

Linux大神必会操作——系统排错_第11张图片
退出挽救模式后强制关闭虚拟机,调整磁盘顺序然后重启系统

Linux大神必会操作——系统排错_第12张图片
Linux大神必会操作——系统排错_第13张图片
(2)文件引导阶段出现问题——引导文件丢失

模拟问题:删除引导文件

先查看根分区和boot分区上挂载的文件名称
Linux大神必会操作——系统排错_第14张图片
删除引导文件

rm -rf /boot/gurb2/grub.cfg

在这里插入图片描述

解决方案:

若删除后系统没有重启,可使用命令直接生成

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

Linux大神必会操作——系统排错_第15张图片
若删除后系统被重启,系统将卡在下图页面
Linux大神必会操作——系统排错_第16张图片

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

【部分文件名可以使用tab键补充,准确性更高】
Linux大神必会操作——系统排错_第17张图片
上述操作过后系统正常启动,但只是临时的,因为引导文件并没有恢复,此时我们需要进行前面的操作手动生成引导文件

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

Linux大神必会操作——系统排错_第18张图片
(3)文件引导阶段出现问题——内核文件丢失

内核文件有如下
Linux大神必会操作——系统排错_第19张图片

模拟问题:

rm -rf /boot/vmlinz-3.10.0-514.el7.x86_64

Linux大神必会操作——系统排错_第20张图片
Linux大神必会操作——系统排错_第21张图片
解决方案:

首先进入挽救模式,具体操作在上面已经讲过

chroot /mnt/sysimage
mkdir /rhel7
mount /dev/sr0 /rhel7
cd /rhel7/Packages
cp kernel-3.10.0-514.el7.x86_64.rpm /mnt
cd /mnt
rpm2cpio kernel-3.10.0-514.el7.x86_64.rpm | cpio -id
cd boot
cp vmlinuz-3.10.0-514.el7.x86_64 /boot
exit
exit

Linux大神必会操作——系统排错_第22张图片
退出后强制停止虚拟机,调整磁盘顺序,在重新启动!

(4)系统初始化镜像文件丢失

模拟问题:删除初始化镜像文件

rm-rf /boot/initramfs-3.10.0-514.el7.x86_64.img

Linux大神必会操作——系统排错_第23张图片
解决方案

当系统没有重启时——用命名自动生成

mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

Linux大神必会操作——系统排错_第24张图片
当系统重启后
Linux大神必会操作——系统排错_第25张图片

进入挽救模式

chroot /mnt/sysimage
mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

Linux大神必会操作——系统排错_第26张图片
(5)当/boot分区被删除

模拟问题:

rm -rf /boot/*

Linux大神必会操作——系统排错_第27张图片
解决方案

进入挽救模式

chroot /mnt/sysimage
mkdir /boot
grub2-install /dev/sda
mount /dev/cdrom/mnt
rpm -ivh /mnt/Packages/kernel-3.10.0-514.el7.x86_64.rpm --force
grub2-mkconfig > /boot/grub2/grub.cfg

Linux大神必会操作——系统排错_第28张图片
退出后强制关闭虚拟机,调整磁盘顺序,重启系统!

(6)开启级别被篡改

模拟错误:

ln -s /lib/systemd/system/reboot.target  /etc/systemd/system/default.target

Linux大神必会操作——系统排错_第29张图片
此时系统将处于无限重启

解决方案:

开机后快速按上下键停止读秒,按“e”进入编辑模式

【在initrd16 /initramfs-3.10.0-514.el7.x86_64.img的前一行尾输入 5——设置为内核启动】,然后根据下方提示ctrl+x启动系统。
Linux大神必会操作——系统排错_第30张图片
这样的解决方式是临时的,我们需要修改启动级别的链接指向,否则此次关机后重启,系统依然处于无限重启

Linux大神必会操作——系统排错_第31张图片
(7)忘记超级用户登陆密码

解决方案:

开机后快速按上下键停止读秒,按“e”进入编辑模式
Linux大神必会操作——系统排错_第32张图片

在initrd16 /initramfs-3.10.0-514.el7.x86_64.img的前一行尾进行修改,然后根据下方提示ctrl+x启动系统。

Linux大神必会操作——系统排错_第33张图片
在接下来出现的界面进行如下操作

Linux大神必会操作——系统排错_第34张图片
登陆时输入更改后的密码【redhat】就能完成登陆!!!!

你可能感兴趣的:(Linux基础)