我试图通过一些编辑来编译最新的内核。
在做的时候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,有两种可能的解决方法:
根据上面链接的帖子以及我自己的经验,删除有问题的代码是一种选择。如果您编辑 drivers/staging/lustre/lustre/libcfs/module.c (从内核源代码所在的目录)并搜索
IOC_LIBCFS_PING_TEST
,您可以删除整个 case 块。 (如果您不熟悉 C 代码,请一直删除到下一次出现 的行return 0;
)这就是我所做的,重新编译后我能够安装模块。
编辑 .config 文件:您的 .config 可能指定各种 Lustre 组件应编译为模块。编辑内核根目录中的.config,然后搜索以下行
CONFIG_LUSTRE_FS=m
将“m”更改为“n”,这应该会阻止模块被编译。我自己还没有测试过这个修复方法。
您也可以等到这个补丁进入内核源代码,但已经过去了大约一个月。