Como obtenho o código-fonte do kernel?

22

Estou planejando gravar alguns drivers de dispositivo e preciso obter a origem do kernel do Linux. Minha versão do kernel Linux é 3.2.0-23-generic-pae e eu baixei a imagem de isso . Em muitos dos artigos que li, ele me diz que preciso ter toda a árvore do kernel para começar a inserir novos módulos.

É suficiente fazer o download desta imagem e colá-la na pasta usr/src/ ou preciso fazer outra coisa?

    
por Sab 05.07.2012 / 07:41

4 respostas

26

Isto irá obter a fonte do kernel padrão:

apt-get source linux-source

Você pode verificar qual versão do kernel está rodando assim:

uname -r

Que imprimirá algo como:

3.13.0-46-generic

Você pode encontrar uma lista das versões atuais do pacote de fontes disponíveis em seu sistema:

apt-cache search linux-source

Para obter a versão original do kernel:

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git

No link acima, 'trusty' é o codinome da versão do Ubuntu. Você pode descobrir o codinome da versão do Ubuntu que você instalou via:

cat /etc/lsb-release
    
por Bryce 05.07.2012 / 08:33
7
apt-get source linux

é o caminho mais fácil. Ele fará o download do código-fonte do seu repositório - e será o mesmo que a versão que você está executando (supondo que você ainda não o tenha personalizado).

Mas se você quiser encontrar onde a fonte é mantida, você pode executar:

apt-cache showsrc linux

Procure o atributo 'Vcs-' (sistema de controle de versão). Geralmente será um repositório do git (Vcs-Git) ou mercurial.

Nota - estes comandos funcionam com qualquer pacote. Simplesmente substitua 'linux' pelo pacote em que você está interessado. E note também que 'apt-get source' não precisa de acesso sudo e irá descarregar a fonte em seu diretório atual.

    
por Brendan McGrath 26.02.2015 / 01:20
3

Basta escolher um de:

sudo apt install linux-source  # downloads into system directory
sudo apt source linux-source  # downloads into working directory

Se for solicitado que você forneça alguns URLs de 'fontes' em seu sources.list , edite seu arquivo /etc/apt/sources.list e descomente a linha deb-src desejada, por exemplo (se estiver executando o Xenial):

deb http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted
# deb-src http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted

Remover o # desta última linha permite repositórios de fontes para download, incluindo origens do kernel.

Observações:

  • Use ferramentas modernas; evite apt-get .
  • Esses comandos baixam o código-fonte do seu kernel atual (no meu caso, 4.4.0-75-generic , por exemplo).
  • Quando baixados no diretório do sistema, os arquivos são armazenados em /usr/src/linux-source-4.4.0/ (por exemplo).
por Tim 18.06.2017 / 23:18
2

Faça o download da fonte diretamente do Launchpad

Por estranho que pareça, todos recomendam apt-get source , o que não funciona na maioria das vezes, se você estiver procurando por uma versão específica do kernel:

Digamos que você precise de fonte do kernel para 3.19.0-58: O apt-get source linux-image-3.19.0-58-generic obterá o código para o kernel mais recente da série: 3.19.0-80 neste caso, o que não é o que você pediu.

Então você tem duas opções:

1) Desista, instale o kernel 3.19.0-80 e use apt-get source

2) Obtenha fonte diretamente do launchpad:

  • Coloque-osemumnovodiretório,descompactecomdpkg-source-x*.dsc

Notas:

  • Devehaverumamaneiramelhor.
  • Vocêpodeobteraversãoquedesejadogit,masteráumgrandedownload.Veja"Obtendo as fontes do kernel para uma versão do Ubuntu usando o git" em Código fonte do kernel Wiki do Ubuntu .
por lemonsqueeze 23.07.2017 / 16:39