Como criar arquivos / usr / src / linux-headers- {version}

2

Eu estou tentando compilar um kernel personalizado para a placa Jetson TK1 da Nvidia, e parece que, assim como o próprio kernel (zImage), eu precisarei de /usr/src/linux-headers-{version} e /lib/modules/{version} .

No entanto, não consigo ver como criar os cabeçalhos do Linux. Eu tentei executar make headers_install , mas não parece criar o mesmo tipo de saída como o que eu vejo em outros diretórios /usr/src/linux-headers .

Eu vi outras perguntas semelhantes, como aqui , no entanto, isso pressupõe que você esteja criando a mesma versão que está executando, onde estou tentando construir com uma LOCAL_VERSION diferente.

Estou partindo de uma distribuição "Linux4Tegra", no entanto, estou tentando criar um sistema personalizado baseado no Ubuntu Core.

Para esclarecer , estou tentando criar um kernel com minha própria LOCAL_VERSION, ou seja, minha própria versão, não uma versão existente em qualquer repositório. Eu gostaria de gerar os cabeçalhos que correspondem a isso. Então, instalar um pacote linux-headers-xxx não resolverá meu problema.

Minha pergunta é como esses pacotes são criados inicialmente a partir da fonte do Linux?

Quando olho para os arquivos nos diretórios de cabeçalhos existentes, ele contém referências a essa versão do kernel, portanto estou assumindo que isso foi gerado a partir dessa versão da origem do Linux. Como posso gerar isso? Quando alguém está compilando uma versão do kernel, certamente eles geram esses arquivos de alguma forma?

    
por Alex 16.03.2016 / 07:27

2 respostas

4

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.

    
por 18.02.2018 / 16:41
1

Executar sudo apt-get install linux-headers-generic

    
por 16.03.2016 / 07:37