Distribuição kernel-header
packages contém, como o próprio nome indica, apenas arquivos de cabeçalho do kernel (mais o encanamento necessário) que são necessários para construir softwares como módulos do kernel.
Você não deve esperar encontrar arquivos binários em um diretório do kernel source , exceto para a saída de compilação. (Se você configurar e construir um kernel você mesmo, o diretório fonte do kernel também conterá os objetos compilados, módulos, o próprio kernel construído e alguns outros bits binários que o fazem funcionar.)
KConfig
files are a descrição das opções de configuração do kernel (e suas dependências) que estão disponíveis para um determinado diretório / módulo.
Além disso, é tudo (principalmente) código-fonte C, arquivos de cabeçalho e Makefile
s. Existem alguns scripts auxiliares aqui e ali, e a fonte de montagem também.
Pacotes de cabeçalho (o que você instalou) contém apenas a parte cabeçalho do acima (e não tudo isso - somente os cabeçalhos "exportados"), e alguns a infraestrutura de construção. Então, o que você está vendo é esperado. Pacotes de cabeçalho não contêm código-fonte C (exceto alguns stubs e código de infraestrutura de construção). O objetivo de ter esse tipo de pacote é economizar espaço (e largura de banda) - toda a árvore de código-fonte do kernel do Linux é bastante grande e completamente desnecessária se você não pretende compilar o kernel sozinho. Os pacotes de cabeçalho são construídos e enviados por distribuições para fornecer as coisas certas necessárias para construir módulos, mas não mais. (Eles certamente não contêm o kernel compilado.)
Enfrentando seu comentário: os pacotes de cabeçalho não são transferidos para lugar nenhum. Eles são construídos para versões específicas do kernel, empacotados em um diretório específico, e é isso. É apenas um conjunto de arquivos. (Note que os pacotes de cabeçalho não têm necessariamente a mesma versão dos pacotes binários atuais do kernel estável - os pacotes de cabeçalho são genéricos e podem ficar atrás do kernel real que você está executando. Eles não devem, no entanto, ser de um kernel versão mais recente que o kernel atual instalado (ou de destino).
Os binários do kernel instalados são geralmente instalados no diretório/boot
, juntamente com binários do gerenciador de inicialização e arquivos de configuração. (Às vezes, esse é um sistema de arquivos independente, não montado por padrão). O nome exato dos arquivos depende do kernel e da distribuição. (O mesmo acontece com o bootloader.)
Os módulos do kernel instalados residem em subdiretórios de:
/lib/modules/'uname -r'/
Por exemplo, no meu sistema, eles estão atualmente em
/lib/modules/3.1.4-gentoo/
Código-fonte completo do kernel : No Ubuntu, se você quer que as fontes completas do kernel construam um kernel, você deve instalar seguindo as instruções aqui .
Você também pode baixar um tarball de origem de kernel.org
e descompactá-lo em algum lugar (fazer não substituir arquivos instalados pelo Ubuntu se você usar este tarball, manter suas coisas pessoais e as coisas gerenciadas por RPM separadas ).
/usr/src/linux
é um local tradicional para colocar fontes do kernel, mas nada impede que você coloque fontes do kernel em outro lugar. Este caminho também é muitas vezes apenas um link simbólico para um diretório. por exemplo. Eu tenho isso na minha máquina:
$ ls -l /usr/src/linux
lrwxrwxrwx 1 root root 18 Dec 7 17:03 /usr/src/linux -> linux-3.1.4-gentoo
O link simbólico está lá para simplificar a criação de aplicativos que dependem da fonte do kernel. Você vincula esse caminho ao kernel em execução (ou destino) para que não precise especificar informações de versão ou caminho exatas ao criar um módulo fora da árvore. Ajuda um monte de distribuições baseadas em fontes, pelo menos.