构建内核导致依赖循环错误

构建内核导致依赖循环错误

我试图通过一些编辑来编译最新的内核。

在做的时候sudo make modules_install

 INSTALL virt/lib/irqbypass.ko

  DEPMOD  4.4.0-rc1+

depmod: WARNING: found 2 modules in dependency cycles!
depmod: WARNING: /lib/modules/4.4.0-rc1+/kernel/drivers/staging/lustre/lnet/lnet/lnet.ko in dependency cycle!
depmod: WARNING: /lib/modules/4.4.0-rc1+/kernel/drivers/staging/lustre/lustre/libcfs/libcfs.ko in dependency cycle!
./scripts/depmod.sh: line 57:  1471 Killed                  "$DEPMOD" "$@" "$KERNELRELEASE" $SYMBOL_PREFIX
make: *** [_modinst_post] Error 137

这是什么原因呢?我该如何解决?

编辑:

我在内核中进行了以下更改以添加新的系统调用以用于学习目的

生成文件

core-y          += kernel/ certs/ mm/ fs/ ipc/ security/ crypto/ block/ hello/

添加了 hello/ 文件夹

系统调用_64.tbl

546 x32 hello           sys_hello

系统调用.h

asmlinkage long sys_hello(void);

生成文件

obj-y:= hello.o

你好ç

#include <linux/kernel.h>

asmlinkage long sys_hello(void)
{
    printk("Hello world\n");
    return 0;
}

答案1

今天,我在尝试编译 net-next 内核时遇到了同样的问题。

我的搜索从这里得到了答案:http://comments.gmane.org/gmane.comp.file-systems.lustre.devel/4032

Lustre 模块导致了依赖问题,其背后的开发人员现在应该已经生成并推送了补丁,但该补丁似乎尚未进入 net-next(或主内核)rc 树。

如果您不需要 Lustre,有两种可能的解决方法:

  1. 根据上面链接的帖子以及我自己的经验,删除有问题的代码是一种选择。如果您编辑 drivers/staging/lustre/lustre/libcfs/module.c (从内核源代码所在的目录)并搜索IOC_LIBCFS_PING_TEST,您可以删除整个 case 块。 (如果您不熟悉 C 代码,请一直删除到下一次出现 的行return 0;

    这就是我所做的,重新编译后我能够安装模块。

  2. 编辑 .config 文件:您的 .config 可能指定各种 Lustre 组件应编译为模块。编辑内核根目录中的.config,然后搜索以下行

    CONFIG_LUSTRE_FS=m

将“m”更改为“n”,这应该会阻止模块被编译。我自己还没有测试过这个修复方法。

您也可以等到这个补丁进入内核源代码,但已经过去了大约一个月。

相关内容