我正在使用Buildroot尝试进行自定义内核构建。在构建镜像并在VirtualBox环境中引导后,内核总是在GRUB阶段后发生崩溃。以下是我看到的一般概述:
] CPU: 0 PID: 1 ...
] Hardware name: innotek GmbH ...
] <some registers>
] Call Trace:
] [<c0a1c995>] dump_stack+...
] [<........>] panic+...
] [<........>] do_exit+...
] ...
] Kernel Offset: 0x0 from 0xc0400000 ...
] ---[ end Kernel panic - not syncing: Attempted to kill init! ...
现在,我假设这只是我想要查看的消息的结尾,但是我没有办法查看它(例如:不能Shift-PageUp)。当恐慌发生时,上述文本不会在屏幕上呈现一秒钟。
我首先偶然发现了一个KernelDebuggingTricks page,其中写道:
减缓启动时内核消息的速度
... [Build] 使用以下选项构建内核:
CONFIG_BOOT_PRINTK_DELAY=y
使用以下内核引导参数启动机器:
boot_delay=N
我已确认我的内核(3.16)已经构建了CONFIG_BOOT_PRINTK_DELAY
选项,并尝试在我的GRUB中将boot_delay
设置为10、500和1000毫秒。即使设置了1000毫秒的延迟(并等待了大约5分钟),整个内核崩溃日志消息也会在眨眼间被吐出。
有人对我如何查看内核恐慌的根源有任何建议吗?我现在唯一想到的是手动将睡眠添加到内核代码中(这是我想避免的事情)。