Linux大神进阶十九:系统排错

1.系统排错的过程

在这里插入图片描述

2.理解

(1)BIOS(Basic Input/Output System):基本输入输出系统,该系统存储于主板的ROM芯片上,计算机在开机时,会最先读取该系统,然后会有一个加电自检过程,这个过程其实就是检查CPU和内存,计算机最基本的组成单元(控制器、运算器和存储器),还会检查其他硬件,若没有异常就开始加载BIOS程序到内存当中。详细的BIOS功能,这边就不说了,BIOS主要的一个功能就是存储了磁盘的启动顺序,BIOS会按照启动顺序去查找第一个磁盘头的MBR信息,并加载和执行MBR中的Bootloader程序,若第一个磁盘不存在MBR,则会继续查找第二个磁盘(PS:启动顺序可以在BIOS的界面中进行设置),一旦BootLoader程序被检测并加载内存中,BIOS就将控制权交接给了BootLoader程序。
(2)MBR(Master Boot Record):主引导记录,MBR存储于磁盘的头部,大小为512bytes,其中,446bytes用于存储BootLoader程序,64bytes用于存储分区表信息,最后2bytes用于MBR的有效性检查。
(3)系统启动流程

第一步: 电脑通电
||
第二步: BIOS(主板上的只读存储ROM中,basic input or output system)
作用:硬件检测,激活硬件;
||
第三步: grub系统引导(grub引导分为两个阶段)
1)阶段1 grub磁盘引导阶段 (见3.2节)
mbr(主引导记录)主引导记录在硬盘上的0磁道,一扇区,446个字节
dd if=/dev/zero of=/dev/vda bs=446 count=1 ##可以清空mbr
进入到挽救模式,执行***chroot /mnt/sysimage***切换到真实/环境,
并执行***grub2-install /dev/vda***
2)阶段2 grub文件引导阶段(见3.3节)
找到/boot分区
读取***/boot/grub2/grub.cfg /etc/grub.cfg***
文件丢失:grub2-mkconfig >/boot/grub2/grub.cfg
grub2-mkconfig > /etc/grub.cfg
||

第四步: 内核引导阶段(见3.4节)
启动内核,只读挂载/设备
检测硬件设备
对设备驱动进行初始化
进入系统初始化阶段, 将/挂载
内核丢失,从新安装内核安装包就可以解决
方法一: rpm -ivh kernel-xxxxx.rpm --force
方法二: 拷贝所缺的目录;

||

第五步: 系统初始化阶段(系统初始化阶段加载initrd镜像)
(见3.5节)
||
第六步: 开启初始化进程systemd(见3.6节)
开始selinux
加载内核参数
初始化系统时钟,键盘,主机名称
重新读写挂载/设备
激活raid,lvm
激活配额
启动multi-user.target.wants中的所有服务(具体开启的服务取决于系统启动的级别)
开启虚拟控制台
启动图形
如何修改系统启动级别?
方法一: systemctl set-default + 启动级别
方法二: /etc/systemd/system/default.target

3.常见的系统恢复

注意: 重启速度慢的原因
开机会慢一点,因为重新扫描selinux,可以将/etc/sysconfig/selinux中enforcing改成disabled,避免开机速度慢。

3.1忘记密码

功能 代码 注释
1.1实验准备
(1) passwd ## 修改密码
(2) xxxxxxxx ## 新密码
(3) xxxxxxx ## 确认新密码
(4) init 6 ##重启
1.2系统恢复
(1) e ##进入安装页面点击e
(2) ro xxxxxxxx…UTF-8 修改为 rw rd.break ##
(3) chroot /sysroot/ ## 切换到引导目录
(4) ls ## 查看目录
(5) echo redhat passwd --stdin root
(6) exit ## 一次退出
(7) exit ## 二次退出,进行安装,生效

Result1.1实验准备 在这里插入图片描述Result1.2系统恢复
在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.2 MBR引导记录丢失

功能 代码 注释
2.1实验准备
(1) dd if=/dev/zero of=/dev/vda bs=446 count=1 ##清空MBR
(2) init 6 ## 重启
2.2系统恢复
2.2.1##添加硬盘设备 virt-manager>>>add hardware>>> Selete od create custom storage(rhel7.0)>>>CDROM device>>>finish
2.2.2修改默认启动项为光盘启动 Boot Options>>>IDECDROM>>>应用 ##
2.2.3恢复选项的选择 (1) 进入启动页面,选择Troubleshooting >>>Rescue a red hat Enterprise Linux system
(2) continue>>>okay>>>okay 然后进入恢复界面
2.2.4恢复引导记录 (1) chroot /mnt/sysimage ##进入镜像目录
(2) grub2-install /dev/vda ## 恢复引导记录
(3) exit>>>exit>>>force off the machine ##二次退出
2.2.5修改默认启动项为磁盘启动 Boot Options>>>VirtIO>>>应用 ## ##修改默认启动项为磁盘启动 ,此时便能正常启动

Result2.1实验准备

在这里插入图片描述

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

Result2.2系统恢复

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

在这里插入图片描述

3.3 引导文件丢失

功能 代码 注释
3.1实验准备
(1) rm -rf /etc/grub2 ##删除引导文件
(2) init 6 ## 重启
3.2系统恢复
3.2.1##添加硬盘设备 virt-manager>>>add hardware>>> Selete od create custom storage(rhel7.0)>>>CDROM device>>>finish
3.2.2修改默认启动项为光盘启动 Boot Options>>>IDECDROM>>>应用 ##
3.2.3恢复选项的选择 (1) 进入启动页面,选择Troubleshooting >>>Rescue a red hat Enterprise Linux system
(2) continue>>>okay>>>okay 然后进入恢复界面
3.2.4恢复引导记录 (1) chroot /mnt/sysimage ##进入镜像目录
(2) grub2-install /dev/vda ## 恢复引导记录
(3) grub2-mkconfig >/boot/grub2/grub.cfg ##将文件添加到启动项
(4) grub2-mkconfig > /etc/grub.cfg ## 将文件添加到原来的配置文件
(5) exit>>>exit>>>force off the machine ##二次退出,并关机
2.2.5修改默认启动项为磁盘启动 Boot Options>>>VirtIO>>>应用 ## ##修改默认启动项为磁盘启动 ,此时便能正常启动

Result3.1实验准备
在这里插入图片描述Result3.2系统恢复

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

3.4 引导内核文件丢失

功能 代码 注释
4.1实验准备
(1) cd /boot/ ##打开启动目录
(2) rm -rf vmlinuz-3.10.0-123.e17.x86_64 ##删除引导文件
(3) init 6 ## 重启
4.2系统恢复
4.2.1##添加硬盘设备 virt-manager>>>add hardware>>> Selete od create custom storage(rhel7.0)>>>CDROM device>>>finish
4.2.2修改默认启动项为光盘启动 Boot Options>>>IDECDROM>>>应用 ##
4.2.3恢复选项的选择 (1) 进入启动页面,选择Troubleshooting >>>Rescue a red hat Enterprise Linux system
(2) continue>>>okay>>>okay 然后进入恢复界面
4.2.4恢复引导记录:方案一 (1) chroot /mnt/sysimage ##进入镜像目录
(2) mkdir /johnsonlee ##创建搭载目录
( 3) mount /dev/sr0 /johnsonlee ##将光盘文件挂载
(4) cd /johnsonlee/ ##切换到光盘挂载点
(5) ls ##查看光盘中的文件
(6) cd Packages/ ##切换到安装包目录中(记住,不要ls,有4000多个包)
(7) rpm -ivh kernel-xxxxx.rpm --force ##强制安装该内核文件
(8) exit>>>exit>>>force off the machine ##二次退出,并关机
4.2.4恢复引导记录:方案二 (1) chroot /mnt/sysimage ##进入镜像目录
(2) mkdir /curry ##创建搭载目录
( 3) mount /dev/sr0 /curry ##将光盘文件挂载
(4) cd /curry ##切换到光盘挂载点
(5) ls ##查看光盘中的文件
(6) cd Packages/ ##切换到安装包目录中(记住,不要ls,有4000多个包)
(7) cp kernel-3.10.-123.e17.x86_64.rpm /mnt/ ##将这个文件包拷贝到/mnt/下,因为在光盘目录中不能进行拆包
(8) cd /mnt/ ##切换到/mnt/
(9) ls ##查看/mnt/下拷贝过来的文件包
(10) rpm2cpio kernel-3.10.0-123.e17.x86_64.rpm cpio -id ##拆包
(11) ls ##查看包中的文件
(12) pwd ##查看当前路径
(13) cd boot/ ##切换到包中的boot/目录下
(14) ls -l ##包中存在内核文件
(15) cp vmlinuz-3.10.0-123.e17.x86_64 /boot/ ##将内核文件拷贝到系统的/boot/目录下
(16) exit>>>exit>>>force off the machine ##二次退出,并关机
4.2.5修改默认启动项为磁盘启动 Boot Options>>>VirtIO>>>应用 ## ##修改默认启动项为磁盘启动 ,此时便能正常启动

注意:方法一速度慢但是能针对在未知所缺文件时使用;方法二速度快,已知所缺文件。

Result4.1实验准备

在这里插入图片描述
Result4.2系统恢复

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

3.5 镜像文件丢失

功能 代码 注释
5.1实验准备
(1) cd /boot/ ##打开启动目录
(2) rm -rf initramfs-3.10.0-123.e17.x86_64.img ##删除引导镜像
(3) init 6 ## 重启
5.2系统恢复
5.2.1##添加硬盘设备 virt-manager>>>add hardware>>> Selete od create custom storage(rhel7.0)>>>CDROM device>>>finish
5.2.2修改默认启动项为光盘启动 Boot Options>>>IDECDROM>>>应用 ##
5.2.3恢复选项的选择 (1) 进入启动页面,选择Troubleshooting >>>Rescue a red hat Enterprise Linux system
(2) continue>>>okay>>>okay 然后进入恢复界面
5.2.4恢复引导记录 (1) chroot /mnt/sysimage ##进入镜像目录
(2.1) 方法1 mkinitrd /boot/initramfs-`uname −r`.img `uname -r` ①生成系统初始化镜像;②initramfs是/boot/grub2/grub.cfg 文件已经写好的,不能更改;③uname -r ##系统当前版本;`command` 表示里面command的结果
(2.2) 方法2 mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) 生成系统初始化镜像
(3) exit>>>exit>>>force off the machine ##二次退出,并关机
5.2.5修改默认启动项为磁盘启动 Boot Options>>>VirtIO>>>应用 ## ##修改默认启动项为磁盘启动 ,此时便能正常启动

Result 5.1实验准备
在这里插入图片描述

Result 5.2系统恢复
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.6 系统启动级别

功能 代码 注释
6.1实验准备
(1) systemctl set-default poweroff.target ##开机自启动关机模式
(2) init 6 ## 重启
(init 0)runlever0.target poweroff.target ##(关机)
runlever1.target rescue.target ##(挽救)
runlever2.target multi-user.target ##(多用户)
(init 3)runlever3.target multi-user.target ##
runlever4.target multi-user.target ##
(init 5)runlever5.target graphical.target ##(图形模式)
(init 6)runlever5.target reboot.target ##(重启)
systemctl set-default +启动级别修改 ##修改级别
vim /etc/systemd/system/default.target ##修改级别
6.2系统恢复
(1) e ##进入安装页面点击e
(2) ro xxxxxxxx…UTF-8 修改为 rw rd.break ##
(3) chroot /sysroot/ ## 切换到引导超级用户目录
(4) systemctl set-default graphical.target ##(图形模式)
(5) exit>>>exit>>>force off the machine ##二次退出,并关机
(6) Boot Options>>>VirtIO>>>应用 ## ##修改默认启动项为磁盘启动 ,此时便能正常启动

Result6.1实验准备
在这里插入图片描述

Result6.2:系统恢复
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3.7 系统入口设置

注意:重装系统,双系统进入时的入口的选择;

功能 代码 注释
(1) vim /etc/grub2.cfg ##打开配置文件,寻找关键字menu
(2)vim menuentry ‘Windows 10’{ >>> set root=‘hd0,msdos1’>>>chainloader +1>>>} ##标题写法,menuntry为固定格式;‘入口名称’,单引号间的内容为入口名称;大括号内的内容为参数
(3) Boot Options>>>VirtIO>>>应用 ## ##修改默认启动项为磁盘启动 ,此时便能正常启动

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

发布了33 篇原创文章 · 获赞 8 · 访问量 2280

猜你喜欢

转载自blog.csdn.net/Pierce110110/article/details/103119979