커널을 빌드하면 종속성 주기 오류가 발생합니다.

커널을 빌드하면 종속성 주기 오류가 발생합니다.

약간의 편집을 통해 최신 커널을 컴파일하려고 합니다.

하면서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가 필요하지 않은 경우 가능한 해결 방법은 두 가지가 있습니다.

  1. 위에 링크된 게시물과 내 경험에 따르면 문제가 되는 코드를 제거하는 것이 하나의 옵션입니다. drivers/staging/lustre/lustre/libcfs/module.c(커널 소스가 있는 디렉터리에서)를 편집하고 검색하면 IOC_LIBCFS_PING_TEST전체 케이스 블록을 제거할 수 있습니다 . (C 코드를 처음 사용하는 경우 다음 행이 나타날 때까지 계속 삭제하십시오 return 0;.)

    이것이 내가 한 일이고 다시 컴파일한 후에 모듈을 설치할 수 있었습니다.

  2. .config 파일 편집: .config에서는 다양한 Lustre 구성 요소를 모듈로 컴파일하도록 지정할 수 있습니다. 커널 루트에서 .config를 편집하고 다음 줄을 검색하십시오.

    CONFIG_LUSTRE_FS=m

"m"을 "n"으로 변경하면 모듈이 컴파일되지 않습니다. 나는 이 수정 사항을 직접 테스트하지 않았습니다.

이 패치가 커널 소스에 포함될 때까지 기다릴 수도 있지만 약 한 달이 지났습니다.

관련 정보