
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
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.gz
você 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 diff
arquivo 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