我想从官方源代码树 (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
此后内核按预期启动。