在已编译的Linux内核上启用kdump

时间:2015-04-04 15:30:43

标签: c compilation linux-kernel kernel crash-dumps

何在更改的Linux内核上获取核心转储?

我正在运行一个带4G ram,4个内核的Ubuntu 14.04虚拟机,编译并安装了一个3.18内核。

  

BOOT_IMAGE = /引导/ vmlinuz的-3.18.7 +   root = UUID = 4a45cb37-0577-4307-bfc5-da80ee9097db ro   crashkernel = 384M-:128M

     

user @ dhcp194:〜/ source / nfs4tc $ sudo kdump-config test USE_KDUMP:
  1 KDUMP_SYSCTL:kernel.panic_on_oops = 1 KDUMP_COREDIR:
  / var / crash crashkernel addr:0x30000000 kdump kernel addr:   可重定位的kdump内核:/boot/vmlinuz-3.18.7+ kdump initrd:   /boot/initrd.img-3.18.7+要使用的kexec命令:/ sbin / kexec   -p --command-line =" BOOT_IMAGE = / boot / vmlinuz-3.18.7 + root = UUID = 4a45cb37-0577-4307-bfc5-da80ee9097db ro irqpoll maxcpus = 1   nousb" --initrd = / boot / initrd.img-3.18.7 + /boot/vmlinuz-3.18.7 +

kdump-load会抛出错误。

  

user @ dhcp194:〜/ source / nfs4tc $ sudo kdump-config load无法找到   内存空闲区域为0x9521000字节... locate_hole失败*   无法加载kdump内核

syslog片段:

  

/var/log/syslog.1:Apr 3 17:30:23 dhcp194 kdump-tools:无法加载   kdump kernel /var/log/syslog.1:Apr 3 17:58:12 dhcp194 kdump-tools:   无法加载kdump内核/var/log/syslog.1:Apr 3 19:39:09   dhcp194 kdump-tools:无法加载kdump内核

它适用于全新安装的VM,但在更改内核后它不会。 我使用默认的.config文件进行内核编译。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

让我们调用一个崩溃内核 - 一个kdump必须加载,系统内核 - 你的主机内核。

  1. 在系统内核中启用CONFIG_KEXEC
  2. 在您的系统内核中,bootloader必须将crashkernel = YM @ X字符串传递给您的系统内核cmd行(可能在您的情况下通过atags),其中Y是崩溃内核的保留空间(以MB为单位),X是物理地址崩溃核心的位置。
  3. 要检查2.您可以查看/ proc / iomem。如果没有"崩溃内核"在其中的部分,然后出现问题。 接下来...在kexec实用程序中使用-d选项进行详细模式