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

服务器引导异常,Grub报错: error: ../../grub-core/fs/fshelp.c:258:file xxxx.img not found.

服务器引导异常,Grub报错: error: ../../grub-core/fs/fshelp.c:258:file xxxx.img not found.

  • 1. 故障现象
  • 2. 解决思路
  • 3. 故障分析
  • 4. 案件回溯
  • 5. 解决问题

1. 故障现象

有一台服务器业务报无法连接.
尝试用Ping命令发现无法ping通.
通过控制台查看发现有以下报错:

error: ../../grub-core/fs/fshelp.c:258:file xxxx.img not found.

在这里插入图片描述

2. 解决思路

其实到这里问题应该已经可以解决了.
无非就是因某些原因img文件被删除.
现在要做的无非2个事情

  1. 进入系统
  2. 确认除了这个img之外还有哪些文件被删了.
  3. 将被删除的那些文件从别处复制过来.

3. 故障分析

幸运的是,这个服务器有多个kernel.那么就尝试从其他kernel进入.
(如果是唯一的kernel那么也可以使用救援盘进入,但这个是一台云主机,可能会需要通过另外个云主机挂载这个启动镜像,再复制文件.然后根据快照再恢复会比较麻烦,但不复杂)

运行history查看是否是人为的删除,及分析为什么要做这个操作.
这次运气又站在我们这边.
可以明显的看到是人为删除了2个img文件.
为什么说是运气好:

  1. 非病毒或入侵造成的.

  2. 删的是文件而不是/*

  3. 非恶意,根据他的上下文分析,是由于安装配置kdump出现了某些错误,尝试解决那些错误的时候可能搜了某些错误的文档而去删除那2个文件.
    在这里插入图片描述
    在这里插入图片描述

  4. 看下他kdump报了哪些错误

dracut module 'network-legacy' cannot be found or installed

在这里插入图片描述

4. 案件回溯

看到这里基本整个事情的来龙去脉已经分析出来了.
我们来还原一下现场:

  1. 第一个错误也是最根本的错误就是操作人员修改完/etc/default/grub后,在没有确认服务器是否是efi引导的情况下执行了grub2-mkconfig.误以为已经将crashkernel=256M参数正确修改了.其实文件生成,但服务器并不会从该文件进行引导.
  2. 重启后,kdump发现crashkernel没有生效,于是出现了以下的报错.
dracut module 'network-legacy' cannot be found or installed.
Failed to start Crash recovery kernel arming.
dracut module 'rngd' will not be installed, because command 'rngd' could not be found!
dracut module 'network-legacy' will not be installed, because command 'dhclient' could not be found!
dracut module 'ifcfg' will not be installed, because it's in the list to be omitted!
dracut module 'plymouth' will not be installed, because it's in the list to be omitted!
dracut module 'btrfs' will not be installed, because command 'btrfs' could not be found!
racut module 'dmraid' will not be installed, because command 'dmraid' could not be found!
dracut module 'cifs' will not be installed, because command 'mount.cifs' could not be found!
dracut module 'resume' will not be installed, because it's in the list to be omitted!
dracut module 'earlykdump' will not be installed, because it's in the list to be omitted!
  1. 当发现kdump出现大量dracut模块的报错时,犯了第二个错误.开始请求ai的帮助或者通过网络搜索文档尝试解决此问题.于是history里出现了大量apt-get install, yum install明显是已经方寸大乱开始不经过大脑的复制粘贴命令.
  2. 当发现这些命令都无济于事的时候第三个错误出现了,rm -f kernel.img
  3. 最后感觉任然无济于事时第四个错误出现了,reboot.
    此时由于引导的img被删除,服务器就无非完成引导程序了.

5. 解决问题

  1. 从另外一台服务器上将删除的2个文件给恢复过来.
  2. 执行以下命令,生效正确的grub引导
grub2-mkconfig -o /boot/grub2/grub.cfg
  1. 重启服务器服务器
  2. 确认crashkernel参数已经在/boot/grub2/grub.cfg中
    在这里插入图片描述
  3. 查看kdump.service的状态
    在这里插入图片描述
    至此,整个故障已经解决.
    当出现意外时一定不要乱了方寸,虽然现在网络搜索和AI都很方便,但由于环境或者其他原因不要盲目的复制粘贴命令.很有可能会把简单的问题越搞越大.

http://www.kler.cn/a/502676.html

相关文章:

  • type 属性的用途和实现方式(图标,表单,数据可视化,自定义组件)
  • 统计有序矩阵中的负数
  • 【深度学习】通俗理解偏差(Bias)与方差(Variance)
  • 深入学习 Python 爬虫:从基础到实战
  • Qt WORD/PDF(五)使用Json一键填充Word表格
  • C++ ——— 内部类
  • 行业案例:高德服务单元化方案和架构实践
  • 【开源免费】基于SpringBoot+Vue.JS企业级工位管理系统(JAVA毕业设计)
  • C++ 的 pair 和 tuple
  • 【江协STM32】11-1 SPI通信协议
  • UE5 打包项目
  • 【源码解析】Java NIO 包中的 Buffer
  • 新型物联网智能断路器功能参数介绍
  • Spring Boot3 配合ProxySQL实现对 MySQL 主从同步的读写分离和负载均衡
  • 【2024年华为OD机试】 (C卷,100分)- 工号不够用了怎么办?(Java JS PythonC/C++)
  • 【机器学习】数学知识:指数函数(exp)
  • 大语言模型的分层架构:高效建模的全新探索
  • Vue.js组件开发,AI时代的前端新玩法
  • LabVIEW自动扫描与图像清晰度检测
  • kalilinux - msf和永恒之蓝漏洞
  • C#学习笔记 --- 简单应用
  • B树——C++
  • 6. NLP自然语言处理(Natural Language Processing)
  • 【HM-React】07. 登录模块
  • 算法日记1:洛谷p2678跳石头(二分答案)
  • 使用R包Corrplot绘制相关性图