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

kdump调试分析(适用于麒麟,ubuntu等OS)

1. kdump基本原理

1.1 内核崩溃处理机制

当 Linux 系统内核发生崩溃时,通常会触发 panic,系统停止正常运行。Kdump 在这种情况下:

  1. 使用一个备用的内核(称为 crash kernel)来启动最小化的环境。
  2. 从崩溃的主内核中复制内存内容(转储文件)。
  3. 将转储文件保存到预定义的存储位置(如本地磁盘、网络服务器等)。

1.2 Crash Kernel 的作用

Kdump 的核心是依赖 Crash Kernel,这是一段预留的内存和独立的内核,用于在主内核崩溃后接管系统。

  1. 主内核崩溃后,控制权切换到 Crash Kernel。
  2. Crash Kernel 通过访问主内核的内存(物理地址)生成转储文件。

2 Kdump 的工作流程

2.1 内存预留

在系统启动时,通过内核参数(crashkernel)为 Crash Kernel 预留一部分内存(通常是 128M 或更多)。

编辑 GRUB 配置文件,添加 crashkernel 参数预留内存:

GRUB_CMDLINE_LINUX="crashkernel=256M"

2.2 Crash Kernel 加载

系统启动时,Crash Kernel 和主内核一起加载到内存中,但 Crash Kernel处于非活动状态。

2.3 触发崩溃

  • 主内核发生崩溃(如 panic)
  • 或人为触发崩溃(通过 echo c > /proc/sysrq-trigger)

2.4 Crash Kernel 启动

系统重启到 Crash Kernel 环境。
Crash Kernel 通过访问崩溃的主内核内存区域,捕获内存内容并保存。

2.5 保存转储文件

Crash Kernel 将捕获的内存转储文件(vmcore)保存到本地磁盘、NFS、或其他预定义路径。

3. Kdump 的配置

3.1 内核支持

Kdump 的关键组件是 kexec,它允许系统在内核崩溃时直接加载并启动一个新的内核(Crash Kernel)。因此,标准内核必须启用 kexec 功能。
检查是否启用了 kexec
可以通过以下命令检查是否启用了 kexec:

$ grep CONFIG_KEXEC /boot/config-$(uname -r)CONFIG_KEXEC=y

如果没有启用,您需要重新编译内核并启用该功能,或者安装一个启用了该功能的预编译内核。
检查是否支持 crashkernel
通过检查内核配置文件(如 /boot/config-$(uname -r))确认是否启用支持:

$ grep CONFIG_CRASH_KEXEC /boot/config-$(uname -r)CONFIG_CRASH_KEXEC=y
## 或者
CONFIG_CRASH_DUMP=y
CONFIG_CRASH_CORE
http://www.lryc.cn/news/494326.html

相关文章:

  • houdini肌肉刷pin点的方法
  • JMeter 并发策略-针对准点秒杀场景的压测实现
  • 龙迅#LT6912适用于HDMI2.0转HDMI+LVDS/MIPI,分辨率高达4K60HZ,支持音频和HDCP2.2
  • RBF神经网络预测结合NSGAII多目标优化
  • 如何看linux系统内核是aarch64 ,还是64-bit
  • 如何通过 ADB 安装 xapk
  • QT:多ui界面显示
  • redis cluster 3主3从部署方案
  • 前端学习笔记之文件下载(1.0)
  • 从技术视角看AI在Facebook全球化中的作用
  • Web 表单开发全解析:从基础到高级掌握 HTML 表单设计
  • Milvus 2.5:全文检索上线,标量过滤提速,易用性再突破!
  • 【webrtc】 mediasoup中m77的IntervalBudget及其在AlrDetector的应用
  • AI数据分析工具(二)
  • 小米路由mini刷PDCN教程补充
  • [巅峰极客 2021]签到
  • 详解SpringCloud集成Camunda7.19实现工作流审批(二)
  • Matlab学习笔记
  • Hexo博客在多个设备同步
  • 淘宝Vision Pro:革新购物体验的沉浸式未来
  • 公链开发中的技术实现路径:构建高效、安全的去中心化网络
  • mac上的建议xftp 工具
  • Android 使用Charles抓包显示Unknown
  • C++设计模式:桥接模式(Bridge)
  • spark3.x之后时间格式数据偶发报错org.apache.spark.SparkUpgradeException
  • spring boot框架漏洞复现
  • 下载安装Android Studio
  • 三、计算机视觉_08YOLO目标检测
  • uniapp关闭sourceMap的生成,提高编译、生产打包速度
  • uniapp首页样式,实现菜单导航结构