Distributionspakete kernel-header
enthalten, wie der Name schon sagt, nur Kernel-Header-Dateien (plus die erforderlichen Installationsdateien), die zum Erstellen von Software wie Kernel-Modulen erforderlich sind.
Sie sollten nicht damit rechnen, Binärdateien in einem Kernel- Quellverzeichnis zu finden , mit Ausnahme der Build-Ausgabe. (Wenn Sie einen Kernel selbst konfigurieren und erstellen, enthält das Kernel-Quellverzeichnis auch die kompilierten Objekte, Module, den erstellten Kernel selbst und einige andere Binärkomponenten, mit denen er funktioniert.) Bei den
KConfig
Dateien handelt es sich um eine Beschreibung der Kernelkonfigurationsoptionen (und ihre Abhängigkeiten), die für ein bestimmtes Verzeichnis / Modul verfügbar sind.
Abgesehen davon ist alles (meistens) C-Quellcode, Header-Dateien und Makefile
s. Es gibt hier und da ein paar Hilfsskripte und auch eine Assembly-Quelle.
Header-Pakete (was Sie installiert haben) enthalten nur den Header- Teil der oben genannten (und nicht alles - nur die "exportierten" Header) und einen Teil der Build-Infrastruktur. Was Sie also sehen, wird erwartet. Header-Pakete enthalten keinen C-Quellcode (mit Ausnahme einiger Stubs und Build-Infrastrukturcode). Der Sinn eines solchen Pakets besteht darin, Speicherplatz (und Bandbreite) zu sparen - der gesamte Linux-Kernel-Quellbaum ist ziemlich groß und völlig unnötig, wenn Sie nicht vorhaben, den Kernel selbst zu kompilieren. Die Header-Pakete werden von Distributionen erstellt und ausgeliefert, um genau die richtigen Dinge zum Erstellen von Modulen bereitzustellen, aber nicht mehr. (Sie enthalten auf keinen Fall den kompilierten Kernel.)
Kommentar adressieren: Header-Pakete ziehen nirgendwo hin. Sie sind für bestimmte Versionen des Kernels erstellt, in einem bestimmten Verzeichnis gepackt, und das war's. Es ist nur eine Reihe von Dateien. (Beachten Sie, dass die Header-Pakete nicht unbedingt die gleiche Version wie die aktuellen Binärpakete des stabilen Kernels haben - die Header-Pakete sind generisch und können hinter dem eigentlichen Kernel zurückbleiben, den Sie ausführen. Sie sollten jedoch nicht von einem Kernel stammen Version, die aktueller ist als der aktuell installierte (oder Ziel-) Kernel.)
Installierte Kernel-Binärdateien werden normalerweise /boot
zusammen mit Bootloader-Binärdateien und Konfigurationsdateien im Verzeichnis installiert . (Dies ist manchmal ein unabhängiges Dateisystem, das nicht standardmäßig gemountet wird.) Der genaue Name der Dateien hängt vom Kernel und der Distribution ab. (So auch der Bootloader.)
Installierte Kernelmodule befinden sich in Unterverzeichnissen von:
/lib/modules/`uname -r`/
Zum Beispiel auf meinem System befinden sie sich derzeit in
/lib/modules/3.1.4-gentoo/
Vollständiger Kernel-Quellcode : Wenn Sie unter Ubuntu möchten, dass die vollständigen Kernel-Quellen selbst einen Kernel erstellen, sollten Sie die folgenden Anweisungen befolgen .
Sie können einen Quell-Tarball auch von herunterladen kernel.org
und irgendwo entpacken ( Überschreiben Sie keine von Ubuntu installierten Dateien, wenn Sie diesen Tarball verwenden, und bewahren Sie Ihre persönlichen und die von RPM verwalteten Dateien getrennt auf).
/usr/src/linux
Dies ist ein traditioneller Ort, an dem Kernelquellen abgelegt werden, aber nichts hindert Sie daran, Kernelquellen an anderer Stelle abzulegen. Dieser Pfad ist auch oft nur eine symbolische Verknüpfung zu einem Verzeichnis. zB ich habe dies auf meinem Rechner:
$ ls -l /usr/src/linux
lrwxrwxrwx 1 root root 18 Dec 7 17:03 /usr/src/linux -> linux-3.1.4-gentoo
Der Symlink vereinfacht das Erstellen von Anwendungen, die von der Kernelquelle abhängen. Sie verknüpfen diesen Pfad mit Ihrem laufenden (oder Ziel-) Kernel, damit Sie keine genauen Versions- oder Pfadinformationen angeben müssen, wenn Sie ein Modul außerhalb des Baums erstellen. Hilft ein paar für Source-basierte Distributionen.