Linux 启动流程分析以及系统恢复处理

一 、启动流程一览

  1. 加载BIOS的硬件信息与进行自我检测(自检),并根据设置取得第一个可启动的设备;
  2. 读取并执行第一个启动设备内MBR的启动引导程序(gurb2、spfdisk等程序);
  3. 根据启动引导程序的设置加载Kernel (内核),Kernel会开启检测硬件与加载驱动程序 ——完成后,主机硬件已经准备就绪;
  4. 在硬件驱动成功后,Kernel会主动调用systemd程序 ——准备软件执行环境,并以default.target流程启动:

systemd 执行 sysinit.target 初始化系统及 basic.target 准备操作系统;

systemd 启动 mulit-user.target 下的本机与服务器服务;
systemd 执行 mulit-user.target 下的 /ect/rc.d/rc.local 文件;
systemd 执行 mulit-user.target 下的 getty.target 及登录服务;
systemd 执行 graphical 需要的服务;

BIOS (Basic Input Output System) ,启动自我测试与MBR

MBR (Master Boot Record ,主引导记录),代表该磁盘的最前面可安装 boot loader 的那个区块

boot loader , 启动引导程序

  • BIOS 会指定启动的设备好让我们可以读取磁盘中的操作系统内核文件时,我们必须要以一个启动引导程序(boot
    loader)来处理内核文件加载(load)的问题;
  • boot loader 程序安装在,启动设备的第一个扇区(sector)中,也就是 MBR;
  • boot loader 加载 kernel 与 initramfs (init ram
    filesystem,它是一个cpio格式的内存文件系统打包),在内存中让 initramfs 解压缩成为
    根目录,内核就能借此加载适当驱动程序,最终释放虚拟文件系统,并挂载实际的根目录文件系统,从而开始后续正常启动流程。

fdisk -l 命令 查看启动设备
在这里插入图片描述

二 、 启动恢复

挽救模式的进入

  1. 主机设置-开机启动时连接光驱-加载系统镜像文件
  2. 打开电源时进入固件 —— BIOS界面-CD device 启动设备 / 重新启动客户机 ——【Esc】+ 光标选定 -BIOS
    -CD device 启动设备

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

在这里插入图片描述

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

1 ) 磁盘引导

问题模拟方式 : 当MBR内的数据丢失,系统会因为找不到启动分区而停止启动

主机系统磁盘/dev/nvme0n1
dd if=/dev/zero of=/dev/nvme0n1 bs=446 count=1 # 清空系统/dev/nvme0n上的mbr数据
在这里插入图片描述

恢复方式:

用光盘进入系统挽救模式在这里插入图片描述
在这里插入图片描述

chroot /mnt/sysimage grub2-install /dev/xxxxxx # 重新安装grub2到系统磁盘上
在这里插入图片描述
在这里插入图片描述

2 ) grub2启动引导程序
/boot/grub2/grub.cfg # 指定/boot位置

/boot/loader/entries/xxxxxxxxx.conf # 指定系统启动时加载文件名称
在这里插入图片描述

问题模拟方式 —— grub2相关系统启动加载文件缺失

  • rm -fr /boot/loader/entries/xxxxxxxxx.conf

恢复方式 1 (未重启时):

  • kernel-install add ( u n a m e − r ) / l i b / m o d u l e s / (uname -r) /lib/modules/ (unamer)/lib/modules/(uname -r)/vmlinuz
    内核版本号 内核镜像
    在这里插入图片描述
    在这里插入图片描述

恢复方式 2 (重启时):

  • set root=‘hd0,msdos1’

  • linux16 /vmlinuz-3.10.0-957.el7.x86_64 ro
    root=/dev/nvme0n1p2

  • initrd16 /initramfs-4.18.0-80.el8.x86_64.img

  • boot

3 ) 内核文件
/boot/vmlinuz-$(uname -r) # 内核文件

uname -r # 查看内核版本号 ,
输出结果:4.18.0-80.el8.x86_64

问题模拟方式 :/boot/vmlinuz 内核文件缺失

  • rm -fr /boot/vmlinuz-$(uname -r)

在这里插入图片描述
在这里插入图片描述
系统起不来了

恢复方式 1 (未重启时):

  • 拆解内核文安装包并复制内核压缩镜像到/boot

恢复方式 2 (重启时):

挽救模式
chroot /mnt/sysimage
mount /dev/cdrom /media
cd /media/BaseOS/Packages
cp kernel-core-4.18.0-80.el8.x86_64.rpm /mnt/
cd /mnt
rpm2cpio kernel-core-4.18.0-80.el8.x86_64.rpm | cpio -id
cp /mnt/lib/modules/4.18.0-80.el8.x86_64/vmlinuz /boot/vmlinuz-$(uname -r)
exit
exit
在这里插入图片描述在这里插入图片描述

4 )虚拟文件系统文件

/boot/initramfs-4.18.0-80.el8.x86_64.img

问题模拟方式: 虚拟文件系统文件缺失

  • rm -fr /boot/initramfs-xxxxx.img
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

恢复方式 1 (未重启时):

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

恢复方式 2 (重启时):

挽救模式

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

在这里插入图片描述

5 ) 系统启动级别

  • 0 关机

  • 1 单用户

  • 2 无图形网络模式

  • 3 无图形网络模式

  • 4 无图形网络模式

  • 5 有图形网络模式

  • 6 重启

问题模拟方式 : 无法正常开机启动

  • systemctl set-default reboot.target 设置开机重启,进入反复重启死循环
    在这里插入图片描述
    在这里插入图片描述

恢复方式 (重启时):

  • 开机选择界面按< e >进入到引导文件编辑模式
    在这里插入图片描述

  • 内核加载选项最后加入启动级别5
    在这里插入图片描述

  • < ctrl > + < x > 保存设置 ,启动系统

  • systemctl set-default graphical.target 进入系统 ,更改启动设置
    在这里插入图片描述

6 ) 超级用户密码遗忘

  • 恢复方式 (重启时):

  • 开机选择界面按<e>进入到引导文件编辑模式

  • 在内核加载选项最后删除到ro选项
    在这里插入图片描述

  • 更改编辑 ro---->rw 内容(从只读挂载根设备变为读写挂载)

  • 加入rd.break参数,终止系统启动在这里插入图片描述

  • < ctrl > + < x > # 保存设置 ,启动系统
    在这里插入图片描述

  • chroot /sysroot
    在这里插入图片描述

  • echo nn| passwd --stdin root # 重置root用户密码

  • touch /.autorelabel # 当 /.autorelabel文件存在

selinux会重新初始化
在这里插入图片描述

  • exit
  • exit
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值