Wie man einen benutzerdefinierten Kernel auf Ubuntu erstellt und installiert

Der Gedanke, eigene Kernel zu kompilieren, erfüllt neue Linux-Nutzer mit Angst. Es klingt furchterregend, den entscheidenden Teil Ihres Systems von Grund auf neu zu erstellen. Die Wahrheit ist jedoch, dass das Erstellen des Linux-Kernels in Ubuntu wirklich einfach ist.
Das Erstellen von Linux-Kernels erfordert kein Programmieren. Einige der besten Programmierer der Welt haben bereits den gesamten Code geschrieben. Sie müssen nur die Funktionen auswählen, die Sie möchten, und alles zusammenfügen. Hier zeigen wir Ihnen, wie Sie einen benutzerdefinierten Kernel auf Ubuntu erstellen und installieren.
Inhaltsverzeichnis
- Abhängigkeiten installieren
- Kernel-Quellcode für Ubuntu herunterladen
- Vorbereitung für Ihren Build
- Konfigurieren des Ubuntu-Kernels
- Kernel-Pakete für Ubuntu erstellen
- Kernel installieren
- Benutzerdefinierte Binär-Kernels installieren
- Mainline in Ubuntu installieren
- Verwendung von Mainline
Auch lesen: Wie man den Kernel in Linux downgradiert
Abhängigkeiten installieren
Bevor Sie überhaupt einen Kernel anfassen, benötigen Sie die richtigen Werkzeuge, um ihn zu erstellen. Verwenden Sie den folgenden Befehl, um sie aus den Ubuntu-Repositories herunterzuladen.
sudo apt install wget build-essential bison flex libncurses-dev libssl-dev libelf-devKernel-Quellcode für Ubuntu herunterladen
Jetzt können Sie den Quellcode herunterladen, den Sie erstellen möchten. Alle Kernel sind in den offiziellen Linux-Repositories verfügbar. Sie können sich die neuesten Versionen in ihrem CDN-Repository ansehen. Zum Zeitpunkt dieses Artikels ist die neueste Version 5.16. Sie können sie mit den folgenden Befehlen herunterladen:
cd /home/$USER/
mkdir kernelbuild
cd kernelbuild
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.16.19.tar.xz
Es wird eine Weile dauern, den Kernel herunterzuladen, also haben Sie Geduld.
Vorbereitung für Ihren Build
Beginnen Sie Ihre Vorbereitung, indem Sie die Kernel-Tar-Datei entpacken. Kopieren Sie dann die Konfiguration Ihres vorhandenen Kernels hinein.
tar xavf linux-5.16.19.tar.xz && cd ./linux-5.16.19
cp /boot/config-`uname -r` .configJetzt müssen Sie die alte Konfiguration an den neuen Kernel anpassen.
make oldconfigDieses Skript fragt Sie, was Sie mit jeder neuen Funktion tun möchten. Wenn Sie die Standardwerte verwenden möchten, verwenden Sie stattdessen make olddefconfig.
Auch lesen: Wie man einen neuen PC für Linux baut
Konfigurieren des Ubuntu-Kernels
Sie können Ihre Konfiguration so belassen, wie sie ist, und es wird wahrscheinlich in Ordnung sein. Es macht jedoch keinen Sinn, einen benutzerdefinierten Kernel zu erstellen, wenn Sie ihn nicht anpassen möchten.
Um Ihre Konfiguration anzupassen, führen Sie aus
make menuconfig
Ein blaues Menü öffnet sich mit einer Auflistung von Kategorien. Diese Kategorien enthalten Funktionen, die Sie auswählen können, um sie in Ihren Kernel zu integrieren.

Wenn Sie beispielsweise wirklich Unterstützung für das BTRFS-Dateisystem direkt in den Kernel integrieren und andere Funktionen aktivieren möchten, gehen Sie zu „Dateisysteme ->“. Scrollen Sie dann nach unten, bis Sie „Btrfs-Dateisystemunterstützung“ sehen. Wählen Sie die Option aus, die Sie möchten, und drücken Sie die Leertaste. Die Leertaste wechselt zwischen „M“, „*“ und leer.
- „M“ bedeutet, dass die Funktion als Modul erstellt wird, das bei Bedarf geladen wird, wenn Ubuntu startet.
- „*“ bedeutet, dass die Funktion in den Kernel integriert wird und immer geladen wird.
Das Skript enthält keine leeren Optionen im Endprodukt. Wenn Sie mit der Einrichtung fertig sind, reinigen Sie das Verzeichnis.
make cleanJetzt ist Ihr Kernel bereit zum Erstellen.
Kernel-Pakete für Ubuntu erstellen
Es gibt eine Methode in Ubuntu, um deren Kernel zu erstellen, aber sie zwingt Sie dazu, Skripte zu verwenden, die für ältere Versionen geschrieben wurden. Manchmal ist das in Ordnung; manchmal bricht es schrecklich. Daher ist es normalerweise besser, einfach die allgemeinere Linux-Methode mit GNU Make zu verwenden.
make -j `getconf _NPROCESSORS_ONLN`
make deb-pkg LOCALVERSION=-customAll diese Zeile tut ist, den Kernel in .deb-Pakete zu kompilieren, wobei die Anzahl der CPU-Kerne auf Ihrem System plus eins verwendet wird. Es fügt auch „custom“ am Ende der Paketversion hinzu, um Ihren benutzerdefinierten Kernel von anderen zu unterscheiden.
Hinweis: Es kann Stunden dauern, einen Kernel zu kompilieren. Haben Sie Geduld.
Kernel installieren
Sie finden Ihre neuen Kernel-Pakete eine Verzeichnisebene höher. Sie sind leicht an ihrer Versionsnummer zu erkennen. Sie können dpkg verwenden, um sie zu installieren.
cd ./../
sudo dpkg -i linux-firmware-image-5.16.19-custom_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-libc-dev_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-headers-5.16.19-custom_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-image-5.16.19-custom-dbg_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-image-5.16.19-custom_5.16.19-custom-1_amd64.debWenn die Installation abgeschlossen ist, starten Sie Ihren Computer neu. Ubuntu wird automatisch in Ihren neuen Kernel booten. Sie können überprüfen, ob dies der Fall ist, indem Sie uname -r in einem Terminal ausführen, wenn es startet.
Benutzerdefinierte Binär-Kernels installieren
Eine andere Möglichkeit, benutzerdefinierte Linux-Kernels in Ubuntu zu verwenden, besteht darin, eine vorcompilierte Binärversion davon zu installieren. Im Gegensatz zur quellbasierten Version sind dies Kopien des Kernels, die bereits für das System und die Architektur, die Sie verwenden, kompiliert wurden.

Darüber hinaus können benutzerdefinierte Binär-Kernels Ihnen auch die Flexibilität bieten, über Kernel-Versionen für Ihre Ubuntu-Installation zu springen. Dies kann besonders hilfreich sein, wenn Sie einen Computer mit Hardwarekompatibilitätsproblemen betreiben und nicht mit der Kompilierung Ihres eigenen Kernels umgehen möchten.
In Anbetracht dessen ist die beliebteste Methode zur Installation benutzerdefinierter Binär-Kernels über Mainline. Dies ist ein GUI-Programm, das von bkw777 entwickelt wurde und darauf abzielt, den Prozess der Installation eines Linux-Kernels zu vereinfachen.

In diesem Programm werden alle Schritte kombiniert, die Sie unternehmen müssen, um den Kernel ordnungsgemäß herunterzuladen und zu konfigurieren. Zum Beispiel ermöglicht Ihnen Mainline, einfach einen Kernel-Binär und Header auszuwählen, den Sie installieren möchten. Es speichert dann diese Version in einem Cache, auf den Sie jederzeit zugreifen können.
Auch lesen: 5 Tools, um einfach eine benutzerdefinierte Linux-Distro zu erstellen
Mainline in Ubuntu installieren
Damit ist die Installation von Mainline relativ einfach. Zuerst müssen Sie apt mitteilen, das Paket-Repository von Mainline einzuschließen. Dazu können Sie den folgenden Befehl in Ihrem Terminal ausführen:
sudo add-apt-repository ppa:cappelikan/ppa
Von hier aus müssen Sie dann das Paketverzeichnis von Ubuntu aktualisieren. Dies ermöglicht es apt, aus dem Repository zu lesen, das Sie gerade hinzugefügt haben, und ermöglicht es Ihnen, Mainline darüber herunterzuladen:
sudo apt updateDamit bleibt nur noch die Installation von Mainline selbst:
sudo apt install mainline
Verwendung von Mainline
Sobald dies erledigt ist, können Sie Mainline laden, indem Sie zu Ihrem Anwendungsmenü gehen und danach suchen. Das Mainline-Programm wird dann geladen und zeigt alle Kernel-Pakete an, die Sie für Ihr System installieren können.

Von dort aus können Sie die Kernel-Version auswählen und installieren, die Sie für Ihr System verwenden möchten. Zum Beispiel kann ich „Linux 5.16.19“ auswählen und auf Installieren in der rechten Seitenleiste klicken, um diese Kernel-Version vollständig auf meinem Computer zu laden.

Andererseits kann ich Mainline auch verwenden, um die Kernel zu entfernen, die ich nicht mehr verwenden möchte. Zum Beispiel kann ich „Linux 5.15“ auswählen und auf Entfernen in der gleichen rechten Seitenleiste klicken, um diesen Kernel von meinem System zu entfernen.

Auf diese Weise können Sie Dateien und Binärdateien, die mit dieser Kernel-Version verknüpft sind, sauber hinzufügen oder entfernen. Dies liegt daran, dass eine Kernel-Binärdatei auch die Bibliotheken, Header und Firmware enthält, die es ihr ermöglichen, ordnungsgemäß zu funktionieren.
Auch lesen: Wie man den Kernel-Sicherheitsprüfungsfehler in Windows 10 behebt
Häufig gestellte Fragen
Was sind die Probleme beim Ausführen eines benutzerdefinierten Kernels?
Eines der größten Probleme beim Ausführen eines benutzerdefinierten Kernels ist, dass Sie ein wichtiges Stück Ihres Systems aus regulären Updates herausnehmen. Das bedeutet, dass Sie alle Kernel-Updates von diesem Punkt an manuell installieren müssen. Dazu gehören zusätzliche Hardwarefunktionen sowie kritische Sicherheitsupdates.
Das kann ein Problem sein, wenn Sie ein System benötigen, das läuft und sich mit minimalem Benutzerintervention selbst wartet. Daher erfordert das Ausführen eines benutzerdefinierten Kernels nicht nur, dass Sie wissen, welche Kernel-Funktionen Sie möchten, sondern auch, dass Sie sich über kritische Updates im Klaren sind.
Gibt es Nachteile bei der Verwendung eines Kernel-Binärs?
Ja. Einer der Hauptnachteile der Verwendung eines Kernel-Binärs ist, dass Sie keine Kontrolle über die integrierten Funktionen haben. Das bedeutet, dass ein Kernel-Binär im Gegensatz zu einem quellbasierten Kernel keine hardware-spezifischen Optimierungen und Unterstützung enthält.
Das bedeutet, dass Sie, wenn Sie exotische Hardware mit Ubuntu verwenden möchten, Ihren Kernel von Grund auf neu kompilieren müssen.
Ist es besser, eine Kernel-Funktion als Modul oder als integriert zu kompilieren?
Das hängt weitgehend davon ab, wofür Sie Ihren Kernel verwenden möchten. Zum Beispiel stellt das Kompilieren einer Funktion als integriert sicher, dass sie sofort geladen wird, sobald der Kernel in den Speicher geladen wird. Wenn Sie es jedoch auf diese Weise tun, erhöht sich die Gesamtgröße des endgültigen Kernels.
Währenddessen entfernt das Kompilieren einer Funktion als Modul sie aus dem Basis-Kernel. Stattdessen wird dieses Modul geladen, sobald der Kernel bereits im Speicher ist. Dies reduziert die Dateigröße des endgültigen Kernels, was ihn schneller und sicherer macht.
In Anbetracht dessen ist es eine gute Praxis, Kernel-Funktionen als integriert zu kompilieren, da dies die Wahrscheinlichkeit von Kompatibilitätsproblemen in Ihrem System verringert. Sie sollten jedoch auch darauf achten, nicht zu viele Funktionen einzuschließen, da dies die Gesamtgröße Ihres Kernels erheblich erhöhen kann.