Onde/qual é a fonte real do kernel?

Onde/qual é a fonte real do kernel?

Eu estou seguindoessepara aprender a compilar o kernel. eu usei

apt-get source linux-image-$(uname -r)

para baixar o código fonte do kernel Linux que estou usando atualmente.

Depois de executar o comando acima, os seguintes arquivos (e diretórios) foram baixados.

user $ ls -l
total 130972
drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0
-rw-rw-r--  1 sps sps  10980684 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz
-rw-rw-r--  1 sps sps      7396 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.dsc
-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz
user $ 

Nomesmopágina é mencionado:

Construir o kernel é bastante fácil. Mude seu diretório de trabalho para a raiz da árvore de origem do kernel e digite os seguintes comandos:

Mas não tenho certeza qual é a "raiz da árvore fonte do kernel".

É o diretório atual (onde executei apt-get source ...e onde tenho os arquivos listados acima)?

Ou é o diretório:

drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0

ou devo extrair o tarball

-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz

Saída para uname -r:

user $ uname -r
3.19.0-30-generic
user $ 

Responder1

DeWiki do Debian:

Pacotes fontefornecer todos os arquivos necessários para compilar ou construir o software desejado.

Consiste, na sua forma mais simples, em três arquivos:

  • O tarball upstream com.tar.gzfinal

  • Um arquivo de descrição com finalização .dsc. Ele contém o nome do pacote, tanto no nome do arquivo quanto no conteúdo (após a palavra-chave Source:).

  • Um tarball, com todas as alterações feitas no código-fonte original, além de todos os arquivos criados para o pacote Debian.

    • Isto tem um.debian.tar.gz(formato de origem: 3.0)
    • ou um.diff.gzfinal (formato fonte: 1.0)

É exatamente o mesmo para o Ubuntu e no seu caso:

  • "linux-lts-vivid-3.19.0": o kernel real, corrigido a partir do tarball upstream "linux-lts-vivid_3.19.0.orig.tar.gz" com as modificações listadas em "linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz";
  • "linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz": um tarball, com quaisquer alterações feitas na fonte original, além de todos os arquivos criados para o pacote Debian;
  • "linux-lts-vivid_3.19.0-30.34~14.04.1.dsc": um arquivo de descrição com final ".dsc". Ele contém o nome do pacote, tanto no nome do arquivo quanto no conteúdo (após a palavra-chave Source:);
  • "linux-lts-vivid_3.19.0.orig.tar.gz": o tarball upstream com final ".tar.gz" (lembre-se de que na minha experiência nem sempre é um arquivo ".tar.gz", pode estar ligeiramente formatos diferentes, como ".tar.xz");

Quando você executa o apt-get source linux-image-$(uname -r), o tarball upstream é corrigido automaticamente com as modificações listadas em "linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz" em "linux-lts-vivid-3.19.0":

% apt-get source linux-image-$(uname -r)
# ...
dpkg-source: info: extracting linux in linux-3.19.0
dpkg-source: info: unpacking linux_3.19.0.orig.tar.gz
dpkg-source: info: applying linux_3.19.0-30.34.diff.gz
# ...

Responder2

A raiz da sua árvore do kernel é o diretório linux-lts-vivid-3.19.0.

Sobre os outros arquivos:

No tarball linux-lts-vivid_3.19.0.orig.tar.gzvocê pode encontrar o kernel "vanilla", conforme lançado pelo upstream; a este kernel os desenvolvedores do Ubuntu adicionaram patches, drivers, alteraram coisas que são coletadas no diffarquivo linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz.

Responder3

Hmmm. Quando você executa o comando

apt-get source linux-image-`uname -r`

o comando deveautomaticamenteextraia os tarballs de origem e corrija-os para criar um diretório com o nome do seu kernel. No seu caso, parece que se chama 'linux-lts-vivid-3.19.0' - está na sua listagem de diretórios.

Então, esse é o diretório de origem, você deve executar:

cd linux-lts-vivid-3.19.0

e continue seguindo as instruções

informação relacionada