0

系统为CentOS 6.3。

我已经编译了一个新内核并将生成的 rpm 安装在目标机器上。从内核启动时,我收到问题标题中的错误。

我提取了相应的 initramfs 并比较了以下输出:

   modprobe --dump-modversions /path/to/scsi_wait_scan.ko

在相应的 /boot/ symvers -* 中包含条目。所有符号校验和都适合,包括module_layout

有没有办法从内核本身中提取符号?

4

1 回答 1

0

我发现了问题。

简短的回答

问题是我在已经安装的内核 rpm (A) 上安装了内核 rpm (B),而没有先将其删除。

详细解答

scsi_mod.ko仅由 (A) 拥有。安装 (B) 时,scsi_mod.ko位于 /lib/modules/ 中。在 (B) 的安装后脚本中创建 inramfs 时。depmod 决定scsi_wait_scan.ko取决于scsi_mod.ko,而两者都针对不同的配置进行构建。

稍后在启动机器时,内核开始运行 initramfs。这反过来 modprob'ed scsi_wait_scan.ko。modprobe 尝试作为结果加载scsi_mod.ko,这不适合当前内核,从而导致我看到的错误。

于 2012-12-19T11:39:58.087 回答