Wo/welches ist die eigentliche Kernelquelle?

Wo/welches ist die eigentliche Kernelquelle?

Ich folgeDasum zu lernen, wie man den Kernel kompiliert. Ich habe

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

um den Quellcode des Linux-Kernels herunterzuladen, den ich derzeit verwende.

Nach dem Ausführen des obigen Befehls wurden die folgenden Dateien (und Verzeichnisse) heruntergeladen.

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 $ 

ImDasselbeSeite wird erwähnt:

Das Erstellen des Kernels ist ganz einfach. Wechseln Sie in das Stammverzeichnis des Kernel-Quellcodes und geben Sie dann die folgenden Befehle ein:

Ich bin mir jedoch nicht sicher, welches die „Wurzel des Kernel-Quellcodebaums“ ist.

Ist es das aktuelle Verzeichnis (in dem ich apt-get source ...die oben aufgelisteten Dateien ausgeführt habe und in dem sie sich befinden)?

Oder ist es das Verzeichnis:

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

oder soll ich das Tarball extrahieren

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

Ausgabe für uname -r:

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

Antwort1

Von demDebian Wiki:

Quellpaketestellt Ihnen alle notwendigen Dateien zum Kompilieren oder anderweitigen Erstellen der gewünschten Software zur Verfügung.

Es besteht in seiner einfachsten Form aus drei Dateien:

  • Das Upstream-Tarball mit.tar.gzEnde

  • Eine Beschreibungsdatei mit der Endung .dsc. Sie enthält den Namen des Pakets, sowohl im Dateinamen als auch im Inhalt (nach dem Schlüsselwort Source:).

  • Ein Tarball mit allen an der Upstream-Quelle vorgenommenen Änderungen sowie allen für das Debian-Paket erstellten Dateien.

    • Dies hat eine.debian.tar.gz(Quellformat: 3.0)
    • oder ein.diff.gzEnde (Quellformat: 1.0)

Bei Ubuntu ist es ganz dasselbe, und in Ihrem Fall:

  • "linux-lts-vivid-3.19.0": der eigentliche Kernel, gepatcht ausgehend vom Upstream-Tarball „linux-lts-vivid_3.19.0.orig.tar.gz“ mit den in „linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz“ aufgeführten Änderungen;
  • „linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz“: ein Tarball mit allen an der Upstream-Quelle vorgenommenen Änderungen sowie allen für das Debian-Paket erstellten Dateien;
  • „linux-lts-vivid_3.19.0-30.34~14.04.1.dsc“: eine Beschreibungsdatei mit der Endung „.dsc“. Sie enthält den Namen des Pakets, sowohl im Dateinamen als auch im Inhalt (nach dem Schlüsselwort „Source:“).
  • „linux-lts-vivid_3.19.0.orig.tar.gz“: das Upstream-Tarball mit der Endung „.tar.gz“ (beachten Sie, dass es meiner Erfahrung nach nicht immer eine „.tar.gz“-Datei ist, sondern leicht unterschiedliche Formate haben kann, wie z. B. „.tar.xz“);

Wenn Sie ausführen apt-get source linux-image-$(uname -r), wird das Upstream-Tarball automatisch mit den in „linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz“ in „linux-lts-vivid-3.19.0“ aufgeführten Änderungen gepatcht:

% 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
# ...

Antwort2

Die Wurzel Ihres Kernelbaums ist das Verzeichnis linux-lts-vivid-3.19.0.

Zu den anderen Dateien:

Im Tarball linux-lts-vivid_3.19.0.orig.tar.gzfinden Sie den „Vanilla“-Kernel, wie er von den Upstream-Entwicklern veröffentlicht wurde. Zu diesem Kernel haben die Ubuntu-Entwickler Patches, Treiber und Änderungen hinzugefügt, die in der Datei gesammelt sind, die diffim Format komprimiert ist linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz.

Antwort3

Hmmm. Wenn Sie den Befehl ausführen

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

der Befehl sollteautomatischExtrahieren Sie die Quell-Tarballs und patchen Sie sie, um ein Verzeichnis zu erstellen, das nach Ihrem Kernel benannt ist. In Ihrem Fall sieht es so aus, als ob es „linux-lts-vivid-3.19.0“ heißt – es steht in Ihrer Verzeichnisliste.

Dies ist also das Quellverzeichnis. Sie sollten Folgendes ausführen:

cd linux-lts-vivid-3.19.0

und folgen Sie dann weiter den Anweisungen

verwandte Informationen