Onde / qual é a fonte real do kernel?

7

Estou seguindo este para aprender a compilar o kernel. Eu usei

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

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

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 $ 

Na página mesmo , é mencionado:

  

Construir o kernel é muito fácil. Altere 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 de origem do kernel".

É o diretório atual (onde eu corri apt-get source ... e onde eu 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 $ 
    
por sps 16.10.2015 / 09:24

3 respostas

8

Do Debian Wiki :

  

Pacotes de código-fonte fornecem todos os arquivos necessários para compilar ou criar o software desejado.

     

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

     
  • O tarball ascendente com .tar.gz terminando

  •   
  • 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 do upstream, mais todos os arquivos criados para o pacote Debian.

         
    • Isso tem um .debian.tar.gz (formato de origem: 3.0)
    •   
    • ou um final .diff.gz (formato de origem: 1.0)
    •   
  •   

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

  • "linux-lts-vivid-3.19.0": o kernel real , corrigido a partir do tarball ascendente "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 no código fonte do upstream, mais 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 ".dsc" terminando. 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 arquivo tar upstream com terminação ".tar.gz" (lembre-se que na minha experiência nem sempre é um arquivo ".tar.gz", ele pode estar em formatos ligeiramente diferentes, como ".tar.xz");

Quando você executa apt-get source linux-image-$(uname -r) , o tarball do upstream é automaticamente corrigido 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
# ...
    
por kos 16.10.2015 / 10:02
4

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

Sobre os outros arquivos:

No tarball linux-lts-vivid_3.19.0.orig.tar.gz você pode encontrar o kernel "vanilla", como liberado pelo desenvolvedor; para este kernel os desenvolvedores do Ubuntu adicionaram patches, drivers, coisas que foram coletadas no diff que é compactado em linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz .

    
por Rmano 16.10.2015 / 09:59
4

Hmmm. Quando você executa o comando

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

o comando deve automaticamente extrair os tarballs de origem e corrigi-los para criar um diretório chamado após seu kernel. No seu caso, parece que ele é chamado de 'linux-lts-vivid-3.19.0' - ele está lá em sua lista 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

    
por Nick Veitch 16.10.2015 / 10:01