Zusammenfassung
Sie möchten wahrscheinlich das aufgerufene Paket installieren linux-headers-generic
.
Wenn beim Ausführen uname -r
etwas anderes als generic
die Versionsnummer angezeigt wird, ersetzen Sie dies durch generic
in linux-headers-generic
. (Dies kann in server
oder generic-pae
auf einigen Installationen einiger Ubuntu-Versionen der Fall sein , und es gibt auch einige andere gelegentliche "Kernel-Varianten".)
Da dies höchstwahrscheinlich erforderlich ist, damit Sie einen Treiber erstellen können (der möglicherweise automatisiert ist und möglicherweise nicht "selbst erstellt" wird), ist es eine gute Idee, dies ebenfalls zu installieren build-essential
, damit Sie wahrscheinlich über alle erforderlichen Tools verfügen .
Vollständige Erklärung
Meines Wissens hat kein Betriebssystem ein Paket namens Linux-kernel-devel
. Dies hat zwei Gründe:
- Paketnamen, die mit Großbuchstaben beginnen, sind unter Unix-ähnlichen Betriebssystemen äußerst selten.
- GNU / Linux-Betriebssysteme benennen normalerweise ihre Kernel-bezogenen Pakete so, dass die Namen das Wort Kernel oder das Wort Linux enthalten , aber nicht beide. (Unter Ubuntu ist es das Wort Linux .)
Es ist üblich, dass Kernel-bezogene Pakete auf Systemen, die den Red Hat Package Manager ( rpm
) und verwandte Dienstprogramme verwenden, kernel
im Namen ihrer Pakete enthalten sind. Zum Beispiel hat Mageia eine Reihe von Paketen, deren Namen mit beginnen kernel
und mit enden devel
. Diese Pakete (auf Mageia und jedem Betriebssystem, auf dem sie installiert sind) enthalten fast immer die Header-Dateien, die zum Erstellen von Treibern aus dem Quellcode für die Verwendung mit dem Kernel erforderlich sind. Sie können auch verwandte Hilfsprogramme bereitstellen, um dies zu erleichtern. Diese Pakete:
- Geben Sie nicht den vollständigen Quellcode des Kernels an. Das wird von anderen Paketen bereitgestellt.
- Stellen Sie keinen vorkompilierten, verwendbaren Kernel bereit. Das wird von anderen Paketen bereitgestellt.
- Stellen Sie keinen Compiler oder die meisten anderen Tools zur Erstellung von Zwecken bereit. Auch diese werden von anderen Paketen bereitgestellt.
In Ubuntu haben die Pakete, die Kernel-Header bereitstellen, Namen, die mit beginnen , wie in der Liste hier zu sehen ist linux-headers
. Normalerweise ist das richtige zu installierende Paket linux-headers-generic
. Um jedoch sicherzugehen, welches Paket installiert werden muss, um Header zu erhalten, die Ihrem aktuell ausgeführten Kernel entsprechen, führen Sie Folgendes aus:
uname -r
Sie erhalten eine Ausgabe, die ungefähr so aussieht:
3.5.0-36-generic
Das heißt, Sie haben eine Versionsnummer (die .
Zeichen und normalerweise mindestens eine enthält -
), gefolgt von einem -
, gefolgt von einem oder mehreren Wörtern, die angeben, welche Art von Kernel Sie ausführen.
Wenn Sie nur die Header für die spezifische Version wollen passieren Sie jetzt ausgeführt werden, können Sie das Paket , dessen Name installieren ist , linux-headers-*
wo *
durch die volle Leistung von ersetzt wird uname -r
. Auf meinem System könnte ich beispielsweise Folgendes ausführen:
sudo apt-get update && sudo apt-get install linux-headers-3.5.0-36-generic
Ich könnte es sogar automatisieren:
sudo apt-get update && sudo apt-get install linux-headers-`uname -r`
Diese Ansätze sind äquivalent, aber normalerweise nicht der beste Weg.
Stattdessen möchten Sie normalerweise das Metapaket installieren, das immer die neuesten Kernel-Header als Update bereitstellt (je nachdem, welches Header-Paket aktuell ist). Dies entspricht der Art und Weise, wie Ihr kompilierter, laufender Kernel installiert und aktualisiert wird. Sehen Sie sich dazu einfach den Teil der uname -r
Ausgabe nach der Versionsnummer an. Das heißt, wenn uname -r
Sie geben 3.5.0-36-generic
, nehmen Sie nur den generic
Teil.
Installieren Sie dann das Paket mit dem Namen linux-headers-*
where, *
das durch diesen Teil ersetzt wird. Auf meinem System wäre es also linux-headers-generic
eine Möglichkeit , es zu installieren:
sudo apt-get update && sudo apt-get install linux-headers-generic
Für die meisten Menschen ist es linux-headers-generic
, aber je nachdem , was Ubuntu - Version Sie laufen, was Architektur und Art von Gerät sind Sie es auf ausgeführt wird , und wie es installiert und konfiguriert ist , andere Möglichkeiten umfassen generic-pae
, highbank
, omap
, server
, und virtual
.
Verwandte Pakete
Header-Dateien erleichtern das Entwickeln und Kompilieren / Erstellen von Software, die Funktionen verwendet, die von der Software bereitgestellt werden, deren Header-Dateien verwendet werden. Der häufigste Grund, warum Sie Kernel-Header benötigen, ist, wenn Sie einen Treiber (ein Kernel-Modul) aus dem Quellcode erstellen. Einige Anwendungen, wie VMware und VirtualBox, erfordern dies manchmal und automatisieren den Build selbst.
Zusätzlich zu Header-Dateien werden zum Erstellen von Software ein Compiler und andere Tools benötigt. Um die Wahrscheinlichkeit zu maximieren, dass Sie über die erforderlichen Tools verfügen, sollten Sie das build-essential
Paket auch installieren .
Es ist ungewöhnlich, dass jemand den vollständigen Kernel-Quellcode benötigt (es sei denn, Sie planen natürlich, Ihren Kernel aus dem Quellcode zu erstellen). Aber wenn Sie das brauchen, müssen Sie auch ein anderes Paket installieren. In Ubuntu heißt das Paket für den vollständigen Kernel-Quellcode linux-source
. (Dies steht im Einklang mit der Debian / Ubuntu-Konvention, Pakete zu benennen, die wesentliche Teile des Linux-Kernels enthalten, linux
anstatt kernel
.)
Wenn Sie immer noch Probleme haben
Wenn Sie versuchen, eines dieser Pakete zu installieren, aber auf Probleme stoßen und Hilfe benötigen, müssen Sie den vollständigen und genauen Text aus dem Terminal einschließlich der Zeilen, in die Sie Befehle eingegeben haben, einfügen. Die beste Möglichkeit, dies zu tun, besteht darin, Ihre Frage zu bearbeiten. Wenn sie jedoch zu lang ist, können Sie sie an einer Stelle wie http://paste.ubuntu.com einfügen und uns die URL mitteilen , über die wir darauf zugreifen können.
Wenn Sie diese Frage kommentieren, werde ich benachrichtigt. Sie können Ihre Frage hier bearbeiten und auch kommentieren, um auf die Informationen aufmerksam zu machen, die Sie in Ihrer Frage angegeben haben. (Wichtige Informationen werden am besten in Fragen und Antworten aufbewahrt.) Viel Glück!