construindo erro de ciclo de dependência da causa do kernel

1

Eu estava tentando compilar o kernel mais recente com algumas edições.

ao fazer 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

Qual é o motivo disso? Como faço para corrigir isso?

Editar:

Eu fiz as seguintes alterações no kernel para adicionar um novo syscall para fins de aprendizado

Makefile

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

adicionado hello / folder

syscall_64.tbl

546 x32 hello           sys_hello

syscall.h

asmlinkage long sys_hello(void);

Makefile

obj-y:= hello.o

hello.c

#include <linux/kernel.h>

asmlinkage long sys_hello(void)
{
    printk("Hello world\n");
    return 0;
}
    
por InQusitive 28.11.2015 / 18:18

1 resposta

0

Eu encontrei este mesmo problema a partir de hoje, enquanto tentava compilar o kernel net-next.

Minha pesquisa gerou uma resposta a partir daqui: link

O módulo Lustre está causando o problema de dependência, e o desenvolvedor por trás dele deve ter produzido e enviado um patch até agora, mas parece que o patch não foi incluído nas árvores rc net-next (ou kernel principal) .

Existem duas soluções possíveis para isso, se você não precisar do Lustre:

  1. De acordo com a postagem vinculada acima e com minha própria experiência, remover o código incorreto é uma opção. Se você editar drivers / staging / lustre / lustre / libcfs / module.c (do diretório onde a fonte do kernel está) e procurar por IOC_LIBCFS_PING_TEST , você pode deletar todo o bloco de casos. (Se você não estiver familiarizado com o código C, elimine todo o caminho até a linha com a próxima ocorrência de return 0; )

    Foi o que fiz e consegui instalar os módulos após recompilar.

  2. Edite o arquivo .config: Seu .config provavelmente especifica que vários componentes do Lustre devem ser compilados como módulos. Edite o arquivo .config na raiz do diretório do kernel e procure a linha

    CONFIG_LUSTRE_FS=m

Altere o "m" para "n" e isso deve impedir que o módulo seja compilado. Eu não testei isso como uma solução.

Você também pode esperar até que este patch chegue à fonte do kernel, mas já passou cerca de um mês.

    
por 07.12.2015 / 23:20

Tags