当前位置: 首页 > news >正文

【Linux】系统引导修复

目录

开机引导过程

一.通电

二.BIOS环境检测

三.磁盘引导阶段

四.文件引导阶段

 自动引导配置文件丢失修复

内核参数文件丢失修复

内核镜像文件丢失修复

内核初始化文件丢失修复

boot目录误删丢失修复


开机引导过程

磁盘引导阶段
/boot/grub2/grub.cfg     #读取自动引导配置文件
内核文件引导阶段
/boot/loader/entries/*     #读取内核参数文件
/boot/内核镜像 
#读取这个文件启动内核,为了只读挂载根分区
/etc/fstab    #读取哪些磁盘要挂载
/etc/sysconfig/selinux    #读取selinux配置文件
#修改时钟
/boot/内核初始化镜像 #为了系统初始化,把根读写挂载
/etc/systemd/system/各种服务开机启动
/etc/rc.d/rc.local    #读取开机自运行脚本
最后启动tty虚拟控制平台,有图形就启动图形没有就无图形登录

一.通电

启动所有硬件并为进入系统做准备

问题处理:

检查所有电源设备, 确定供电设备正常,所有线缆是否插紧,检查线缆是否有损坏

二.BIOS环境检测

检测硬件是否正常

检测硬件是否插紧

三.磁盘引导阶段

#模拟错误
dd if=/dev/zero of=/dev/sda bs=446 count=1

这是一个使用MBR分区的磁盘前446字节为主引导记录,负责记录开机启动项寻找/boot/;生成一个446M的大文件去覆盖/dev/nvme0n1的最前面的446个字节,系统在重启后就寻找不到开机启动项就认为没有装操作系统

chroot /mnt/sysroot/	#执行后从挽救模式的环境切换回系统环境
grub2-install  /dev/nvme0n1	#在设备上重新安装 GRUB 引导程序,从而实现系统的修复,因为原本的grub引导程序被大文件覆盖了
exit
exit
#输入两次exit后就会重启

四.文件引导阶段

在文件引导阶段,系统会读取/boot/grub2/grub.cfg (自动引导文件),在此文件中指定系统系统过程中读 取什么文件,加载什么参数

如何修改grub参数(以修改时间为例)

[root@servera default]# vim /etc/default/grub 	#生成grub.cfg时使用的默认参数
GRUB_TIMEOUT=10 	#设定grub启动时等待时间为10秒
[root@servera default]# grub2-mkconfig > /boot/grub2/grub.cfg 	#生成新grub.cfg

 自动引导配置文件丢失修复

#误删了自动引导文件
[root@localhost boot]# rm -rf /boot/grub2/grub.cfg 

误删重启后会出现以下错误

解决问题

  • 确定/boot分区在哪个设备分区

  • 确定/分区位置

确定好boot分区与/分区后进行手动引导

手动引导要指定boot分区与/分区还有运行初始化文件

手动指定完成后输入boot启动

tips:以上步骤只能完成本次引导,如果没有生成自动引导模板,系统重启后仍然需要手动引导

#生成自动引导模板
[root@localhost ~]# grub2-mkconfig > /boot/grub2/grub.cfg
Generating grub configuration file ...
Adding boot menu entry for UEFI Firmware Settings ...
done

 之后重启就能自动引导了

内核参数文件丢失修复

#误删了内核参数文件
[root@servera entries]# rm -fr /boot/loader/entries/*

重启后会报错,也是不能自动引导  

#首先手动引导系统初始化,进入系统
[root@servera ~]# kernel-install add $(uname -r) /boot/vmlinuz-5.14.0-
427.13.1.el9_4.x86_64	#从内核镜像文件中火墙安装内核版本相关的参数文件
#恢复后文件出现
[root@servera ~]# ls /boot/loader/entries/
a6fd00acebb0467d805e4e43c2f6b54a-0-rescue.conf
a6fd00acebb0467d805e4e43c2f6b54a-5.14.0-427.13.1.el9_4.x86_64.conf

内核镜像文件丢失修复

#误删了内核镜像文件
[root@localhost boot]# rm -rf vmlinuz-5.14.0-427.13.1.el9_4.x86_64 

 并且重启后,使用硬盘进入系统,会显示错误

 进入bios界面的boos选项把光驱启动优先级调到第一,然后按<F10>保存运行

进入故障排错并进入挽救模式

 

等待进入挽救模式,输入1进行continue,按下enter显示命令行  

#将挂载在挽救模式下的根目录,挂载回系统根目录
chroot /mnt/sysroot

mount /dev/cdrom /media 	#挂载光盘到/media目录
#进入media目录,把有关kernel的软件包拷贝到/mnt进行解包
cd /media	
cp kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm /mnt/
#进入/mnt,对软件包进行解包,解包后进入解包后的lib/modeles里面的vmlinuz是缺失的内核镜像文件,要改名拷贝到/boot/下,$(uname -r)是引用内核版本
cd /mnt
rpm2cpio kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm | cpio -id
cd lib/modules/5.14.0-427.13.1.el9_4.x86_64/
cp vmlinuz /boot/vmlinuz-$(uname -r)

最后输入两次exit重新启动,并把光盘引导改回硬盘引导  

内核初始化文件丢失修复

[root@localhost boot]# rm -rf initramfs-5.14.0-427.13.1.el9_4.x86_64.img 

重启后报错,进入bios改为通过光盘引导进入挽救模式  

#进入挽救模式后更改跟根目录到系统模式,挂载光盘到目录,进入挂载的目录安装内核软件包,安装完成/boot/就会显示系统初始化文件
rpm -ivh kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm --force

 输入两次exit,重启并把光盘引导改回硬盘引导即可

boot目录误删丢失修复

rm -rf /boot/*

 重启使用光盘引导进入挽救模式

chroot /mnt/sysroot		#将挽救模式切换回系统模式
grub2-install  /dev/nvme0n1	#在启动设备上重新安装 GRUB 引导程序,从而实现系统的修复
mount /dev/sr0 /media/	#挂载光驱为了提取里面的软件资源下载有关内核的软件包
rpm -ivh kernel-core-5.14.0-427.13.1.el9_4.x86_64.rpm --force	#下载有关内核的相关软件包
grub2-mkconfig > /boot/grub2/grub.cfg	#生成grub自动引导配置文件

 

 完成后输入两次exit重启使用硬盘驱动,即可运行

http://www.xdnf.cn/news/1104265.html

相关文章:

  • [精选]如何解决pip安装报错ModuleNotFoundError: No module named ‘subprocess’问题
  • C++设计秘籍:为什么所有参数都需类型转换时,非成员函数才是王道?
  • V少JS基础班之第七弹
  • 从一到无穷大 #47:浅谈对象存储加速
  • 自动驾驶线控系统与动力电池系统
  • 基于MuJoCo的宇树科技G1机器人基础动作仿真研究
  • BLE低功耗设计:从广播模式到连接参数优化的全链路分析与真题解析
  • 2025 年第十五届 APMCM 亚太地区大学生数学建模竞赛-A题 农业灌溉系统优化
  • DOM编程实例(不重要,可忽略)
  • Telegraf vs. Logstash:实时数据处理架构中的关键组件对比
  • 【数据结构与算法】206.反转链表(LeetCode)
  • 麦迪逊悬架cad【14张】+三维图+设计说明书
  • 基于生产者消费者模型的线程池【Linux操作系统】
  • 《PyQtGraph:Python绘图领域的“超级引擎”》
  • 加工进化论:SPL 一键加速日志转指标
  • Genus:设计信息结构以及导航方式(路径种类)
  • php use 命名空间与 spl_autoload_register的关系
  • python的卷烟营销数据统计分析系统
  • 数据治理到底是什么?搞清这四件事,你就彻底明白了!
  • 通过ETL工具,高效完成达梦数据库数据同步至数仓Oracle的具体实现
  • 鸿蒙app 开发中的Record<string,string>的用法和含义
  • 博客系统开发全流程解析(前端+后端+数据库)与 AI 协作初体验
  • 类之间的纵向关系——继承
  • RabbitMQ 之消息积压
  • 【氮化镓】不同偏压应力下电荷俘获效应导致的P-GaN HEMT阈值电压不稳定性
  • 2025年7月11日学习笔记一周归纳——模式识别与机器学习
  • C++STL-list
  • strchr 与 strstr 函数详解
  • Go语言中的组合式接口设计模式
  • UNet改进(21):门控注意力机制在UNet中的应用与优化