Où / quelle est la source réelle du noyau?

8

Je suis ceci pour apprendre à compiler le noyau. j'ai utilisé

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

pour télécharger le code source du noyau Linux que j'utilise actuellement.

Après avoir exécuté la commande ci-dessus, les fichiers (et répertoires) suivants ont été téléchargés.

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 $ 

Dans la même page, il est mentionné:

La construction du noyau est assez simple. Modifiez votre répertoire de travail à la racine de l'arborescence des sources du noyau, puis tapez les commandes suivantes:

Mais je ne sais pas quelle est la "racine de l'arbre source du noyau".

Est-ce le répertoire actuel (où j'ai couru apt-get source ...et où j'ai les fichiers listés ci-dessus)?

Ou est-ce le répertoire:

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

ou, dois-je extraire l'archive tar

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

Sortie pour uname -r:

user $ uname -r
3.19.0-30-generic
user $ 
sps
la source

Réponses:

8

Depuis le wiki Debian :

Les packages source vous fournissent tous les fichiers nécessaires pour compiler ou autrement créer le logiciel souhaité.

Il se compose, dans sa forme la plus simple, de trois fichiers:

  • L'archive tar en amont avec .tar.gz se terminant

  • Un fichier de description se terminant par .dsc. Il contient le nom du package, à la fois, dans son nom de fichier ainsi que son contenu (après le mot-clé Source:).

  • Une archive tar, avec toutes les modifications apportées à la source en amont, plus tous les fichiers créés pour le paquet Debian.

    • Cela a un .debian.tar.gz (format source: 3.0)
    • ou une terminaison .diff.gz (format source: 1.0)

C'est tout à fait la même chose pour Ubuntu, et dans votre cas:

  • "linux-lts-vivid-3.19.0": le noyau réel , patché à partir de l'archive tar en amont "linux-lts-vivid_3.19.0.orig.tar.gz" avec les modifications listées dans "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": une archive tar, avec toutes les modifications apportées à la source en amont, plus tous les fichiers créés pour le paquet Debian;
  • "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.dsc": un fichier de description ".dsc" se terminant. Il contient le nom du package, à la fois, dans son nom de fichier ainsi que son contenu (après le mot-clé Source:);
  • "linux-lts-vivid_3.19.0.orig.tar.gz": l'archive tar en amont avec la fin ".tar.gz" (sachez que d'après mon expérience, ce n'est pas toujours un fichier ".tar.gz", il peut être légèrement différents formats, tels que ".tar.xz");

Lorsque vous exécutez apt-get source linux-image-$(uname -r), l'archive tar en amont est automatiquement corrigée avec les modifications répertoriées dans "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.diff.gz" dans "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
# ...
kos
la source
4

La racine de votre arbre noyau est le répertoire linux-lts-vivid-3.19.0.

À propos des autres fichiers:

Dans l'archive tar, linux-lts-vivid_3.19.0.orig.tar.gzvous pouvez trouver le noyau "vanilla", tel qu'il est sorti en amont; à ce noyau, les développeurs d'Ubuntu ont ajouté des correctifs, des pilotes, des choses modifiées qui sont collectées dans le diffqui est compressé linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz.

Rmano
la source
4

Hmmm. Lorsque vous exécutez la commande

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

la commande devrait extraire automatiquement les archives tar sources et les corriger pour créer un répertoire appelé d'après votre noyau. Dans votre cas, il semble s'appeler 'linux-lts-vivid-3.19.0' - il est là dans votre liste de répertoires.

Donc, c'est le répertoire source, vous devez exécuter:

cd linux-lts-vivid-3.19.0

puis continuez à suivre les instructions

Nick Veitch
la source