Linux内核调试技术之kdump配置与使用

news2024/11/24 12:30:49

概述

kdump是Linux内核发生崩溃时转储内存的一种机制,当内核发生错误时,kdump会将当前内核使用的内存导出为镜像文件(通常为vmcore)保存到硬盘上,之后可以使用crash等工具对内核错误原因进行分析。

kdump基本原理

kdump工作时有两个内核,一个是生产内核,即系统正常运行时使用的内核;另一个称为捕获内核。当生产内核在运行过程中出现crash的时候,kdump会切换到捕获内核运行,此时捕获内核会捕获生产内核crash时产生的crash dump信息并保存到磁盘上,用于后续分析。

kdump工作流程

kdump的工作流程如下图:
在这里插入图片描述

系统如果配置了kdump服务,则在启动的时候生产内核会为捕获内核预留一部分内存。系统起来后,kdump服务程序会通过kexec系统调用将initframs和捕获内核加载进预留内存中。当系统崩溃时,kdump通过kexec自动启动进入到捕获内核中运行。捕获内核将发生crash的内核的内存镜像保存到/proc/vmcore下,然后使用用户态工具makedumpfile将镜像拷贝到磁盘上,完成后重启系统。

kdump配置与使用

本文说明的配置操作基于Centos-Stream-9,使用内核版本为5.14.0-160.el9.aarch64

配置内核启动参数

在系统启动时,需要为内核传递crashkernel=参数,来告知系统如何为捕获内核预留内存。crashkernel参数常用的两种配置形式如下:

  • crashkernel=size[@offset] :offset指定内存起始地址,size指定预留内存大小。举例说明crashkernel=256M@16M,则表示系统为捕获内核预留256M的内存空间,起始地址为16M;
  • crashkernel=range1:size1[,range2:size2,…][@offset]:这里range=start-[end]与系统内存大小有关。举例说明crashkernel=512M-2G:64M,2G-:128M,则表示:
    1. 若内存小于512M,则不预留内存;
    2. 若内存介于512M和2G之间,预留64M内存;
    3. 内存2G以上,预留128M内存。

修改/etc/default/grub文件中GRUB_CMDLINE_LINUX选项:
在这里插入图片描述
然后,使用grub2-mkconfig工具重新生成grub启动选项:
在这里插入图片描述
重启等待系统起来后,通过cat /proc/cmdline确认内核选项是否配置成功:
在这里插入图片描述

配置kdump服务

kdump在使用时,支持对一些配置参数进行调整,配置文件路径为/etc/kdump.conf。这里对用户比较关心的两个配置参数进行一下说明:

  • 保存路径参数path <path>:可以指定vmcore文件保存的路径,默认使用路径/var/crash
  • 导出内存级别参数:可以指定vmcore包含的内存页面,以控制vmcore的大小,其级别从0-31。

通常情况下,使用默认的配置参数就可以了。最后,配置启动kdump服务:

systemctl enable kdump // 配置kdump服务开机自启动
systemctl start kdump // 启动kdump服务

测试配置是否生效

通过执行下面的命令,可以主动触发系统panic复位:

echo c > /proc/sysrq-trigger

等待系统重新启动后,可以在/var/crash目录下查看是否成功生成了vmcore文件,之后就可以使用crash工具对vmcore进行分析了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/101320.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

R语言中回归和分类模型选择的性能指标

有多种性能指标来描述机器学习模型的质量。但是&#xff0c;问题是&#xff0c;对于问题正确的方法是什么&#xff1f;在这里&#xff0c;我讨论了选择回归模型和分类模型时最重要的性能指标。请注意&#xff0c;此处介绍的性能指标不应用于特征选择&#xff0c;因为它们没有考…

如何保证分布式事务?

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【一心同学】&#xff0c;一位上进心十足的【Java领域博主】&#xff01;&#x1f61c;&#x1f61c;&#x1f61c; ✨【一心同学】的写作风格&#x…

Docker: 容器与镜像

文章目录1、docker 环境搭建1.1、docker 安装1.1.1、centos 安装1.1.2、ubuntu 安装1.2、添加到 docker 组1.3、docker 镜像源2、docker 概念2.1、docker 背景2.2、docker 架构2.3、docker 与 vm3、docker 容器隔离4、docker 命令4.1、环境信息4.2、日志信息4.3、容器命令4.4、…

Mac最先进的API工具-RapidAPI for Mac

一、前言 当使用 Mac 进行接口测试的时候&#xff0c;一般都会想到接口测试工具 Postman、Jmeter。 Postman 以其页面友好&#xff0c;功能简单&#xff0c;可以快速上手进行接口测试。而 Jmeter 除了测接口外&#xff0c;还可以进行接口自动化测试、性能测试等。 本篇将介绍…

完整企业官网源码,前端基于Vue+ElementUI,后台基于基于core3 webapi,含数据库文件,含详情安装部署文档

完整企业官网源码&#xff0c;前端基于VueElementUI&#xff0c;后台基于基于core3 webapi&#xff0c;含数据库文件&#xff0c;含详情安装部署文档 完整代码下载地址&#xff1a;完整企业官网源码 某工程管理有限公司企业官网 前端 新版本改进 整体重构&#xff0c;结构…

利用 Flow Simulation 快速和经济高效地解决传热难题

探寻传热问题的有效解决方案已成为新产品研发过程中一个愈来愈重要的部分。几乎一切事物都会经历某种程度的发热或冷却&#xff0c;而且对于许多产品来说&#xff0c;如现代电子设备、医疗设备和空气调节 (HVAC) 系统&#xff0c;热管理已成为避免过度发热和实现功能正常运行的…

Redis实战——附近商家(GEO的使用)

1. 什么是Geo&#xff1f; GEO就是Geolocation的简写形式&#xff0c;代表地理坐标。Redis在3.2版本中加入了对GEO的支持&#xff0c;允许存储地理坐标信息&#xff0c;帮助我们根据经纬度来检索数据。常见的命令有&#xff1a; GEOADD&#xff1a;添加一个地理空间信息&#…

基于WEB多媒体电子贺卡平台

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 网站前台&#xff1a;关于我们、联系我们、资讯信息、贺卡类型、贺卡信息、贺卡评论 管理员&#xff1a; 1、管理关于我…

[附源码]Python计算机毕业设计Django校园服装租赁系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

毕业设计 单片机墨水屏阅读器(单词卡) - 物联网 嵌入式

文章目录0 前言1 简介2 主要器件3 实现效果4 设计原理部分核心代码5 最后0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自…

列表类型(sort,reverse,list(),append(),切片)、求中位数,平均数,标准差练习

映射类型和操作 映射类型是“键-值”数据项的组合&#xff0c;每个元素是一个键 值对&#xff0c;即元素是(key, value)&#xff0c;元素之间是无序的。键值对 (key, value)是一种二元关系。在Python中&#xff0c;映射类型主要以字典&#xff08;dict&#xff09;体现。 列表类…

模拟大规模电动车充电行为(Matlab实现)

目录 1 模拟大规模充电汽车充电行为 2 Matlab部分代码实现 3 Matlab代码实现 1 模拟大规模充电汽车充电行为 电动汽车EV(Electric Vehicle)具有清洁环保、高效节能的优点,不仅能缓解化石能源危机,而且能够有效地减少温室气体的排放。2015年10月&#xff0c;国务院发布加快E…

设计模式之策略模式

Strategy design pattern 策略模式的概念、策略模式的结构、策略模式的优缺点、策略模式的使用场景、策略模式的实现示例、策略模式的源码分析 1、策略模式的概念 策略模式&#xff0c;即定义一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使它们可以相互替换&#…

Android平台GB28181接入模块技术接入说明

技术背景 今天&#xff0c;我们主要讲讲Android平台GB28181接入模块的技术对接&#xff0c;Android平台GB28181接入模块设计的目的&#xff0c;可实现不具备国标音视频能力的 Android终端&#xff0c;通过平台注册接入到现有的GB/T28181—2016服务&#xff0c;可用于如智能监控…

【Mitigating Voltage Attacks in Multi-Tenant FPGAs 论文笔记】

减轻多租户FPGA中的电压攻击摘要引言内容背景和相关工作INTEL STRATIX 10 FPGA上的PDN攻击Stratix 10 PDN特性定位电压下降片上监控和攻击抑制结论和未来工作结论&#xff1a;未来工作作者&#xff1a;GEORGE PROVELENGIOS, University of Massachusetts Amherst, MA, USADANIE…

Python学习-9.2 程序界面-sys库介绍

可以在Python标准库大全&#xff1a;https://docs.python.org/zh-cn/3/library/index.html中查找sys标准库的解释说明 sys标准库 本章对sys标准库中的重点函数进行讲解&#xff0c;sys库的作用主要是查看python解释器信息及传递信息给python解释器。 sys库的三个重要函数&…

JVM-------栈

栈&#xff1a; 早在数据结构的学习中&#xff0c;我们就知道了栈具有先进先出的特点&#xff0c;而数据结构是程序的一部分&#xff0c;那么栈的特点在java中是如何体现的呢? 比如&#xff1a;main函数先执行而后结束&#xff0c;就是利用了栈的特点。 在java中&#xff0c…

[附源码]计算机毕业设计Node.jsBuff饰品交易平台论文(程序+LW)

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

2022需求最大的8种编程语言排名

DevJobsScanner分析了过去14个月&#xff08;从2021 10月到2022年11月&#xff09;超过1200万开发人员的工作需求&#xff0c;并选择了明确需要编程语言的工作机会&#xff0c;获得了2022年最流行的八种编程语言。 市场上需求最高的前八种语言是&#xff1a; 1、 JavaScript/…

Appium基础 — Appium Inspector定位工具(二)

5、Appium Inspector工具的使用 &#xff08;1&#xff09;Inspector 定位控件界面的详细介绍 布局1&#xff1a;截图的手机界面 可以点击选择元素。 布局2&#xff1a;顶部操作栏 从左往右的按钮依次是 Select Element&#xff1a;选择元素。 Swipe By Coordinates&#xff…