Como instalo os arquivos de cabeçalho do kernel?

85

Eu quero escrever um driver de dispositivo, mas não é possível encontrar o arquivo de cabeçalho, alguém pode me ajudar a encontrá-los? Além disso, se alguém puder apontar alguns links importantes do site que seriam realmente apreciados

codificador
fonte

Respostas:

118

Você deve conseguir instalar os arquivos de cabeçalho do kernel para o kernel atualmente em execução executando o seguinte em um terminal:

sudo apt-get install linux-headers-$(uname -r)

Em geral, os pacotes de cabeçalho do kernel são nomeados linux-header- * onde "*" indica a versão e variante (genérico, servidor, etc.).

JanC
fonte
3
hey obrigado, mas você poderia me dizer o que faz genérico, servidor, etc significa que eu quero escrever (driver kernel)
codificador
8
Isso não instalará os cabeçalhos para futuras atualizações automaticamente e você precisará executar novamente este comando sempre. Portanto, é recomendável instalar o metapacote, como descrito em outra resposta .
gertvdijk
Nota: isso não os coloca no caminho de inclusão do GCC, você ainda precisa -I.
Ciro Santilli publicou em 8/08/15
11
Nota: Para que isso funcione, a linha apropriada da deb-srclinha deve estar presente /etc/apt/sources.list.
Vorac
87

Você pode apenas digitar:

sudo apt-get install linux-headers-generic

se você estiver em uma instalação da área de trabalho. O apt-get resolverá as dependências e instalará a versão correta dos cabeçalhos do kernel.

Alexandre Teles
fonte
15
e Ubuntu também irá atualizá-los quando uma nova versão sai
CSQ
3
Ou linux-headers-virtualse o seu executando uma VM em um exemplo OpenStack ...
BSchlinker
11
No Debian Wheezy, recebo a mensagem de erro "O pacote linux-headers-generic não está disponível, mas é referido por outro pacote. [...] E: O pacote 'linux-headers-generic' não tem candidato a instalação"
IQAndreas
4
@IQAndreas o linux-headers-genericpacote é específico do ubuntu. No Debian você deve usarsudo apt-get install linux-headers-$(uname -r)
Alexandre Teles
14

Isso deve cobrir outro problema quando: o kernel em execução é obsoleto, o que significa que não está mais no repositório nem em seus cabeçalhos. Portanto, a melhor coisa a fazer é atualizar o kernel para a última versão no repositório.

linux-genericé um meta pacote para manter a versão atual do kernel e seus cabeçalhos :

sudo apt-get update
sudo apt-get install linux-generic

Nota: Dependendo da edição do Ubuntu, veja se você precisa linux-lowlatency(Ubuntu Studio) linux-signed-genericou linux-virtual.

user.dz
fonte
11
Nenhuma das outras soluções funcionou para mim ao tentar instalar um driver. Te agradece.
Sopalajo de Arrierez
11
quase equivalente para o debian é chamado linux-headers-amd64(para sistemas amd64, obviamente)
hanshenrik
1

Ou se você possui o aptitude instalado: sudo aptitude install linux-headers-$(uname -r)

user1527227
fonte
5
Essencialmente a mesma coisa.
angular
-1

estes comandos devem funcionar:

sudo apt-get dist-upgrade -y
systemctl reboot
sudo apt-get install linux-headers-$(uname -r)
sudo apt-get upgrade linux-headers-$(uname -r)

para obter melhores instruções, confira este vídeo

Zen Alex
fonte