kdump未生成转储文件说明未启用或配置异常,需依次检查内核支持(config_kexec=y、config_crash_dump=y)、安装工具(linux-crashdump或kexec-tools)、配置crashkernel内存预留(如512m)、指定/var/crash保存路径并手动触发echo c测试验证。

如果您在麒麟操作系统中遭遇系统死机(如内核 panic),但未生成可用于分析的内存转储文件,则说明 kdump 机制尚未启用或配置异常。以下是针对麒麟桌面版与服务器版的多种启用与验证方法:
一、检查内核配置支持
kdump 功能依赖内核编译时启用 CONFIG_KEXEC 和 CONFIG_CRASH_DUMP。若未启用,后续所有配置均无效。
1、执行命令确认内核配置项:
grep -E "CONFIG_KEXEC=|CONFIG_CRASH_DUMP=" /boot/config-$(uname -r)
2、输出中必须同时包含:
CONFIG_KEXEC=y 和 CONFIG_CRASH_DUMP=y
3、若任一为 m 或 n,需更换已启用该功能的内核版本或重新编译内核。
二、安装并启用 kdump 工具套件
不同麒麟发行版使用不同包管理器,需按实际环境选择对应安装方式。
1、银河麒麟桌面版(基于 Debian/Ubuntu):
sudo apt update && sudo apt install linux-crashdump apport crash -y
2、银河麒麟服务器版 / 湖南麒麟(基于 CentOS/RHEL/openEuler):
sudo yum install -y kexec-tools
3、安装完成后立即启用服务:
sudo systemctl enable --now kdump-tools.service
4、验证服务状态:
sudo systemctl status kdump-tools.service | grep -E "(active|running)"
三、配置 crashkernel 内存预留
必须为捕获内核(crash kernel)预留固定物理内存,否则系统崩溃时无法加载备用内核执行转储。
1、编辑 GRUB 启动参数配置文件:
sudo vim /etc/default/grub.d/kdump-tools.cfg(桌面版)
或
sudo vim /etc/default/grub(服务器版)
2、在 GRUB_CMDLINE_LINUX_DEFAULT 或 GRUB_CMDLINE_LINUX 行末尾追加:
crashkernel=512M
3、对于内存 ≥ 8GB 的生产服务器,建议使用分段式配置以提升兼容性:
crashkernel=auto 或 crashkernel=1G-:768M
4、更新 GRUB 配置并重启:
sudo grub-mkconfig -o /boot/grub/grub.cfg(x86_64)
或
sudo grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg(UEFI 环境)
sudo reboot
四、指定转储文件保存路径与压缩策略
默认路径 /var/crash 可能因磁盘空间不足导致写入失败,需显式配置并确保目录可写。
1、编辑 kdump 配置文件:
sudo vim /etc/kdump.conf
2、取消注释并修改 path 行:
path /var/crash
3、添加本地磁盘空间保障策略(防止写满):
ext4 /dev/sda2
(替换为实际存放 /var/crash 的分区设备)
4、启用压缩以节省空间(推荐):
core_collector makedumpfile -c --message-level 1 -d 31
五、手动触发测试与结果验证
仅当系统重启后成功生成 vmcore 文件,才表明整套流程配置正确。
1、切换至 root 用户:
sudo su -
2、启用 sysrq 功能(若被禁用):
echo 1 > /proc/sys/kernel/sysrq
3、触发内核 panic:
echo c > /proc/sysrq-trigger
4、系统自动重启后,登录并检查:
ls -lth /var/crash/*/vmcore
5、确认关键文件存在:
vmcore(原始内存镜像)、
vmcore-dmesg.txt(崩溃时刻内核日志)











