Sumário executivo
Você provavelmente deseja instalar o pacote chamado linux-headers-generic
.
Se a execução uname -r
fornecer algo diferente de generic
depois do número da versão, substitua por generic
in linux-headers-generic
. (Pode ser server
ou generic-pae
em algumas instalações de algumas versões do Ubuntu, e existem alguns outros "sabores" ocasionais do kernel)
Como você provavelmente precisa disso para poder criar um driver (que pode ser automatizado, você pode não estar "construindo você mesmo"), é uma boa ideia instalar build-essential
também para torná-lo, para que você provavelmente tenha todas as ferramentas necessárias .
Explicação completa
Que eu saiba, nenhum sistema operacional possui um pacote chamado Linux-kernel-devel
. Isso ocorre por dois motivos:
- Os nomes de pacotes iniciados com letras maiúsculas são extremamente raros, para qualquer sistema operacional semelhante ao Unix.
- Os sistemas operacionais GNU / Linux normalmente nomeiam seus pacotes relacionados ao kernel, de modo que os nomes contenham a palavra kernel ou a palavra linux , mas não os dois. (No Ubuntu, é a palavra linux .)
É comum que pacotes relacionados ao kernel em sistemas que usam o Red Hat Package Manager ( rpm
) e utilitários relacionados tenham kernel
o nome de seus pacotes. Por exemplo, a Mageia possui vários pacotes cujos nomes começam kernel
e terminam em devel
. Esses pacotes quase sempre (na Mageia e em qualquer sistema operacional que os possua) fornecem os arquivos de cabeçalho necessários para criar drivers a partir da fonte para uso com o kernel. Eles também podem fornecer utilitários relacionados para facilitar. Estes pacotes:
- que não fornecer o código fonte completo do kernel. Isso é fornecido por outros pacotes.
- que não fornecem, um kernel utilizável pré-compilados. Isso é fornecido por outros pacotes.
- que não fornecer um compilador ou a maioria das outras ferramentas finalidade de construção. Esses também são fornecidos por outros pacotes.
No Ubuntu, como pode ser visto na lista aqui , os pacotes que fornecem cabeçalhos de kernel têm nomes que começam com linux-headers
. Geralmente o pacote correto para instalar é linux-headers-generic
. No entanto, para ter certeza de qual pacote instalar para obter os cabeçalhos que correspondem ao seu kernel atualmente em execução, execute:
uname -r
Você obterá resultados parecidos com:
3.5.0-36-generic
Ou seja, você terá um número de versão (que incluirá .
caracteres e geralmente pelo menos um -
), seguido por a -
, seguido por uma ou mais palavras indicando que tipo de kernel você está executando.
Se você apenas deseja que os cabeçalhos da versão específica em execução agora, você pode instalar o pacote cujo nome é linux-headers-*
onde *
é substituído pela saída completa de uname -r
. Por exemplo, no meu sistema, eu poderia executar:
sudo apt-get update && sudo apt-get install linux-headers-3.5.0-36-generic
Eu poderia até automatizar:
sudo apt-get update && sudo apt-get install linux-headers-`uname -r`
Essas abordagens são equivalentes, mas geralmente não são o melhor caminho a percorrer.
Em vez disso, você geralmente desejará instalar o metapacote que sempre fornece os cabeçalhos do kernel mais recentes como uma atualização (dependendo perpetuamente de qualquer pacote de cabeçalho mais recente). Isso é paralelo ao modo como o kernel compilado e em execução é instalado e atualizado. Para fazer isso, observe apenas a parte da uname -r
saída após o número da versão. Ou seja, se uname -r
você der 3.5.0-36-generic
, pegue apenas a generic
parte.
Em seguida, instale o pacote chamado linux-headers-*
where *
é substituído por essa parte. Então, no meu sistema, seria linux-headers-generic
e uma maneira de instalá-lo seria:
sudo apt-get update && sudo apt-get install linux-headers-generic
Para a maioria das pessoas é linux-headers-generic
, mas dependendo do que Ubuntu liberar você está funcionando, o que a arquitetura eo tipo de dispositivo que você está executando-o em, e como ele é instalado e configurado, outras possibilidades incluem generic-pae
, highbank
, omap
, server
, e virtual
.
Pacotes relacionados
Os arquivos de cabeçalho facilitam o desenvolvimento e a compilação / construção de software que utiliza os recursos fornecidos pelo software cujos arquivos de cabeçalho estão sendo usados. O motivo mais comum para você precisar dos cabeçalhos do kernel é se você deseja criar um driver (um módulo do kernel) a partir do código-fonte. Algumas aplicações, como VMware e VirtualBox, às vezes exigem isso e automatizam a compilação.
Além dos arquivos de cabeçalho, para compilar o software, é necessário um compilador e outras ferramentas. Para maximizar a probabilidade de você ter as ferramentas necessárias, é uma boa ideia instalar o build-essential
pacote também.
É incomum alguém precisar do código fonte completo do kernel (a menos, é claro, que você esteja planejando criar seu kernel a partir do código-fonte). Mas se você precisar, precisará instalar outro pacote também. No Ubuntu, o pacote para o código fonte completo do kernel é chamado linux-source
. (Isso está de acordo com a convenção Debian / Ubuntu de nomear pacotes que fornecem partes substanciais do kernel Linux em linux
vez de kernel
).
Se você ainda tiver problemas
Se você tentar instalar qualquer um desses pacotes, mas tiver problemas, e precisar de ajuda, precisará incluir o texto completo e exato do Terminal, incluindo as linhas em que você digitou os comandos. A melhor maneira de fornecer isso é editando sua pergunta, mas se for muito longa, você pode colá-la em algum lugar como http://paste.ubuntu.com e fornecer a URL onde podemos acessá-la.
Se você comentar esta pergunta, serei notificado. Você pode editar sua pergunta e também comentar aqui para chamar a atenção para as informações fornecidas na sua pergunta. (É importante manter informações importantes em perguntas e respostas.) Boa sorte!