Resposta tardia. Recentemente encontrei esse problema e descobri uma possível resposta.
Suponha que você queira instalar o arquivo de cabeçalho do kernel em /usr/src/linux-headers-4.15.3
. A árvore fonte do kernel compilada está localizada em /path/to/compiled/linux-4.15.3/
primeiro, descompacte uma árvore de código-fonte limpa do kernel
tar xvf linux-4.15.3.tar.xz
cd linux-4.15.3/
segundo, copie o arquivo .config
para o diretório
cp /path/to/compiled/linux-4.15.3/.config .
terceiro, execute-o e exclua o arquivo .config no diretório de origem para obter uma fonte de kernel limpa
make O=/usr/src/linux-headers-4.15.3 oldconfig
rm .config
quarta, execute o modules_prepare
make target
make O=/usr/src/linux-headers-4.15.3 modules_prepare
Finalmente, apague as coisas inúteis e copie as coisas necessárias
rm /usr/src/linux-headers-4.15.3/source
cp /path/to/compiled/linux-4.15.3/Module.symvers /usr/src/linux-headers-4.15.3
Agora, o diretório /usr/src/linux-headers-4.15.3
é capaz de criar o módulo.
Documentação link diga-nos modules_prepare
This will make sure the kernel contains the information required. The target exists solely as a simple way to prepare a kernel source tree for building external modules.
NOTE: "modules_prepare" will not build Module.symvers even if CONFIG_MODVERSIONS is set; therefore, a full kernel build needs to be executed to make module versioning work.