Jamie-Dee Zielke

System Administrator

Hardware Schrauber

Programmier Chaot

In love with Linux

Jamie-Dee Zielke

System Administrator

Hardware Schrauber

Programmier Chaot

In love with Linux

Blog Post

Linux Custom-Kernel – Warum eigentlich?

25. Juni 2023 Allgemein

Wie den meisten bekannt sein sollte, ist der Linux Kernel Free and Opensource. Das bedeutet, er ist offen einsehbar und auch modifizierbar. Der Kernel verfügt über viele wichtige Funktionen, manche davon sind für den ein oder anderen nützlicher oder auch sinnlos. Wer also eine konkrete Installation benötigt oder will, wird früher oder später anfangen den Kernel genau auf sein System zuzuschneiden. Bedeutet also gewisse Funktionen ausschalten, andere verändern oder sogar optimieren.

Warum sollte man den Kernel überhaupt bearbeiten?

Wie bereits erwähnt kann das Anpassen des Kernels dabei helfen den Kernel perfekt auf das System anzupassen, wer ein reines AMD Ökosystem benutzt, kann also die Intel und NVIDIA Unterstützung ausstellen, um den Kernel “schlanker” und ggf. sogar effizienter zu machen.
Ebenso können Einstellungen getroffen werden, die bei der Kompatibilität von verschiedenen Geräten helfen, welche vom generischen (Standard) Kernel nicht oder nur schwer unterstützt sind.
Also im Grunde genommen kann man auf der tiefsten Betriebssystemebene Einstellungen vornehmen.

Was spricht dagegen?

Nicht jeder muss seinen Kernel anpassen, wer mit dem generischen Kernel bzw. mit den LTS und Zen-Kernels zufrieden ist, kann den Kernel unberührt lassen. Grundsätzlich empfiehlt es sich nur den Kernel zu bearbeiten, wenn man konkrete Vorhaben hat, wie z.B. bei ultra light-weight Installationen, angepasste Gentoo Konfigurationen oder auch beim erstellen seiner eigenen Linux Distro (Linux From Scratch). Außerdem ist technisches Wissen und Verständnis gefragt, denn ein Custom-Kernel kann schneller brechen – Kernelpanics oder Kompatibilitätsprobleme wären einige Folgen. Wer nicht weiß, was er tut, wird das System in erster Linie brechen. Aber das ist nur halb so schlimm: Einfach einen “frischen” Kernel direkt von Kernel.org herunterladen, diesen bearbeiten und ihn mal einsetzen (bestenfalls in einer VM) und gucken, was passiert. Sollte der Kernel “brechen” oder nicht funktionieren, kann man ihn einfach wieder mit dem generischen austauschen. Die Hürde des Verständnisses sollte kein Hindernis darstellen, so gebe ich euch den Rat: “Linux should hurt a little”.

Ultra Lightweight ist mein Anwendungsbereich.

Der Hauptgrund, weshalb ich meinen Linuxkernel bearbeite ist der, dass ich auf meinem Notebook gerne eine sehr schlanke und “light-weight” Installation habe. Ich möchte das Maximum aus dem Gerät herausholen und das geht dann am besten auf Kernelebene. Wir nehmen mein aktuelles Notebook als Beispiel. Im Notebook ist verbaut:

Eine AMD Radeon Vega Mobile GPU, mit einem AMD Ryzen 5 3450U Prozessor. Quasi ein “einfacher” CPU Onboardchip mit einer Vega Grafikeinheit. Dazu noch 8GB Ram, jedoch nimmt sich die GPU zwei Gigabyte davon, bedeutet also ich arbeite hier mit 6GB RAM. Das ganze mit einem standardmäßigen FullHD Display und einer 500gb NVME SSD.

Wie man also sieht, befinde ich mich hier in einem kompletten AMD Ökosystem und weil ich das Notebook überwiegend zum arbeiten benutze, habe ich die Funktionen schon mit der Distro und der Desktopumgebung angepasst. So verwendete ich lange Zeit Arch mit DWM, dem Suckless Terminal und light-weight Programmen, überwiegend Terminal basierte Programme. Mit dieser Vorauswahl habe ich das Notebook sehr performant und die Akkulaufzeit sehr langlebig gestaltet, auch der Gigabyte Verbrauch war sehr human. Doch wollte ich das System noch mehr anpassen für meine Zwecke. Ich arbeite überwiegend mit dem Gerät, surfe hin und wieder mal im Netz oder nutze es als Multimedia Gerät. Somit ist mir mein Anwendungsbereich klar und ich kann nun am besten bestimmen, was ich im Kernel alles anpassen möchte:

NVIDIA und Intel Treiber.

Da ich, wie bereits erwähnt, nur AMD Komponenten verbaut habe, kann ich den Support für NVIDIA und Intel Komponenten deaktivieren und die Treiber aus dem Kernel schmeißen bzw. auch deaktivieren. Die Wahrscheinlichkeit, dass ich die Hardware in diesem Notebook austausche ist nahezu nicht gegeben – wie denn auch?

Optimierung der AMD Hardware.

Ich kann direkt im Kernel spezifische Funktionen von der AMD Hardware anpassen oder auch aktivieren. Ich kann AMD-spezifische Optimierungen aktivieren, wie zum Beispiel die Unterstützung von Zen-Architektur-Optimierungen, welche dafür sorgen, dass die Leistung des Kernels auf dem AMD System verbessert ist.

Bluetooth

Bluetooth verwende ich nicht, dieser Übertragungsweg ist mir zu unsicher und einfach nicht notwendig. Ich greife auf Kabel und auf andere Übertragungsmöglichkeiten zurück, für Bluetooth habe ich keinen nutzen. Also deaktiviere ich auch dies im Kernel.

Deaktivierung von “Proprietary Blobs.”

Im Linux Kernel befinden sich auch “closed Source”, “proprietary” Stellen wieder, wie z.B. die NVIDIA Treiber. Die Deaktivierung dieser “blobs” können dafür sorgen, dass z.B. das W-Lan Modul im Notebook nicht mehr funktioniert, da dieser vielleicht auch “proprietary” Treiber verwendet. Da ich mich aber über mein Notebook bestens informiert habe, kann ich zielsicherer genau die Blobs deaktivieren, die ich sowieso nicht verwende, wie z.B. die Treiber für das Bluetooth Modul. Das W-Lan Modul lasse ich jedoch unberührt, da es eben jene “proprietary” Treiber benötigt (dies war auch der Grund, weshalb ich Probleme mit der Installation von Debian hatte).

Aktivierung der dynamischen Energieverwaltung.

Im Kernel befinden sich einige Optionen den Kernel energieeffizienter zu gestalten, so kann die Aktivierung einer dynamischen Energieverwaltung dabei helfen, die Akkulaufzeit zu maximieren.. Dies kann die CPU-Frequenz und den Energieverbrauch entsprechend der aktuellen Systemlast anpassen.
“Dynamische Energieverwaltung” heißt vereinfach, dass sich die Systemauslastung und die Leistung an die Komponenten, wie eben CPU und GPU, anpassen. So wird z.B. Energie gespart, wenn nicht die volle Leistung benötigt wird. Wenn also gerade nur “einfache” Office Arbeiten anstehen, kann die CPU auf eine niedrigere Frequenz heruntertakten oder in einen Energiesparmodus wechseln, um den Energieverbrauch zu reduzieren. Wenn die Leistung wieder erfordert wird, wird die Frequenz wieder erhöht. Darum auch “Dynamisch”.

Im Prinzip ist der Custom-Kernel bei mir ein simples Ausmisten von Treibern und Funktionen, die ich nicht verwende oder brauche. Das alleine hilft aber schon die Erfahrung angenehmer zu gestalten. So konnte ich die Akkulaufzeit oftmals verdoppeln und manchmal sogar verdreifachen, die RAM Auslastung schrumpfte ebenfalls – auch die Größe der Installation war kleiner. Der Kernel ist also solide auf mich persönlich zugeschnitten, weshalb ich hier auch keine spezifischen Configs oder Einstellungen erwähne. Er funktioniert bei mir, ob er auch auf anderen Systemen läuft ist schwer zu sagen. Viele Custom-Kernel funktionieren “nur auf dem Host-System”, da sie eben für jene Umgebung angepasst worden sind. Was für mich funktioniert, funktioniert für andere vermutlich nicht. Ich benötige keine NVIDIA oder Inteltreiber, Bluetooth ist für mich auch unbrauchbar. Andere haben auch genau diese Komponenten und nutzen Bluetooth für ihre Kopfhörer. Daher rate ich euch auch, den Kernel nach *euren* Wünschen anzupassen. Ich stolperte oft über Kernelpanics und Stabilitätsprobleme, also habe ich den Kernel immer anders bearbeitet. So lange, bis er so funktionierte, wie ich es wollte. Wer es sich nicht zutraut, brauch den Kernel nicht selbst zu bearbeiten, wer mit dem generischen Kernel zu frieden ist, braucht ebenfalls keine Anpassung. Aber nutzt die Gelegenheit um den Kernel zu lernen, um die Code Strukturen und Architekturen zu erforschen. Ihr werdet GNU/Linux anders wertschätzen, wenn ihr euch mehr mit der Materie an sich auseinander setzt. Die Offenheit von GNU und Linux sollte ein Ansporn sein, alles zu erforschen, was diese beiden Komponenten zu bieten haben!

Write a comment

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.