linux内核奔溃转储之kexec、kdump

一、kexec是什么?

        kexec 是 Linux 内核提供的一种关键技术,允许系统‌在不经过完整硬件重启(BIOS/UEFI 初始化)的情况下,直接从当前正在运行的内核加载并启动另一个新内核‌。以下是其核心要点:

  1. 定义与核心机制

    • kexec 是一个系统调用(kexec_load)和用户空间工具(kexec-tools)的结合。
    • 它预先将新内核的镜像(vmlinuz)和可选的初始 RAM 磁盘(initrd)加载到内存中的特定位置。
    • 当触发执行(例如通过 kexec -e 命令)或发生崩溃(用于 kdump)时,系统会立即停止当前内核的执行,将 CPU 控制权直接跳转到新加载内核的入口点。

二、怎么打开kexec?

        在.config中配置如下的宏

CONFIG_KEXEC=y
CONFIG_RELOCATABLE=n
CONFIG_RANDOMIZE_BASE=n
CONFIG_SECURITY_DMESG_RESTRICT=n

        编译kexec工具

cd $KEXEC_TOOLS_DIR
sudo ./bootstrap
sudo LDFLAGS=-static ./configure --prefix= /media/$USER/rootfs/ --host=aarch64-linux-gnu --target=aarch64-linux-gnu
#sudo LDFLAGS=-static ./configure --prefix=/usr/local --host=aarch64-linux-gnu --target=aarch64-linux-gnu
sudo make clean
sudo make
sudo make installcp $KEXEC_TOOLS_DIR/build/sbin/kexec /media/$USER/rootfs/usr/sbin

        测试kexec:

cmdline="crashkernel=128M console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=spi-nand0:512k(ospi_nand.tiboot3),2m(ospi_nand.tispl),4m(ospi_nand.u-boot),256k(ospi_nand.env),256k(ospi_nand.env.backup),98048k@32m(ospi_nand.rootfs),256k@130816k(ospi_nand.phypattern) root=PARTUUID=882b0176-3044-403d-ab87-3d8bafb3d742 rw rootfstype=ext4 rootwait ab_slot=a"kexec -d -l /boot/Image --command-line="$cmdline" --dtb=/boot/dtb/ti/k3-am62-lp-sk-V015.dtbkexec -e

一、什么是kdump

        kdump 是一种先进的基于 kexec 的内核崩溃转储机制,用于在 Linux 系统崩溃、死锁或死机时捕获内存中的数据,并生成崩溃转储文件,以便分析和诊断系统问题 

  • 工作原理:kdump 的核心机制依赖于 kexec,它允许通过已经运行的内核的上下文启动另一个 Linux 内核,而无需经过 BIOS 重新启动。当生产内核崩溃时,kdump 使用 kexec 启动捕获内核。捕获内核被引导时会传递 ELF 文件头的地址,通过分析它,捕获内核可以生成/proc/vmcore文件。捕获内核的 ramdisk 中的脚本可以通过文件读写和网络实现各种转储策略,将/proc/vmcore文件中的数据进行收集和转存,完成数据收集后,系统通常会自动重启。

二、怎么打开kdump

        在.config中打开以下宏:

CONFIG_CRASH_DUMP=y
CONFIG_PROC_VMCORE=y

args_mmc=run finduuid;run findab;setenv bootargs crashkernel=128M@0x90000000 console=${console}
setenv args_mmc "run finduuid;setenv bootargs crashkernel=128M@0x90000000 console=ttyS2,115200n8 root=/dev/mmcblk1p2 rw
/etc/sysconfig/kdump.conf

三、测试kdump 

cmdline="console=ttyS2,115200n8 crashkernel=128M root=/dev/mmcblk0p2 rw rootfste=ext4 rootwait"kexec -p /boot/Image --command-line="$cmdline" --dtb=/boot/dtb/ti/k3-am62-lp-sk-V015.dtbecho c > /proc/sysrq-trigger

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

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

相关文章

标题:2025金融护网行动实战指南:从合规防御到智能免疫的体系化进阶

引言 2025年,随着《中国人民银行业务领域网络安全事件报告管理办法》正式实施,金融护网行动已从“合规检查”升级为“能力对抗”。面对AI驱动的自适应攻击、勒索病毒与黑灰产协同威胁,金融机构需构建“技术-管理-人才”三位一体的智能防御体…

NEO4j的安装部署

windows neo4j新版本安装需要部署jdk17,下面这个版本是jdk8最新的支持版本 neo4j-community-3.5.9-windows.zipIndex of /doc/neo4j/3.5.9/ 启动 dos面板中启动 neo4j.bat console linux neo4j新版本安装需要部署jdk17,下面这个版本是jdk8最新的支…

八股文——JAVA基础:说一下C++与java的区别

首先,c与java都是面向对象编程,都包含封装、继承、多态的特性。但是c多继承,而java只能单继承与多实现。 其次,java无法直接访问内存,java通过引用对向,比如new一个对象,拿到的对象实例实际上是…

Vue3 Composition API 深度解析:告别Options API的局限性

目录 一、为什么需要Composition API? 二、核心概念:setup() 函数 三、响应式核心:ref() 和 reactive() 1. ref - 处理基本类型/对象 2. reactive - 处理对象 四、生命周期钩子新写法 五、强大的逻辑复用:组合式函数 六、响…

IoT/HCIP实验-5/基于NB-IoT的智慧农业实验(平台侧开发+端侧编码+基础调试分析)

文章目录 概述扩展板 E53_IA1智慧农业平台测开发功能定义/模型开发编解码插件开发-消息编解码插件开发-关联编解码插件开发-部署注册实际设备 智慧农业端侧编码工程配置数据结构定义数据收集任务数据上报任务设备接入过程正确设置接入参数命令响应任务 程序调试其他 概述 本实…

多网络环境vmware虚拟机配置

环境:一台台式机、一台笔记本、笔记本中安装虚拟机。台式机及笔记本都使用wifi连接。 实现效果:虚拟机采用固定ip方式,台式机可以直接连接虚拟机。 1、VMware环境配置 台式机ip:192.168.31.43 笔记本ip:192.168.31.…

ZArchiver×亚矩云手机:云端文件管理的“超维解压”革命

在数字化办公与移动应用生态中,文件压缩与解压是高频刚需场景,但传统本地工具受限于设备性能、存储空间及跨平台协作痛点。ZArchiver(轻量级压缩工具)与亚矩云手机的结合,通过“云端算力虚拟化环境”的创新模式&#x…

微帧WZVQA:极致还原人眼感知,精准评估视频画质

随着移动互联网的不断发展以及智能手机的普及,短视频已逐步取代图片和文字,跻身主流媒体形式的前列。短视频平台的兴起,让数十亿用户可以制作,分享并接收彼此的信息,为人们开辟了一条全新的知识获取途径。然而&#xf…

信创 CDC 实战|国产数据库的数据高速通道:OceanBase 实时入仓 StarRocks

国产数据库加速进入核心系统,传统同步工具却频频“掉链子”。本系列文章聚焦 OceanBase、GaussDB、TDSQL、达梦等主流信创数据库,逐一拆解其日志机制与同步难点,结合 TapData 的实践经验,系统讲解从 CDC 捕获到实时入仓&#xff0…

Unity 通过AVProMovieCapture插件实现摄像机录屏

1.AVProMovieCapture插件下载 没什么好说的,搞到安装包之后,直接往项目中拉就行。 2.操作面板配置 (1)在Hierarchy创建一个空物体,上面添加Capture From Camera和Camera Selector两个插件 (2&#xff09…

深度学习:PyTorch卷积神经网络分享(1)

本文目录: 一、CNN概述二、CNN日常应用三、CNN的卷积层(一 )基本介绍(二)卷积层计算1.对输入数据的要求2.卷积核核心参数3.计算过程4.特征图尺寸计算5.1、多通道卷积计算5.2、多卷积核计算6.PyTorch卷积层API 前言&…

Cesium添加3dtiles并平移到指定经纬度

访问tileset.json,查看root.transform,12,13,14分别代表模型参考原点的地心坐标Cartesian3(x,y,z) let tileset await Cesium.Cesium3DTileset.fromUrl()构造origin_cartesian3new Cesium.Cartesian3(x,y,z) 设置待平移到的位置经纬高为longitude,latitude,height,例如(116,…

STM32G070x 单片机项目代码解析:基于 HAL 库的嵌入式系统开发

项目总体架构 该项目采用标准的 STM32 工程结构,主要包含以下几个部分: 头文件包含:系统头文件和用户自定义头文件外设句柄定义:SPI、TIM、UART 等外设的句柄声明用户自定义变量:LED 控制、按键状态等标志位初始化函数…

winform mvvm

if (!mvvmContext1.IsDesignMode) InitializeBindings(); 这段代码的意思是:如果当前应用程序不是处于设计模式(即程序正在运行),就调用InitializeBindings方法来初始化视图与视图模型之间的绑定。 void Initiali…

防火墙快速管理软件,66K超小巧

软件介绍 今天为大家推荐一款轻量级的Windows防火墙管理工具,这款工具能帮助用户快速开启或关闭系统防火墙功能,操作比系统原生设置更加便捷高效。 软件优势 相比通过系统设置层层点击的操作方式,这款仅66KB大小的微型工具只需单击按钮…

python中的高级变量III

python中的高级变量III 删除列表元素(list)扩展知识点 name_list ["Mike","John","Alice"] del name_list[1] # 通过del name_list[1]删除“John” print(name_list) # 输出 [Mike, Alice]注意:del …

深入理解Redis

深入理解Redis:高性能内存数据库的核心原理与应用实践 1. 引言 在现代互联网应用中,高性能、低延迟的数据访问是至关重要的。传统的关系型数据库(如MySQL)虽然功能强大,但在高并发场景下往往成为性能瓶颈。Redis&…

界面控件DevExpress Blazor中文教程:AI聊天 - 如何实现函数调用?

DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验,这个UI自建库提供了一套全面的原生Blazor UI组件(包括Pivot Grid、调度程序、图表、数据编辑器和报表等)。 现代AI驱动的应用程序需要与外部系…

github 上的php项目

github 上的php项目 项目的网址 (Loong1996/LikeGirlSite: 情侣网站、情侣网页、恋爱记录网站) # 修改 # admin/Config_DB.php//localhost 为数据库地址 一般使用默认的即可 或(127.0.0.1) $db_address "mysql_php";/…

区间求最值问题高效解决方法

对于区间求最值场景,如果区间不定长度的,可以使用稀疏表进行求解,如果区间是固定长度的,则可以使用分块的思想(与稀疏表原理类似),都是通过压缩状态个数, 1 关于稀疏表的原理详见&a…