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

kdump生成转储文件调试内核崩溃、死机

目录

  • 操作流程
    • 0. 确认内核配置
    • 1. 安装kdump相关工具
    • 2. 编辑/etc/default/grub,配置预留kdump内存,
    • 3. 更新GRUB并重启
    • 4. 设置转储路径
    • 5. 验证kdump服务状态
    • 6. 查看kdump预留内存空间大小
    • 7. 最后检查kdump配置
    • 8. 查看崩溃日志
    • 常见问题

最近在写内核模块,经常安装模块之后突然死机。用的又是虚拟机,直接弹个窗口说cpu已被禁用,什么都动不了,重启之后呢又看不到任何的崩溃信息,也不知道是什么原因导致的崩溃,反正就是一头雾水。问ai,说用kdump咱也就是跟着ai走,遇到啥坑咱给写出来。

操作流程

我使用的是Ubuntu20 Linux5.15内核版本

0. 确认内核配置

grep -E "CONFIG_KEXEC=|CONFIG_CRASH_DUMP=" /boot/config-$(uname -r)

确保 CONFIG_KEXEC=yCONFIG_CRASH_DUMP=y
在这里插入图片描述
否则需要更换为已启用CONFIG_KEXEC=y的内核

sudo apt install linux-image-$(uname -r)-dbgsym  # 安装调试符号内核

1. 安装kdump相关工具

sudo apt install kdump-tools crash

2. 编辑/etc/default/grub,配置预留kdump内存,

sudo nano /etc/default/grub

GRUB_CMDLINE_LINUX中添加:

crashkernel=128M  # 预留128MB内存给捕获内核也可以写成
crashkernel=512M-:256M # 总内存大于512时预留256最后文件中显示如下:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash crashkernel=256M"

我这里直接留了1G,因为我怕重启卡住(这是一个坑)所以推荐大家预留内存给大点
在这里插入图片描述

3. 更新GRUB并重启

sudo update-grub && sudo reboot

4. 设置转储路径

编辑/etc/kdump.conf

sudo nano /etc/kdump.conf在文件中添加
path /var/crash

之后崩溃重启的文件将存储在/var/crash
在这里插入图片描述

5. 验证kdump服务状态

注意:Ubuntu中Kdump的服务名为 kdump-tools.service,而非 kdump.service:

sudo systemctl status kdump-tools.service

应该显示active,若状态显示 active (exited) 或 active (waiting) 表示服务已就绪。
在这里插入图片描述

6. 查看kdump预留内存空间大小

cat /proc/cmdline | grep crashkernel  # 应显示预留的内存大小

在这里插入图片描述

7. 最后检查kdump配置

kdump-config show  

确认current stateready to kdump
在这里插入图片描述

8. 查看崩溃日志

崩溃内容会生成在下图蓝色的时间文件夹中,有dmesg和dump文件,通过查看dmesg可以较快找到崩溃原因。
在这里插入图片描述

常见问题

崩溃重启卡死在转圈界面不动怎么办?
Q: 可能是预留的内存不够 (看步骤2), 如果确认内存足够,崩溃后经常会在重启界面暂停一会,请耐心等待。

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

相关文章:

  • Java 栈和队列
  • linux 系统依赖包查询命令汇总
  • IPM31主板E3300usb键盘鼠标安装成功Sata接口硬盘IDE模式server2003-nt-5.2.3790
  • python 的包管理工具pip poetry、conda 和 pipenv 使用和安装
  • C 语言部分操作符详解 -- 进制转换,原码、反码、补码,位操作符,逗号表达式,操作符的优先级和结合性,整型提升,算术转换
  • 2025年小目标检测分享:从无人机视角到微观缺陷的创新模型
  • 【PTA数据结构 | C语言版】二叉树前序序列化
  • Python初学者笔记第十二期 -- (集合与字典编程练习题)
  • Vim多列操作指南
  • TCP可靠性设计的核心机制与底层逻辑
  • next.js 登录认证:使用 github 账号授权登录。
  • uni-app+vue3 来说一说前端遇到跨域的解决方案
  • 全连接神经网络
  • 10分钟搞定!Chatbox+本地知识库=你的私人语音导师:企业级全栈实现指南
  • 自动微分模块
  • JAR 包冲突排雷指南:原理、现象与 Maven 一站式解决
  • 机载激光雷达目标识别:从点云到凝视成像的算法全景
  • Datawhale AI夏令营——用户新增预测挑战赛
  • xss-lab靶场通关
  • 苦练Python第18天:Python异常处理锦囊
  • 从 JSON 到 Python 对象:一次通透的序列化与反序列化之旅
  • 云原生技术与应用-Containerd容器技术详解
  • Android系统的问题分析笔记 - Android上的调试方式 bugreport
  • RAG索引流程中的文档解析:工业级实践方案与最佳实践
  • iOS —— 网易云仿写
  • 大数据系列之:通过trino查询hive表
  • 直播推流技术底层逻辑详解与私有化实现方案-以rmtp rtc hls为例-优雅草卓伊凡
  • 在Linux下git的使用
  • 量子计算新突破!阿里“太章3.0”实现512量子比特模拟(2025中国量子算力巅峰)
  • MYOJ_8512:CSP初赛题单1:计算机常识