Resumo executivo
Você provavelmente deseja instalar o pacote chamado linux-headers-generic
.
Se a execução de uname -r
der a você algo diferente de generic
após o número da versão, substitua-o por generic
in linux-headers-generic
. (Isso pode ser server
ou generic-pae
em algumas instalações de algumas versões do Ubuntu, e há 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 idéia instalar o build-essential
também para que você possa provavelmente tem todas as ferramentas necessárias.
Explicação completa
No melhor de meu conhecimento, nenhum sistema operacional possui um pacote chamado Linux-kernel-devel
. Isso é por dois motivos:
- Os nomes dos pacotes que começam 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 para que os nomes contenham a palavra kernel ou a palavra linux , mas não ambos. (No Ubuntu, é a palavra linux .)
É comum que os pacotes relacionados ao kernel em sistemas que usam o Gerenciador de Pacotes da Red Hat ( rpm
) e utilitários relacionados tenham kernel
no nome de seus pacotes. Por exemplo, a Mageia tem inúmeros pacotes cujos nomes começam com kernel
e terminar em devel
. Esses pacotes quase sempre (na Mageia e em qualquer SO que os tenha) fornecem os arquivos de cabeçalho necessários para construir drivers a partir do código fonte para uso com o kernel. Eles também podem fornecer utilitários relacionados para facilitar. Estes pacotes:
- não fornece o código-fonte completo do kernel. Isso é fornecido por outros pacotes.
- o não fornece um kernel utilizável pré-compilado. Isso é fornecido por outros pacotes.
- não fornece um compilador ou a maioria das outras ferramentas de criação de propósito. 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 possuem nomes que começam com linux-headers
. Normalmente, 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ê terá uma saída parecida 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 -
, seguido por uma ou mais palavras indicando qual tipo de kernel você estão em execução.
Se você apenas quiser os cabeçalhos da versão específica que está executando agora, poderá instalar o pacote cujo nome é linux-headers-*
, em que *
é substituído pela saída total de% código%. Por exemplo, no meu sistema, posso executar:
sudo apt-get update && sudo apt-get install linux-headers-3.5.0-36-generic
Eu poderia até automatizá-lo:
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 seguir.
Em vez disso, você geralmente vai querer instalar o metapacote que sempre fornece os mais novos cabeçalhos de kernel como uma atualização (por perpetuamente dependendo do pacote de cabeçalho mais recente). Isso é semelhante ao modo como seu kernel compilado e em execução é instalado e atualizado. Para fazer isso, observe apenas a parte da saída de uname -r
após o número da versão. Ou seja, se uname -r
der a você uname -r
, leve apenas a parte 3.5.0-36-generic
.
Em seguida, instale o pacote chamado generic
, em que linux-headers-*
é substituído por essa parte. Então, no meu sistema, seria *
e uma maneira de instalá-lo seria executar:
sudo apt-get update && sudo apt-get install linux-headers-generic
Para a maioria das pessoas, é linux-headers-generic
, mas dependendo de qual versão do Ubuntu você está executando, qual arquitetura e tipo de dispositivo você está usando, e como ela é instalada e configurada, outras possibilidades incluem linux-headers-generic
, generic-pae
, highbank
, omap
e server
.
Pacotes relacionados
Arquivos de cabeçalho facilitam o desenvolvimento e compilação / construção de software que utiliza recursos fornecidos pelo software cujos arquivos de cabeçalho estão sendo usados. O motivo mais comum que você pode precisar de cabeçalhos de kernel é se você vai construir um driver (um módulo de kernel) a partir do código-fonte. Alguns aplicativos, como o VMware e o VirtualBox, às vezes exigem isso e automatizam a construção.
Além dos arquivos de cabeçalho, para construir software, um compilador e outras ferramentas são necessárias. Para maximizar a probabilidade de você ter as ferramentas necessárias, é uma boa idéia instalar o pacote virtual
também.
É incomum que alguém precise do código fonte completo do kernel (a menos, é claro, que você esteja planejando construir seu kernel a partir do código-fonte). Mas se você precisar disso, terá que instalar outro pacote também.No Ubuntu, o pacote para código fonte completo do kernel é chamado build-essential
. (Isto está de acordo com a convenção Debian / Ubuntu de nomear pacotes que fornecem partes substanciais do kernel Linux linux-source
ao invés de linux
.)
Se você ainda tiver problemas
Se você tentar instalar algum desses pacotes, mas tiver problemas e quiser ajuda, terá que incluir o texto completo e exato do Terminal, incluindo as linhas nas quais você digitou comandos. A melhor maneira de fornecer isso é editando sua pergunta, mas se ela for muito longa, você pode colá-la em algum lugar como o link e nos fornecer o URL onde podemos acessá-lo.
Se você comentar esta questão, serei notificado. Você pode editar sua pergunta e também comentar aqui para chamar a atenção para as informações que você forneceu em sua pergunta. (Informações importantes são mantidas em perguntas e respostas.) Boa sorte!