linux内核panic自动重启与dump分析需配置kernel.panic(设非零值如10秒重启)、kernel.panic_on_oops(启用oops转panic)及kdump(预留内存、安装服务、启用),再用echo c > /proc/sysrq-trigger验证vmcore生成与自动重启闭环。

新手配置Linux内核Panic自动重启和Dump分析,核心是两件事:让系统崩溃后能自动重启保障业务连续性,同时保留足够线索用于事后定位。不复杂但容易忽略细节,关键在参数组合与验证闭环。
基础自动重启:必须设 kernel.panic
这是最简生效配置。默认值为0,表示panic后永久卡死;生产环境必须改非零值:
-
临时生效(重启失效):
sudo sysctl -w kernel.panic=10(10秒后重启) -
永久生效:向
/etc/sysctl.conf追加kernel.panic = 10,再运行sudo sysctl -p - 数值单位是秒,建议5–60之间。太短可能来不及打印完整日志;太长影响服务恢复速度
让Oops也触发重启:开启 panic_on_oops
Oops是内核“轻度崩溃”,有时系统还能勉强运行,但已不可信。默认部分发行版已启用,仍建议显式确认:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 检查当前状态:
cat /proc/sys/kernel/panic_on_oops(输出1即已启用) - 启用它:
echo 1 | sudo tee /proc/sys/kernel/panic_on_oops - 写入配置文件:
echo "kernel.panic_on_oops = 1" | sudo tee -a /etc/sysctl.conf
启用kdump生成vmcore转储
自动重启会清空内存,没有vmcore就等于丢失“事故现场”。kdump是标准方案,需三步:
-
安装服务:
sudo yum install -y kexec-tools(CentOS/RHEL)或sudo apt install -y kdump-tools(Ubuntu/Debian) -
预留内存:编辑
/etc/default/grub,在GRUB_CMDLINE_LINUX中添加crashkernel=auto(或指定大小如crashkernel=256M),然后更新grub并重启 -
启动服务:
sudo systemctl enable --now kdump;运行sudo systemctl status kdump确认Active: active
配置完成后,下次panic会先切换到保留的crash内核,把整块RAM写入/var/crash/下的vmcore文件,再执行kernel.panic设定的重启。
快速验证是否生效
别等真出问题才试。用SysRq安全触发一次可控panic:
- 先确保SysRq启用:
echo 1 | sudo tee /proc/sys/kernel/sysrq - 触发崩溃:
echo c | sudo tee /proc/sysrq-trigger - 观察行为:屏幕应打印“Kernel panic”信息,停顿约10秒(你设的kernel.panic值),然后自动重启
- 重启后检查:
ls /var/crash/应有时间戳命名的目录,里面含vmcore和vmcore-dmesg.txt










