Nenhum script de construção disponível ao compilar o módulo fora da árvore de código-fonte do Linux

3

Eu estou tentando construir um módulo básico fora da árvore fonte do Linux (3.18.0-rc6). Quando eu o construo, recebo um erro dizendo que não foi possível encontrar scripts /...

Minha configuração de diretório é semelhante a esta

mymodule/
  src/
    file.c
linux/
  .git/
  # rest of the source tree

Estou executando: make -C ../linux SUBDIRS=$(pwd)/src modules do mymodule.

Este é o erro real:

make: Entering directory '/home/me/linux'
  Building modules, stage 2.
  MODPOST 1 modules
/bin/sh: scripts/mod/modpost: No such file or directory
scripts/Makefile.modpost:90: recipe for target '__modpost' failed
make[1]: *** [__modpost] Error 127
Makefile:1384: recipe for target 'modules' failed
make: *** [modules] Error 2
make: Leaving directory '/home/me/linux'

Existe uma configuração para fazer Make look in linux / para os scripts?

    
por David 25.11.2014 / 07:29

2 respostas

2

Para construir um módulo do kernel, você precisa de mais do que uma fonte de kernel descompactada. Você precisa de alguns programas complementares e arquivos de cabeçalho gerados durante a construção do kernel. O makefile está procurando modpost no lugar certo, mas ainda não está lá. As distribuições normalmente enviam isso em um pacote chamado linux-headers-VERSION ou kernel-headers-VERSION ou algo semelhante.

Primeiro, você precisa configurar o kernel. A versão do kernel e a configuração do kernel devem coincidir com o kernel com o qual você vai executar o módulo. Se você tiver o arquivo .config de algum lugar, copie-o para o diretório do kernel. Em seguida, construa os arquivos necessários para construir módulos extras, execute o seguinte comando no diretório de origem do kernel:

make modules_prepare

Em seguida, você pode ir para o diretório de origem de um módulo e executar

make -C ../linux M=$PWD/src

Veja Construindo módulos externos na documentação do kernel ( Documentation/kbuild/modules.txt ) para mais informações.

    
por 26.11.2014 / 01:36
0

Ao construir um kernel personalizado, a maioria das pessoas NÃO CONSTRÓI a fonte dentro do tarball de origem. Por favor, considere o uso de um link macio:

Comovocêpodever,olink/usr/src/linuxapontaparaodiretório/usr/src/linux-3.12.21-gentoo-r1Assim,aoemitirocomandomake,asaídaresultanteécolocadanodiretóriodenívelsuperiordaárvoredeconstrução,quenãopoluiafonteoriginal.Paracriaroproblemadolink(comoroot):

ln-sf/usr/src/linux-_some-kernel-version_/usr/src/linux&&cd/usr/src/linux

Depoisdefazerisso,consultearespostadeGilesparaconcluiratarefa.

Referência

  1. Kernel / Upgrade - Wiki do Gentoo
por 26.11.2014 / 17:53