いくつかの編集で最新のカーネルをコンパイルしたいと思います。
ながら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
こんにちはc
#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が必要ない場合は、2つの解決策があります。
上記のリンクと私の経験によると、問題のあるコードを削除することが1つのオプションです。 drivers/staging/lustre/lustre/libcfs/module.c(カーネルソースがあるディレクトリから)を編集して検索すると、
IOC_LIBCFS_PING_TEST
ケースブロック全体を削除できます。 (Cコードを初めて使用する場合は、次の行が表示されるまで削除を続けますreturn 0;
。)これが私がしたことで再コンパイルした後にモジュールをインストールできました。
.configファイルの編集:.configでは、さまざまなLustreコンポーネントをモジュールにコンパイルするように指定できます。カーネルルートで .config を編集し、次の行を検索します。
CONFIG_LUSTRE_FS=m
「m」を「n」に変更すると、モジュールはコンパイルされません。私はこの修正を直接テストしませんでした。
このパッチがカーネルソースに含まれるのを待つこともできますが、約1ヶ月が経過しました。