Impossível configurar o código fonte do Linux Kernel v3.8.9

0

Estou executando o Linux Mint com o kernel versão 3.8.0-29-generic. Então baixei e extraí o código-fonte do Linux Kernel 3.8.9 e coloquei a pasta no diretório principal. Agora usando o comando make menuconfig no gnome-terminal eu recebo a mensagem de erro:

DALEK linux-3.8.9 # make menuconfig
  HOSTCC  scripts/basic/fixdep
Segmentation fault
make[1]: *** [scripts/basic/fixdep] Error 139
make: *** [scripts_basic] Error 2

Então eu fiz um teste de memória antes de inicializar e não há erros de memória. Então qual é o problema? FTR Estou usando um satélite Toshiba L500 com arquitetura x86_64. Foi sugerido por outra pessoa que a fonte do kernel não está configurada para esta arquitetura ... E se esse for o caso, onde posso encontrar um kernel Linux que funcione para x86_64?

O motivo pelo qual estou tentando fazer isso é preparar o código-fonte do kernel para criar um módulo do kernel: Isso é necessário mesmo com o Kernel já instalado?

    
por Mr X 26.11.2013 / 21:13

2 respostas

0

Não, o código-fonte do kernel é independente de arquitetura. Embora algumas arquiteturas antigas não suportadas (por exemplo, MIPS de 32 bits) possam precisar de patches locais, o x86_64 não é um deles.

Tente aumentar a verbosidade para ver o que isso faz. Talvez o segfault não aconteça no compilador, mas no binário fixdep compilado.

Em ambos os casos, há um grande problema com sua fonte do kernel ou com o seu sistema.

(Você ainda pode experimentar um novo download / descompactar de fontes do kernel, se estiver quebrado de alguma forma, tudo ficará bem)

    
por 26.11.2013 / 21:44
0

Então, aparentemente eu pensei que o script makefile estava usando os cabeçalhos na pasta /usr/src/linux-headers-3.8.0-29-generic/, mas também faz uso dos cabeçalhos do GCC em / usr / lib / gcc / x86_64-linux-gnu / 4.7.3 / include / folder. Acontece que muitos outros obtiveram o mesmo erro (falha de segmentação: Erro 139). E a partir das mensagens de erro estava o arquivo executável fixdep que era um alvo do makefile na pasta / scripts / basic / cujo código-fonte é fixdep.c. Um site disse algo sobre a listagem "CONFIG_MODULE" e notei que usa a função memcmp. Eu tinha definido essa função usando algum código de assembly in-house banal que consegui em algum lugar e coloquei no cabeçalho. Então eu reescrevi que usando código c padrão e que eliminou completamente o erro de segmentação!

Eu acho que o código de assembly embutido pode estar tentando acessar a memória protegida, o que pode causar um erro de segmentação.

    
por 27.11.2013 / 06:37