Linux kdump配置步骤和注意事项(基于debian、OpenEuler和自定义编译内核的Linux)

news2024/12/23 14:32:48

1、kdump简单描述

kdump是Linux中的一个内核转储机制,主要用于当Linux内核发生崩溃时,将该内核相关的信息和崩溃原因通过转储的形式保留下来,在debian系统中,相关信息会存储在dump文件中,在OpenEuler和CentOS等系统中则是vmcore文件中,以供后期开发人员通过crash工具进行相关的分析。

2、kdump转储过程的简明描述

2.1、信息转储运行环境:生产内核+捕捉内核+ramdisk

在kdump中,构成转储运行环境大致由三个部分构成,即生产内核、捕捉内核和ramdisk,其相关概念如下:

  • 生产内核(production kernel)——指当前Linux系统运行的内核;
  • 捕捉内核(crash kernel)——当生产内核发生崩溃时,用于转储生产内核各类信息的内核;
  • ramdisk——部分运存(RAM)模拟出来的虚拟磁盘,因为这个虚拟磁盘是通过RAM模拟出来的,而非物理磁盘,因此其读写速度非常快。

基于这三个部分,转储的过程可以简单描述为——当生产内核发生崩溃时,捕捉内核会随之启动,同时RAM中的一部分会被模拟为虚拟磁盘ramdisk,从而构成一个简单的运行环境,因ramdisk读写速度很快的特点,生产内核在崩溃时的相关信息会通过捕捉内核快速写入ramdisk中,然后由ramdisk将转储信息生成为ELF格式的文件,并输出到物理磁盘中,文件生成的过程全部结束后,系统将进行重启。

2.2、kexec的作用和运行原理

kexec用于启动捕捉内核,正常情况下,系统内核的启动需要通过BIOS进行引导,但kexec能使得捕捉内核绕开BIOS进行启动,原因在于,BIOS启动内核的过程中会启动大量的外设设备,延长了启动时间,而这些外设设备对于捕捉内核来说是无用的,加之生产内核崩溃时的不稳定状态需要捕捉内核尽可能快的进行信息的转储,因此捕捉内核的启动是通过kexec进行的,kexec实现了在生产内核的基础上快速启动捕捉内核。
而针对于kexec的运行原理,主要围绕内核空间中的kexec_load和用户空间中的kexec_tools来进行,相关作用如下:

  • kexec_load——在生产内核正常启动时,将捕捉内核加载到指定的地址;
  • kexec_tools——将捕捉内核的地址传递给生产内核,以便生产内核崩溃时,能快速寻址到捕捉内核,实现捕捉内核的启动。

3、kdump的安装、配置和使用

3.1、针对kdump的安装说明

每个Linux发行版安装kdump的思路是相同的,如下:

  1. 安装kdump本身组件(kexec-tools、kdump-tools)、crash工具和kernel-debuginfo;
  2. 然后是通过修改/etc/default/grub文件中的GRUB_CMDLINE_LINUX参数来定义分配给捕捉内核的运存(RAM)大小;
  3. 更新grub后重启系统。

而针对于需要安装的组件,说明如下:

  • kexec-tools和kdump-tools——kdump本身的组件;
  • crash——用于结合vmlinux文件对转储文件(dump或vmcore)进行分析的工具;
  • kernel-debuginfo——用于生成当前版本内核vmlinux文件的debug安装包;

kernel-debuginfo在各个发行版的名称不一样,部分发行版名称如下(均以amd64架构为例):

Linux发行版名称kernel-debuginfo名称获取方式
debianlinux-image-amd64-dbgapt包管理器获取
OpenEulerkernel-debuginfoyum包管理器获取
CentOS 7/CentOS-Stream 8kernel-debuginfo在debuginfo.centos.org手动搜索下载对应内核版本
CentOS-Stream 9kernel-debug*yum包管理器获取,但安装完成后未生成vmlinux文件,编译内核源码也暂未成功

3.2、debian下安装kdump并模拟内核崩溃过程

(1)确保软件下载、安全更新和系统更新的apt源是一致的(/etc/apt/sources.list)
在这里插入图片描述
之所以强调debian系统中需要三个源保持一致,是因为debian系统在最初的安装过程中,虽然有让用户自行选择镜像源的选项,但这个镜像源只会改变软件下载和系统更新两个源,而安全更新仍旧是设置的debian的官方源,这会导致两个问题——一是在国内网络环境里下载linux-image-amd64-dbg十分缓慢;二是debian在全球的镜像源缓存官方源存在一个时间差的问题,可能会导致从官方安全源上获取到的linux-image-amd64-dbg和镜像源更新到的Linux内核出现版本不一致的情况,从而致使crash无法通过vmlinux文件解析到dump转储文件内容。

(2)通过命令“apt install kexec-tools kdump-tools crash -y”安装相应组件
在这里插入图片描述
(3)通过命令“vim /etc/default/grub”修改GRUB_CMDLINE_LINUX参数,设定捕捉内核的RAM大小
在这里插入图片描述

示例:GRUB_CMDLINE_LINUX参数的语法规则如下:
GRUB_CMDLINE_LINUX="crashkernel=1G-4G:192M quit,4G-64G:256M quit,64G-:512M"

以上表示:若RAM在1G~4G之间,分配192M给捕捉内核,后面也这样对比;
quit表示内核启动时过滤掉不必要的输出信息

(4)输入“grub2-mkconfig -o /boot/grub2/grub.cfg”命令,更新grub

(5)输入“reboot”命令,重启操作系统

(6)输入“kdump-config show”或者“cat /sys/kernel/kexec_crash_loaded”命令,查看kdump是否成功开启
在这里插入图片描述
(7)通过命令“echo c > /proc/sysrq-trigger”,人为制造一个内核崩溃,此命令会触发kdump转储机制,转储完成后,操作系统会自动重启,重启完成后,/var/crash目录下会生成转储日志和转储文件
在这里插入图片描述
(8)通过命令“apt install linux-image-amd64-dbg -y”下载debian的kernel-debuginfo工具,此命令会生成当前版本内核的vmlinux文件,用于crash工具去解析生成的dump转储文件,一般来说,debian系统在安装linux-image-amd64-dbg后,vmlinux文件会在以下类似目录:
在这里插入图片描述
(9)通过命令“crash /usr/lib/debug/lib/modules/5.10.0-21-amd64/vmlinux /var/crash/202301261819/dump.202301261819”,利用crash工具解析dump转储文件,可看到内核崩溃时的大体信息,如果要深入进行分析,则可以利用crash工具中的命令进行查看,crash工具的命令可自行查阅
在这里插入图片描述

KERNEL:系统崩溃时运行的 kernel 文件
DUMPFILE:内核转储文件
CPUS: 所在机器的 CPU 数量
DATE: 系统崩溃的时间
TASKS:系统崩溃时内存中的任务数
NODENAME:崩溃的系统主机名
RELEASE:和 VERSION: 内核版本号
MACHINE:CPU 架构
MEMORY:崩溃主机的物理内存
PANIC:崩溃类型,常见的崩溃类型包括:
SysRq(System Request):通过魔法组合键导致的系统崩溃,通常是测试使用。通过 echo c > /proc/sysrq-trigger,就可以触发系统崩溃。
oops:可以看成是内核级的 Segmentation Fault。应用程序如果进行了非法内存访问或执行了非法指令,会得到 Segfault 信号,一般行为是 coredump,应用程序也可以自己截获 Segfault 信号,自行处理。如果内核自己犯了这样的错误,则会弹出 oops 信息。
(参考来源:https://zhuanlan.zhihu.com/p/354552321)

3.3、OpenEuler下安装kdump并模拟内核崩溃过程

(1)OpenEuler本身已经内置并启用了kdump,因此不用单独下载,通过“systemctl status kdump”或者“cat /sys/kernel/kexec_crash_loaded”检查kdump状态即可
在这里插入图片描述
(2)通过命令“vim /etc/default/grub”修改GRUB_CMDLINE_LINUX参数,设定捕捉内核的RAM大小
在这里插入图片描述
(3)输入“grub2-mkconfig -o /boot/grub2/grub.cfg”命令,更新grub

(4)输入“reboot”命令,重启操作系统

(5)通过命令“echo c > /proc/sysrq-trigger”,人为制造一个内核崩溃,此命令会触发kdump转储机制,转储完成后,操作系统会自动重启,重启完成后,/var/crash目录下会生成转储日志和转储文件
在这里插入图片描述
(6)通过命令“yum install crash -y”安装crash工具

(7)通过命令“yum install kernel-debuginfo -y” 下载OpenEuler的kernel-debuginfo工具,此命令会生成当前版本内核的vmlinux文件,用于crash工具去解析生成的vmcore转储文件,一般来说,OpenEuler系统在安装kernel-debuginfo后,vmlinux文件会在以下类似目录:
在这里插入图片描述
(8)通过命令“crash /usr/lib/debug/usr/lib/modules/4.19.90-2301.5.0.0185.oe1.x86_64/vmlinux /var/crash/127.0.0.1-2023-01-28-10\:39\:33/vmcore”,利用crash工具解析dump转储文件,可看到内核崩溃时的大体信息,如果要深入进行分析,则可以利用crash工具中的命令进行查看,crash工具的命令可自行查阅
在这里插入图片描述

3.4、自定义编译内核的Linux系统下使用kdump

下图展示的是Linux内核源码编译安装的大致过程,一般以来说,当源码编译安装成功进行到“make bzImage”后,vmlinux就会编译生成至kernel编译目录下,这里的vmlinux可用于crash工具的解析:
在这里插入图片描述

4、注意事项和扩充知识

(1)kdump的配置过程中,最费精力的一个步骤是kernel-debuginfo的安装和vmlinux文件的获取,因为每个发行版对于kernel-debuginfo的安装方式是不同的,因此需要具体查阅对应发行版的官方手册;
(2)正如3.2章节的第一个步骤那样,如果是debian系统,需要在配置前检查软件下载、系统更新和安全更新三个源是否一致,以防止vmlinux和dump转储文件不一致的情况出现;
(3)vmlinux和vmlinuz这两个文件均是Linux内核运行文件,区别在于vmlinuz是压缩之后的文件,而vmlinux没有压缩,在各个Linux发行版中,如果内核不是自行通过编译方式安装的话,vmlinux通常不会附带在系统中,需要通过安装kernel-debuginfo生成。

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

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

相关文章

utils:crypto-js的基本使用和(加密/解密)功能封装

目录一、基本使用1. 资源下载2. 目录结构3. 代码二、功能封装1. 封装代码2. 使用说明(1) 引入utils工具(2) 使用工具一、基本使用 1. 资源下载 crypto-js 2. 目录结构 3. 代码 <html xmlns"http://www.w3.org/1999/xhtml"> <head> <meta http-equ…

【Linux】磁盘结构/文件系统/软硬链接/动静态库

文章目录前言一、磁盘结构1、磁盘的物理结构2、磁盘的存储结构3、磁盘的逻辑结构二、文件系统1、对 IO 单位的优化2、磁盘分区与分组3、对分组的具体管理方法4、文件操作三、软硬链接1、理解硬链接2、理解软链接3、理解 . 和 ..四、静动态库1、什么是动静态库2、动静态库的制作…

JavaScript 中的字符串

JavaScript 字符串 什么是字符串&#xff1f; 字符串是用来存储和处理文本数据的 比如&#xff1a;一句话、a等 字符串的创建方式 字面量方式进行创建 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta…

DW 2023年1月Free Excel 第十次打卡 Excel看板

第十章Excel看板 数据下载地址与参考链接&#xff1a;https://d9ty988ekq.feishu.cn/docx/Wdqld1mVroyTJmxicTTcrfXYnDd 数据看板作为数据动态展示的一种重要方式&#xff0c;被广泛的应用于各个领域&#xff0c;因此本节根据1个案例讲解使用Excel制作数据看板的过程&#xff…

大厂年薪43w测试开发手把手教你搭建Web自动化测试框架,超详细

测试框架的设计有两种思路&#xff0c;一种是自底向上&#xff0c;从脚本逐步演变完善成框架&#xff0c;这种适合新手了解框架的演变过程。另一种则是自顶向下&#xff0c;直接设计框架结构和选取各种问题的解决方案&#xff0c;这种适合有较多框架事件经验的人。本章和下一张…

使用Python读取和处理安卓传感器数据与CSV读取

多年来&#xff0c;数据一直是世界运作的重要组成部分。这些数据可以从GDP到血样&#xff0c;再到世界的各个方面。随着我们数据的增长&#xff0c;统计学找到了从它们中提取更多意义的方法。 这些方法之一被称为方差分析&#xff08;ANOVA&#xff09;。方差分析是一套统计模…

python进阶——人工智能视觉识别

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a;lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https://blog.csdn.net/lbcyllqj?spm1000.2115.3001.5343 哔哩哔哩欢迎关注&…

最简单的k8s安装记录(包含dashboard)

使用sealos一键安装k8s集群 sealos-githubsealos使用文档 wget https://github.com/labring/sealos/releases/download/v4.1.4/sealos_4.1.4_linux_amd64.tar.gz && \tar -zxvf sealos_4.1.4_linux_amd64.tar.gz sealos && chmod x sealos && mv se…

编译原理学习笔记15——属性文法与语法制导翻译2

编译原理学习笔记15——属性文法与语法制导翻译215.1 S-属性文法15.2 L-属性文法15.3 翻译模式15.4 递归下降翻译器的设计15.1 S-属性文法 S-属性文法的自下而上计算 S-属性文法的自下而上计算 在分析栈中增加附加域存放综合属性值假设产生式A→XYZ对应的语义规则为a:f(X.x…

OAK深度相机操作温度范围说明

编辑&#xff1a;OAK中国 首发&#xff1a;Luxonis 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是助手君。…

基于SMOKE多模式排放清单处理技术及EDGAR/MEIC清单制作与VOCs排放量核算

查看原文>>>基于SMOKE多模式排放清单处理技术及EDGAR/MEIC清单制作与VOCs排放量核算 随着我国经济快速发展&#xff0c;我国面临着日益严重的大气污染问题。近年来&#xff0c;严重的大气污染问题已经明显影响国计民生&#xff0c;引起政府、学界和人们越来越多的关注…

String类——Java中常见的类(模拟登录案例练习)

目录 String类的概述及构造方法&#xff08;String类是Java中最常见的类&#xff09; String的特点 String类的判断功能 模拟登录案例 ​ String类的获取功能 两个小练习 String类的转换功能和String类的其他功能 string类练习 String类的概述及构造方法&#xff08;Str…

35/365 java 反射 Reflection Class类

1.动态语言 静态语言 动态语言&#xff1a; 运行时可以改变自身结构的语言eg: JavaScript, C#, PHP, Python 静态语言&#xff1a; 运行时结构不可变的语言eg: Java, C, CJava 不是动态语言&#xff0c;但通过反射机制获得了类似动态语言的特性&#xff0c;具有了一定的动态…

软件测试前沿技术:从中国新车评估规程谈谈自动化驾驶测试

背景C-NCAP全称China NewCarAssessmentProgramme&#xff0c;中国新车评估规程&#xff0c;是由E-NCAP发展而来&#xff0c;两者测试项目多数一致。E-NCAP全称是European NewCarAssessmentProgramme&#xff0c;译为欧洲新车评估规程&#xff0c;成立于1997年&#xff0c;是一个…

基于MirrorMaker与火山引擎的Kafka数据同步

Kafka MirrorMaker是Kafka官网提供的跨数据中心流数据同步方案&#xff0c;其实现原理是通过从Source集群消费消息&#xff0c;然后将消息生产到Target集群从而完成数据迁移操作。用户只需要通过简单的consumer配置和producer配置&#xff0c;启动MirrorMaker&#xff0c;即可实…

NCP1654BD65R2G高性能软开关功率因数校正电路芯片

NCP1654BD65R2G是一款用于连续导通模式 (CCM) 功率因数校正 (PFC) 步升预转换器的控制器。它在固定频率模式下控制电源开关导通时间 (PWM)&#xff0c;取决于瞬时线圈电流。采用SOIC-8封装&#xff0c;最大程度减少了外部部件数量&#xff0c;并极大简化了 PFC 实施。它还集成了…

灰色预测模型一文详解+Python实例代码

目录 前言 一、模型理论 特点 二、模型场景 1.预测种类 2.适用条件 三、建模流程 1.级比校验 2.数据累加和微分方程构造 3.系数求解 4.残差检验与级比偏差检验 四、Python实例实现 总结 前言 博主参与过大大小小十次数学建模比赛&#xff0c;也获得了不少建模奖项…

19 | 三方协议怎么签?

前言 前言&#xff1a;简介三方协议签约的相关内容。 文章目录前言一. 什么是就业协议书二. 签约流程1. 网签流程&#xff08;线上签约&#xff09;三. 参考链接一. 什么是就业协议书 就业协议书俗称三方协议&#xff0c;是《全国普通高等学校毕业生就业协议书》的简称。 它是…

b站黑马Vue2后台管理项目笔记——(2)主页布局(整体,Header,左侧菜单布局)

说明&#xff1a; 此项目中使用的是本地SQL数据库&#xff0c;Vue2。 其他功能请见本人后续的其他相关文章。 本文内容实现的最终效果如下图&#xff1a; e.g.点击二级菜单用户列表&#xff0c;就会跳转到用户列表对应的index的地址&#xff08;用户列表的indexpath是users&…

2023年山东最新道路运输安全员考试真题题库及答案

百分百题库提供道路运输安全员考试试题、道路运输安全员考试预测题、道路运输安全员考试真题、道路运输安全员证考试题库等,提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 题干&#xff1a;客运驾驶员从业行为定期考核结果应与企业安全生产奖惩制度…