调试内核崩溃问题(自定义内核)

调试内核崩溃问题(自定义内核)

我想从官方源代码树 (kernel.org) 编译自定义内核。机器本身运行最新的稳定 RHEL 内核没有问题,但我似乎无法弄清楚为什么它在任何普通内核上都会崩溃。我怀疑这是一个驱动程序问题,但我对调试这个问题还比较陌生。

尝试使用常规配置编译的内核是 2.6.32.55。我还尝试使用以前有效的内核配置进行编译,但没有成功。

机器规格如下:

  • 主板:SuperMicro X9SCI-LN4F Intel Xeon SingleProc SATA
  • CPU:英特尔至强-SandyBridge E3-1270-四核
  • 带有 Adaptec 5405Z 控制器的 RAID-1
  • 硬盘:Seagate Cheetah

当尝试启动到标准内核时,设备映射器初始化时会崩溃,这让我相信这是 RAID 驱动程序的问题。看来标准内核有最新的 aacraid 驱动程序,尽管我尝试使用来自 adaptec.com 的最新版本重新编译内核,但还是出现了同样的问题。

这是我收到的堆栈跟踪。如能提供任何有关如何进一步调试的信息,我将不胜感激。谢谢!

https://s3.amazonaws.com/uploads.hipchat.com/9460/23303/80l8xsnfl7fa7e9/panic2.png

答案1

“试图杀死 init”消息通常是由于无法找到 /sbin/init(或无法执行它)而导致的。

仔细检查root=引导加载程序配置中的参数,确保其指向您/分区的设备,而不是/boot意外指向任何其他地方。

编辑:Redhat 也使用 initrd,因此这可能是另一个问题。因此,如果您配置了 initrd,请确保它/init存在(内核/init在使用 initrd/initramfs 时查找,/sbin/init不使用时查找)

答案2

我能够找出问题所在。在获得更详细的输出后(在 SoftLayer 支持的帮助下,向他们致敬),它显示了 setuproot 的问题。似乎需要设置以下内核配置选项来启用旧式 SYSFS 内容

CONFIG_SYSFS_DEPRECATED_V2=y

此后内核按预期启动。

相关内容