Was ist der Unterschied zwischen src Version 3. * und 3. * - generisch

10

In meinem lokalen Linux / Ubuntu habe ich zwei Verzeichnisse für Linux src

/usr/src/linux-3.16.0
/usr/src/linux-3.16.0-generic

Ich fand, dass der Code in 3.16.0 viel mehr ist als der in 3.16.0-generic. Ich frage mich, warum und wie diese beiden Verzeichnisse unterschiedlich sind (und was repräsentieren sie?)

Richard
quelle

Antworten:

1

Die beiden Verzeichnisse werden von den entsprechenden Paketen bereitgestellt, die die Header-Dateien für den Kernel enthalten. Verwenden Sie den dpkgBefehl, um herauszufinden, welches Paket die Verzeichnisse bereitstellt.

$ dpkg -S /usr/src/linux*
linux-headers-X.XX.X-XX: /usr/src/linux-headers-X.XX.X-XX
linux-headers-X.XX.X-XX-generic: /usr/src/linux-headers-X.XX.X-XX-generic
...

Das erste Verzeichnis /usr/src/linux-headers-X.X.XX-XXenthält Header-Dateien für mehrere Architekturen, einschließlich x86, amd64, powerpc und andere, was zu einer größeren Anzahl von Dateien und einer größeren Paketgröße führt.

Das andere Verzeichnis /usr/src/linux-headers-X.X.XX-XX-genericschien hauptsächlich Quellcodes zu enthalten, die für die x86-Architektur relevant sind und für die lokale Installation vorgesehen sind.

Das entsprechende Paket hat in der Beschreibung angedeutet, zum Beispiel:

$ apt-cache show linux-headers-3.16.0-25 | grep -A3 Description-en
Description-en: Header files related to Linux kernel version 3.16.0
 This package provides kernel header files for version 3.16.0, for sites
 that want the latest kernel headers. Please read
 /usr/share/doc/linux-lts-utopic-headers-3.16.0-25/debian.README.gz for details

Soweit mir bekannt ist, enthalten beide Verzeichnisse nur Quellcodes und keine Binärdateien. Und der Unterschied zwischen beiden ist hauptsächlich der Zielarchitektur von Quellcodes.

Verwandte: Was enthält ein Kernel-Quellbaum? Bezieht sich das auf Linux-Kernel-Header?

Erweiterte Antwort (2015.07.30)

x86Was ist der Unterschied zwischen dem x86Code in den beiden Verzeichnissen, da beide Code in Beziehung setzen ? - Richard 29. Juli 15 um 19:11 Uhr

Die meisten Verzeichnisse und Dateien in /usr/src/linux-headers-X.X.XX-XX-genericsind symbolische Links, die auf tatsächliche Verzeichnisse und Dateien in verweisen /usr/src/linux-headers-X.X.XX-XX. Mit anderen Worten, arch/x86in diesen beiden Verzeichnissen befindet sich nur der Unterschied zwischen tatsächlichen und symbolischen Links, wobei einige übrig gebliebene Dateien mit asmHeadern im *-genericGegenstück vorhanden sind.

Zwischen diesen beiden Paketen kann man einen weiteren großen Unterschied feststellen, nämlich das Vorhandensein von configund generatedVerzeichnisse im *-genericGegenstück.

Nach meinem besten Verständnis würde das *-genericVerzeichnis die erforderlichen Header-Dateien zum Konfigurieren und Kompilieren von für die x86Architektur relevanten Modulen enthalten , ohne versehentlich Änderungen am Quellverzeichnis von vorzunehmen linux-headers-x.x.xx-xx.

Vor allem sind die beiden Verzeichnisse wahrscheinlich der "saubere" Ansatz zum Packen und Kompilieren der Pakete auf den jeweiligen Plattformen. Ich bin jedoch nicht in der Lage, diese Angelegenheit zu klären.


Anmerkung des Antwortenden : Ich habe diese Antwort damals naiv geschrieben - nicht sicher, was richtig oder falsch ist - und dazwischen fehlt möglicherweise eine Erklärung. Daher ist diese Antwort jetzt ein Community-Wiki, sodass jeder mit minimalem Ruf diesen Beitrag verbessern kann, um den Unterschied vollständig zu erklären.

Clearkimura
quelle
x86Was ist der Unterschied zwischen dem x86Code in den beiden Verzeichnissen, da beide Code in Beziehung setzen ?
Richard
@Richard Ich habe meine Antwort nach bestem Wissen und Gewissen so einfach wie möglich aktualisiert. Meine Antwort kann als naiv angesehen werden, daher möchten Sie möglicherweise stattdessen nach einer besseren Antwort von jemand anderem suchen.
Clearkimura