Come ottengo il codice sorgente del kernel?

22

Sto pensando di scrivere alcuni driver di periferica e ho bisogno di ottenere il sorgente del kernel di Linux. La mia versione del kernel Linux è 3.2.0-23-generic-pae e ho scaricato l'immagine da questo . In molti degli articoli che ho letto, mi dice che ho bisogno di avere l'intero albero del kernel per iniziare a inserire nuovi moduli.

È sufficiente scaricare questa immagine e incollarla nella cartella usr/src/ o devo fare qualcos'altro?

    
posta Sab 05.07.2012 - 07:41
fonte

4 risposte

26

Ciò otterrà la fonte del kernel di riserva:

apt-get source linux-source
  • link

Puoi controllare quale versione del kernel è in esecuzione in questo modo:

uname -r

Che stamperà qualcosa come:

3.13.0-46-generic

Puoi trovare un elenco delle versioni attuali del pacchetto sorgente disponibili sul tuo sistema tramite:

apt-cache search linux-source

Per ottenere la versione upstream del kernel:

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

Nel link precedente, 'trusty' è il nome in codice per la versione di Ubuntu. Puoi trovare il nome in codice per la versione di Ubuntu che hai installato tramite:

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

è il modo più semplice. Scaricherà la fonte dal repository e sarà la stessa della versione in esecuzione (supponendo che non l'abbia già personalizzata).

Ma se vuoi scoprire dove viene mantenuta la fonte, puoi eseguire:

apt-cache showsrc linux

Cerca l'attributo 'Vcs-' (sistema di controllo della versione). Di solito è un git (Vcs-Git) o ​​un repository mercuriale.

Nota: questi comandi funzionano con qualsiasi pacchetto. Basta sostituire 'linux' con il pacchetto a cui sei interessato. Inoltre, notare che apt-get source non ha bisogno dell'accesso sudo e scaricherà l'origine nella directory corrente.

    
risposta data Brendan McGrath 26.02.2015 - 01:20
fonte
3

Scegline uno solo da:

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

Se ti viene detto di fornire alcuni URL "fonti" nel tuo sources.list , vai a modificare il tuo file /etc/apt/sources.list e rimuovere il commento dalla riga deb-src desiderata, ad esempio (se stai utilizzando Xenial):

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

La rimozione di # su quest'ultima riga abilita i repository di sorgenti per il download, inclusi i sorgenti del kernel.

Nota:

  • Utilizza strumenti moderni; evita apt-get .
  • Questi comandi scaricano il codice sorgente per il tuo kernel corrente (nel mio caso 4.4.0-75-generic per esempio).
  • Una volta scaricati nella directory di sistema, i file vengono memorizzati in /usr/src/linux-source-4.4.0/ (ad esempio).
risposta data Tim 18.06.2017 - 23:18
fonte
2

Scarica l'origine direttamente dal Launchpad

Stranamente tutti raccomandano apt-get source che non funziona il più delle volte se stai cercando una versione specifica del kernel:

Supponiamo di aver bisogno del kernel source per 3.19.0-58:
apt-get source linux-image-3.19.0-58-generic otterrà il sorgente per l'ultimo kernel della serie: 3.19.0-80 in questo caso, che non è quello che hai chiesto.

Quindi hai due opzioni:

1) Rinuncia, installa il kernel 3.19.0-80 e usa apt-get source

2) Ottieni l'origine direttamente dal launchpad:

  • Inseriscili in una nuova directory, decomprimi con dpkg-source -x *.dsc

Note:

  • Ci deve essere un modo migliore.
  • Puoi ottenere la versione che desideri da git, ma ti aspetta un grande download. Vedi "Ottenere i sorgenti del kernel per una versione di Ubuntu usando git" in Codice sorgente del kernel Wiki di Ubuntu .
risposta data lemonsqueeze 23.07.2017 - 16:39
fonte

Leggi altre domande sui tag