我已按照指示在 Ubuntu 帮助 wiki 上对于在 VMware Fusion 5 中运行的 12.04.2 Ubuntu Server,一切看起来都很好,所以我echo c > /proc/sysrq-trigger
以 root 身份执行了此操作。它按预期使内核崩溃,然后在打印出一堆堆栈跟踪后挂起。
我等了几分钟,确保所有写入磁盘的操作(用于崩溃转储)都已完成,然后我重新启动了虚拟机。当我再次登录时,ls /var/crash
没有显示任何文件!知道如何让它工作吗,或者它是否能工作?
答案1
三年多来,已经详细记录了为什么这种方法无法正常工作:请参阅 Ubuntu wiki 的此页面
在 RAM 小于等于 2G 的系统上,我们不会为崩溃内核的 initrd 保留足够的内存。这将导致崩溃内核崩溃。
另请参阅这些错误报告以供参考#785394和#1235616
解决方法:
要修复此问题,请设置
GRUB_CMDLINE_LINUX="crashkernel=128M"
在 中/etc/default/grub
。注意:您不能将此选项放入 中GRUB_CMDLINE_DEFAULT
,因为 中的设置/etc/grub.d/10_linux
优先于该设置。
要“永久”修复该问题,请编辑 /etc/grub.d/10_linux 并更改行
GRUB_CMDLINE_EXTRA="$GRUB_CMDLINE_EXTRA crashkernel=384M-2G:64M,2G-:128M"
到
GRUB_CMDLINE_EXTRA="$GRUB_CMDLINE_EXTRA crashkernel=128M"
答案2
问题可能是你的 RAM 太低。它应该大于 2GB,否则你必须更改 GRUB 参数以接受crashkernel=128M
并检查
cat /sys/kernel/kexec_crash_loaded
它应该是1
。