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

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.lqws.cn/news/517213.html

相关文章:

  • 【ArcGIS】水资源单项评价
  • github 图床使用免费CDN加速(jsdelivr)
  • 【版本控制教程】如何使用Unreal Engine 5 + UE源代码控制(Perforce P4)
  • NPU介绍
  • SQL学习笔记2
  • Python Matplotlib绘图指南,10分钟制作专业级数据可视化图表
  • Django
  • 力扣网C语言编程题:位运算来解决 “寻找重复数”
  • 用css实现文字字体颜色渐变
  • SpringMVC系列(三)(请求处理的十个实验(上))
  • CLIP中学习“少样本线性探针”(Few-shot Linear Probe)学习笔记
  • 完成国产化替代!昆明卷烟厂用时序数据库 TDengine 重塑工业时序数据平台
  • Odoo API 集成:XML-RPC 与 JSON-RPC 的比较
  • WinUI3_设置原生态标题栏样式
  • 9.11 Indoor localization based on factor graphs: A unified framework
  • OCR表格识别效果对比
  • GaussDB实例级自动备份策略:构建数据安全的“自动防护网”
  • 一步部署APache编译安装脚本
  • 在IIS上运行PHP时显示PHP错误信息
  • 支持PY普冉系列单片机调试工具PY32linK仿真器
  • BT138-600-ASEMI智能家电专用BT138-600
  • Cookie 在 HTTP 中的作用HTTP 中的状态码
  • 网络协议 / 加密 / 签名总结
  • Mysql8.0版本未卸载干净如何重新下载
  • Go 语言并发编程
  • web安全之h2注入系统学习
  • GC2803:八通道NPN达林顿管的高效驱动解决方案
  • 无人机灯光驱动模块技术解析
  • 内存条与CPU三级缓存之间的区别
  • HarmonyOS 应用权限管控流程