Was machen die Kernel-Header Pakete?

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
ricksanchez
Beiträge: 48
Registriert: 06.03.2017 14:51:18

Was machen die Kernel-Header Pakete?

Beitrag von ricksanchez » 17.03.2017 09:01:11

Hi,

wie der Titel besagt verstehe ich nicht was genau Kernel-Header sind und wozu man diese braucht. Bei :suche: bin ich nicht wirklich fündig geworden.

Danke schon mal :hail:

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Was machen die Kernel-Header Pakete?

Beitrag von MSfree » 17.03.2017 09:06:32

ricksanchez hat geschrieben:wie der Titel besagt verstehe ich nicht was genau Kernel-Header sind und wozu man diese braucht.
"Machen" tun die Pakete zunächst gar nicht, denn sie bestehen nur aus den in der Programmiersprache C nötigen Dateien, in denen Funktionsprototypen deklariert sind, und zwar die, mit denen der Linuxkernel gebaut wird.

Benötigt werden die Header nur dann, wenn du aus Fremdquellen Gerätetreiber selbst kompilieren willst/mußt. Das gilt z.B. für Graphiktreiber von Nvidia und AMD/ATI oder auch einige WLAN-Karten.

Wenn der Rechner ohne Fremdtreiber funktioniert, belegen die Kernelheader nur Plattenplatz ohne jemals zum Einsatz zu kommen.

ricksanchez
Beiträge: 48
Registriert: 06.03.2017 14:51:18

Re: Was machen die Kernel-Header Pakete?

Beitrag von ricksanchez » 17.03.2017 09:35:45

Vielen Dank für die schnelle Antwort.

Also brauche ich die Header wirklich nur fürs Kompilieren? Fremdtreiber sind in Form von Modulen auf dem System. Diese sind demnach nicht davon betroffen?

Habe mir vor kurzem den 4.9er Kernel kompiliert. Hätte ich dafür die Kernel-Header Pakete benötigt?

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Was machen die Kernel-Header Pakete?

Beitrag von scientific » 17.03.2017 13:54:00

Ja
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

stillebucht
Beiträge: 31
Registriert: 30.10.2013 11:13:19

Re: Was machen die Kernel-Header Pakete?

Beitrag von stillebucht » 17.03.2017 14:31:07

ricksanchez hat geschrieben:Habe mir vor kurzem den 4.9er Kernel kompiliert. Hätte ich dafür die Kernel-Header Pakete benötigt?
Nein. Für's Kompilieren eines neuen/anderen Kernels brauchst du die Header-Pakete erst mal nicht. Aber wenn du Treiber oder Module nutzen willst, die in den Kernel-Quellen nicht mit drin sind, dann brauchst du sie.

Ein Beispiel: Der ZFS-Dateisystem-Treiber für Linux ist aus Lizenzgründen nicht im Linux Kernel enthalten. Möchtest du ihn installieren, musst du das benötigte Kernel-Modul selbst kompilieren, da jedes Modul zunächst mal zum verwendeten Kernel passen muss. Hierfür werden die Kernel-Header benötigt. Mit jedem Kernel Update müssen das Kernel-Modul für den ZFS-Treiber dann neu kompiliert werden, auch wenn der Quellcode des ZFS-Treibers sich gar nicht geändert hat. In der Regel erfolgt das Neukompilieren der zusätzlichen Module nach einem Kernel-Update dann über automatische Mechanismen wie z.B. DKMS. Damit das funktioniert müssen mit jedem Kernel-Update auch die Kernel-Header aktualisiert werden, denn, wie gesagt, die sind ja nötig, um das Kernel-Modul so zu bauen, dass es zu deinem installierten Kernel passt.
Grafiktreiber sind ein bekanntes Beispiel für zusätzliche Treiber, die nicht im Kernel enthalten sind, die man sich aber als Kernel-Modul nachinstallieren kann.

Also, willst du einfach nur einen neuen Kernel kompilieren, nutzt aber keine Treiber, die der Kernel ohnehin nicht schon mitbringt, brauchst du zum Kompilieren keine Kernel-Header. Wenn du aber einen zusätlichen Treiber wie einen Grafik- oder den ZFS-Treiber benötigst, dann brauchst du Kernel-Header Pakete, und zwar für den Kernel, den du gerade verwenden möchstest.

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Was machen die Kernel-Header Pakete?

Beitrag von MSfree » 17.03.2017 14:36:19

stillebucht hat geschrieben:Nein. Für's Kompilieren eines neuen/anderen Kernels brauchst du die Header-Pakete erst mal nicht. Aber wenn du Treiber oder Module nutzen willst, die in den Kernel-Quellen nicht mit drin sind, dann brauchst du sie.
Wobei man sagen muß, daß die Kernelheader eine Teilmenge des Kernelquelltextes sind.

Um den Kernel zu kompilieren, braucht man die Quellen von kernel.org und diese beinhalten auch gleichzeitig die Kernelheader.

Will man dann Fremdmodule für den selbst kompilierten Kernel kompilieren, braucht man die Kernelheader nicht extra installieren, die sind ja schon da.

Nimmt man den Standard Debiankernel und will Fremdmodule kompilieren, dann braucht man entweder die Kernelheader oder man installiert den kompletten Quelltext. Die Header benötigen halt viel weniger Plattenplatz.

ricksanchez
Beiträge: 48
Registriert: 06.03.2017 14:51:18

Re: Was machen die Kernel-Header Pakete?

Beitrag von ricksanchez » 17.03.2017 14:38:53

Das macht Sinn. Bei mir waren es NVIDIA-Treiber, die über einen .run-Installer ausgeführt wurden. Wäre sowas ein DKMS-Modul? Wie erkennt man eigentlich ob eine Modul DMKS ist oder nicht?

Antworten