Wo / was ist die eigentliche Kernelquelle?

8

Ich folge diesem Beispiel , um zu lernen, wie man den Kernel kompiliert. ich benutzte

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

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

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 $ 

Auf derselben Seite wird erwähnt:

Das Erstellen des Kernels ist recht einfach. Ändern Sie Ihr Arbeitsverzeichnis in das Stammverzeichnis des Kernel-Quellbaums und geben Sie die folgenden Befehle ein:

Ich bin mir aber nicht sicher, welches die "Wurzel des Kernel-Quellbaums" ist.

Ist es das aktuelle Verzeichnis (wo ich ausgeführt habe apt-get source ...und wo ich die oben aufgeführten Dateien habe)?

Oder ist es das Verzeichnis:

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

oder sollte ich den 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 $ 
sps
quelle

Antworten:

8

Aus dem Debian-Wiki :

Quellpakete bieten Ihnen alle erforderlichen Dateien zum Kompilieren oder anderweitigen Erstellen der gewünschten Software.

Es besteht in seiner einfachsten Form aus drei Dateien:

  • Der Upstream-Tarball mit dem Ende .tar.gz

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

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

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

Für Ubuntu ist es genauso, und in Ihrem Fall:

  • "linux-lts-vivid-3.19.0": Der eigentliche Kernel , gepatcht ab dem Upstream-Tarball "linux-lts-vivid_3.19.0.orig.tar.gz" mit den in "linux-lts-vivid_3.19.0" aufgeführten Änderungen -30,34 ~ 14.04.1.diff.gz ";
  • "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.diff.gz": ein Tarball mit allen Änderungen an der Upstream-Quelle sowie allen für das Debian-Paket erstellten Dateien;
  • "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.dsc": eine Beschreibungsdatei ".dsc" endet. Es 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": Der Upstream-Tarball mit der Endung ".tar.gz" (meiner Erfahrung nach handelt es sich nicht immer um eine ".tar.gz" -Datei, sondern kann sich geringfügig befinden verschiedene Formate wie ".tar.xz");

Wenn Sie ausgeführt werden apt-get source linux-image-$(uname -r), wird der Upstream-Tarball automatisch mit den Änderungen gepatcht, die unter "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.diff.gz" in "linux-lts-vivid-3.19.0" aufgeführt sind:

% 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
quelle
4

Das Stammverzeichnis Ihres Kernelbaums ist das Verzeichnis linux-lts-vivid-3.19.0.

Über die anderen Dateien:

Im Tarball befindet linux-lts-vivid_3.19.0.orig.tar.gzsich der "Vanilla" -Kern, der stromaufwärts freigegeben wurde. Zu diesem Kernel haben die Ubuntu-Entwickler Patches, Treiber und geänderte Dinge hinzugefügt, die in dem diffkomprimierten Kernel gesammelt werden linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz.

Rmano
quelle
4

Hmmm. Wenn Sie den Befehl ausführen

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

Der Befehl sollte die Quell-Tarballs automatisch extrahieren und patchen, um ein Verzeichnis zu erstellen, das nach Ihrem Kernel aufgerufen wird. In Ihrem Fall sieht es so aus, als würde es 'linux-lts-vivid-3.19.0' heißen - es befindet sich in Ihrer Verzeichnisliste.

Das ist also das Quellverzeichnis, das Sie ausführen sollten:

cd linux-lts-vivid-3.19.0

und folgen Sie dann weiterhin den Anweisungen

Nick Veitch
quelle