我为armv6l构建了一个最小的Busybox initramfs系统。内核版本是3.12.20。如果我在没有CONFIG_ARM_UNWIND | Enable stack unwinding support (EXPERIMENTAL)
的情况下编译内核,那么通过SSH连接到系统并运行以下脚本:
#!/bin/sh
while :
do
dmesg
done
短时间后屏幕上会显示“已杀”信息,系统将无法使用。如果我看一下控制台,我看到OOM杀手杀死了/ bin / sh。我没有必要运行脚本来触发此行为,有时登录后几乎立即断开SSH连接。
之后我可以登录系统,但shell不可用,所以我无法运行任何命令。但是,运行脚本将始终触发问题。我做了一些测试,发现在OOM杀手杀死shell之前,几乎所有的512 MB RAM都是免费的,因此OOM杀手没有理由杀死任何东西。
在做了一些研究后,我仍然不明白堆栈展开支持是什么,但是该功能是实验性的,所以我不希望我的系统需要它才能使用。
任何人都可以解释为什么功能系统需要此功能吗?
答案 0 :(得分:0)
config ARM_UNWIND
bool "Enable stack unwinding support (EXPERIMENTAL)"
depends on AEABI && EXPERIMENTAL
default y
help
This option enables stack unwinding support in the kernel
using the information automatically generated by the
compiler. The resulting kernel image is slightly bigger but
the performance is not affected. Currently, this feature
only works with EABI compilers. If unsure say Y.
所以通常任何arm内核都应该能够在没有ARM_UNWIND支持的情况下运行,但是当然可能会出现一些情况,你的设置会触发一个不常见的错误,但我不认为这是你的情况。
检查内核日志,了解可以了解的问题。