Dove / quale è l'attuale sorgente del kernel?


8

Sto seguendo questo per imparare a compilare il kernel. ero solito

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

per scaricare il codice sorgente del kernel Linux che sto utilizzando in modo preciso.

Dopo aver eseguito il comando precedente, sono stati scaricati i seguenti file (e directory).

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 $ 

Nella stessa pagina è menzionato:

Costruire il kernel è abbastanza semplice. Cambia la tua directory di lavoro nella radice dell'albero dei sorgenti del kernel e quindi digita i seguenti comandi:

Ma non sono sicuro di quale sia la "radice dell'albero dei sorgenti del kernel".

È la directory corrente (dove ho eseguito apt-get source ...e dove ho i file sopra elencati)?

Oppure, è la directory:

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

o, dovrei estrarre il tarball

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

Uscita per uname -r:

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

Risposte:


8

Dal wiki di Debian :

I pacchetti sorgente ti forniscono tutti i file necessari per compilare o altrimenti creare il software desiderato.

Consiste, nella sua forma più semplice, di tre file:

  • Il tarball a monte con il finale .tar.gz

  • Un file di descrizione con terminazione .dsc. Contiene il nome del pacchetto, sia nel nome del file sia nel contenuto (dopo la fonte: parola chiave).

  • Un tarball, con tutte le modifiche apportate al sorgente upstream, oltre a tutti i file creati per il pacchetto Debian.

    • Questo ha un .debian.tar.gz (formato sorgente: 3.0)
    • o un finale .diff.gz (formato sorgente: 1.0)

È abbastanza lo stesso per Ubuntu, e nel tuo caso:

  • "linux-lts-vivid-3.19.0": l'attuale kernel , patchato a partire dal tarball a monte "linux-lts-vivid_3.19.0.orig.tar.gz" con le modifiche elencate in "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": un tarball, con qualsiasi modifica apportata al sorgente upstream, oltre a tutti i file creati per il pacchetto Debian;
  • "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.dsc": termina un file di descrizione ".dsc". Contiene il nome del pacchetto, sia nel nome del file sia nel contenuto (dopo la fonte: parola chiave);
  • "linux-lts-vivid_3.19.0.orig.tar.gz": il tarball a monte con la fine di ".tar.gz" (ricorda che nella mia esperienza non è sempre un file ".tar.gz", può essere leggermente diversi formati, come ".tar.xz");

Quando corri apt-get source linux-image-$(uname -r), il tarball a monte viene automaticamente patchato con le modifiche elencate in "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.diff.gz" in "linux-lts-vivid-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
# ...

4

La radice dell'albero del kernel è la directory linux-lts-vivid-3.19.0.

Informazioni sugli altri file:

Nel tarball linux-lts-vivid_3.19.0.orig.tar.gzpuoi trovare il kernel "vanilla", come rilasciato a monte; a questo kernel gli sviluppatori di Ubuntu hanno aggiunto patch, driver, cambiato le cose che vengono raccolte in diffcui è compresso linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz.


4

Hmmm. Quando si esegue il comando

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

il comando dovrebbe estrarre automaticamente i tarball di origine e correggerli per creare una directory chiamata dopo il kernel. Nel tuo caso, sembra che sia chiamato 'linux-lts-vivid-3.19.0' - è presente nella tua directory.

Quindi, questa è la directory di origine, dovresti eseguire:

cd linux-lts-vivid-3.19.0

e quindi continuare a seguire le istruzioni

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.