약간의 편집을 통해 최신 커널을 컴파일하려고 합니다.
하면서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가 필요하지 않은 경우 가능한 해결 방법은 두 가지가 있습니다.
위에 링크된 게시물과 내 경험에 따르면 문제가 되는 코드를 제거하는 것이 하나의 옵션입니다. drivers/staging/lustre/lustre/libcfs/module.c(커널 소스가 있는 디렉터리에서)를 편집하고 검색하면
IOC_LIBCFS_PING_TEST
전체 케이스 블록을 제거할 수 있습니다 . (C 코드를 처음 사용하는 경우 다음 행이 나타날 때까지 계속 삭제하십시오return 0;
.)이것이 내가 한 일이고 다시 컴파일한 후에 모듈을 설치할 수 있었습니다.
.config 파일 편집: .config에서는 다양한 Lustre 구성 요소를 모듈로 컴파일하도록 지정할 수 있습니다. 커널 루트에서 .config를 편집하고 다음 줄을 검색하십시오.
CONFIG_LUSTRE_FS=m
"m"을 "n"으로 변경하면 모듈이 컴파일되지 않습니다. 나는 이 수정 사항을 직접 테스트하지 않았습니다.
이 패치가 커널 소스에 포함될 때까지 기다릴 수도 있지만 약 한 달이 지났습니다.