Os kernel-header
pacotes de distribuição contêm, como o próprio nome indica, apenas os arquivos de cabeçalho do kernel (mais o encanamento necessário) necessários para criar software como módulos do kernel.
Você não deve esperar encontrar arquivos binários em um diretório de origem do kernel , exceto na saída da compilação. (Se você mesmo configurar e criar um kernel, o diretório de origem do kernel também conterá os objetos compilados, módulos, o próprio kernel construído e alguns outros bits e partes binários que o fazem funcionar.)
KConfig
Arquivos são uma 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, é todo (principalmente) código-fonte C, arquivos de cabeçalho Makefile
es. Existem alguns scripts auxiliares aqui e ali, e também fonte de montagem.
Os pacotes de cabeçalho (o que você instalou) contêm apenas a parte do cabeçalho acima (e não tudo isso - apenas os cabeçalhos "exportados") e parte da infraestrutura de construção. Então, o que você está vendo é esperado. Os pacotes de cabeçalho não contêm código-fonte C (exceto alguns stubs e código de infraestrutura de compilação). O objetivo de ter esse tipo de pacote é economizar espaço (e largura de banda) - toda a árvore de fontes do kernel Linux é bastante grande e completamente desnecessária se você não pretender compilar o kernel. Os pacotes de cabeçalho são criados 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.)
Endereçando seu comentário: os pacotes de cabeçalho não são realocados em lugar algum. Eles são criados para versões específicas do kernel, empacotadas em um diretório específico, e é isso. É apenas um conjunto de arquivos. (Observe que os pacotes de cabeçalho não têm necessariamente a mesma versão dos pacotes binários estáveis do kernel atual - os pacotes de cabeçalho são genéricos e podem ficar atrás do kernel real que você está executando. No entanto, eles não devem ser de um kernel versão mais recente que o kernel atualmente instalado (ou de destino).)
Os binários do kernel instalados geralmente são instalados no /boot
diretório, junto com os binários do carregador de inicialização e os arquivos de configuração. (Às vezes, é 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 carregador de inicialização.)
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ê quiser que o código fonte completo do kernel construa você mesmo, instale-o seguindo as instruções aqui .
Você também pode baixar um tarball de origem kernel.org
e descompactá-lo em algum lugar ( não substitua os arquivos instalados pelo Ubuntu se você usar esse tarball, mantenha suas coisas pessoais e as coisas gerenciadas pelo RPM em separado).
/usr/src/linux
é um local tradicional para colocar fontes do kernel, mas nada impede que você coloque fontes do kernel em outro lugar. Esse caminho também costuma ser 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 existe para simplificar a criação de aplicativos que dependem da fonte do kernel. Você vincula esse caminho ao seu kernel em execução (ou destino) para não precisar especificar as informações exatas da versão ou do caminho ao criar um módulo fora da árvore. Ajuda um monte de distribuições baseadas em origem, pelo menos.
linux-source
contém a fonte upstream,apt-get source linux-image-$(uname -r)
obtém a fonte do kernel com os patches do Ubuntu.