- Durch das Kompilieren eines eigenen Kernels können Sie Leistung, Sicherheit und Support optimieren. Hardware Anpassung von Modulen, Dateisystemen und spezifischen Optionen.
- Der Standardprozess umfasst die Installation von Abhängigkeiten, das Herunterladen von Quellen von kernel.org, die Wiederverwendung der aktuellen Konfiguration und die Konfiguration mit make menuconfig oder xconfig.
- Es ist unerlässlich, den Kernel und die Module zu kompilieren und zu installieren, die Initramfs korrekt zu generieren und den neuen Kernel in GRUB zu integrieren, um eine reibungslose Funktion zu gewährleisten. Starten gereinigt.
- Die Wartung älterer Kernel und das Wissen, wie man einen problematischen Kernel zurücksetzt oder entfernt, sind der Schlüssel zum sicheren Experimentieren mit jeder Distribution.

Kompilieren Sie den Kernel von Linux Es ist eine jener Aufgaben, die den neugierigen Nutzer von demjenigen trennt, der etwas will. tief in das Betriebssystem eintauchenEs ist zwar nicht zwingend notwendig für die tägliche Nutzung von GNU/Linux, aber es ist eine hervorragende Möglichkeit, besser zu verstehen, wie Ihr Rechner funktioniert, das Beste aus der Hardware herauszuholen und das System nach Ihren Wünschen anzupassen.
In dieser Anleitung erfahren Sie Schritt für Schritt, wie Laden Sie einen Linux-Kernel von Grund auf herunter, konfigurieren Sie ihn, kompilieren Sie ihn und installieren Sie ihn. Wir behandeln Debian-basierte Distributionen (Debian, Ubuntu, Mint und Derivate) sowie allgemeine Konzepte, die auch für andere Familien wie Fedora oder CentOS gelten. Außerdem gehen wir darauf ein, warum Sie das tun sollten, welche Tools Sie benötigen, wie Sie Ihre aktuelle Kernel-Konfiguration wiederverwenden, wie Sie Optionen für Docker oder spezifische Hardware anpassen und wie Sie Änderungen rückgängig machen, falls etwas schiefgeht.
Warum Sie daran interessiert sein könnten, Ihren eigenen Kernel zu kompilieren
Bevor man irgendetwas anfasst, ist es wichtig, sich darüber im Klaren zu sein, was man will: Das Kompilieren des Kernels ist nicht immer notwendigEs gibt jedoch mehrere überzeugende Gründe dafür.
- Leistung und EffizienzDurch das Entfernen von Treibern und Funktionen, die Sie nie verwenden, kann Ihr System schneller starten, weniger Arbeitsspeicher verbrauchen und die Latenz bei bestimmten Arbeitslasten verringern.
- SicherheitDurch das Deaktivieren nicht benötigter Funktionen oder Module wird die Angriffsfläche verringert. Ein minimalistischerer Kernel ist in vielen Fällen ein sichererer Kernel.
- Unterstützung für spezifische HardwareManchmal ist der benötigte Treiber in Ihrer Distribution noch nicht enthalten oder deaktiviert; durch das Kompilieren eines eigenen Kernels können Sie ihn installieren. Aktivieren Sie die Unterstützung für Ihre Hardware. (Netzwerkkarten, RAID-Systeme, Geräte von Lagerung ungewöhnlich usw.).
- SpezialfunktionenVielleicht möchten Sie einen neuen Aufgabenplaner, spezielle Funktionen für Virtualisierung, Docker, Container, BPF, io_uring oder andere erweiterte Funktionen ausprobieren, die nicht standardmäßig aktiviert sind.
- Lernen und ExperimentierenDas Kompilieren des Kernels ist eine sehr einfache Methode, um Erfahren Sie, wie ein GNU/Linux-System intern organisiert ist., wie die Hardware initialisiert und wie die Module integriert werden.
Für einen Heimanwender, der den Computer lediglich einschalten, im Internet surfen und sonst nicht viel tun möchte, Den Kernel von Hand zu kompilieren ist, als würde man mit einer Kanone Fliegen töten.Es ist ein langer, heikler Prozess, und es ist normal, zwischendurch etwas zu essen. Kernel-Panik Bevor Sie es feinabstimmen. Wenn Sie gerne basteln, nur zu; wenn nicht, ist es am besten, bei den offiziellen Paketen Ihrer Distribution zu bleiben.
Was genau ist der Linux-Kernel?
Der Linux-Kernel ist die zentrale Komponente des Systems: Die Software, die zwischen der Hardware und den übrigen Programmen sitzt.Es ist verantwortlich für die Verwaltung von Speicher, Prozessen, Dateisystemen, Ein-/Ausgabegeräten, Netzwerk, Sicherheit und vielem mehr.
Linux begann 1991 als ein persönliches Projekt von Linus Torvalds um einen freien Kernel zu erstellen. Seitdem ist er enorm gewachsen: Heute sprechen wir von zig Millionen Codezeilen, die von Tausenden von Entwicklern unter der Lizenz gepflegt werden. GPLv2Das System, das wir üblicherweise „Linux“ nennen, ist eigentlich eine Kombination aus Linux-Kernel + GNU-Tools und andere Komponenten die den Vertrieb zusammenstellen.
Wenn Sie einen benutzerdefinierten Kernel kompilieren, erzeugen Sie eine Binärdatei (normalerweise /boot/vmlinuz-version) plus eine Reihe von Modulen in /lib/modules/version, begleitet von Dateien wie System.mapist die Config mit der verwendeten Konfiguration und dem anfänglichen Boot-Image (initrd oder initramfs).
Grundlegende Werkzeuge, die zum Kompilieren des Kernels benötigt werden
Um einen Linux-Kernel aus dem Quellcode zu kompilieren, benötigen Sie eine vollständige Entwicklungsumgebung. Auf Debian-, Ubuntu- und Mint-Systemen beinhaltet dies typischerweise die Installation von build-essential und eine Reihe weiterer Bibliotheken und Hilfsprogramme.
Viele klassische Ratgeber empfehlen Sets wie die folgenden (Sie können sie an Ihr Layout anpassen.):
- Minimales Set in Debian/Ubuntu für einen relativ modernen Kernel:
sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev libudev-dev libpci-dev libiberty-dev dkms openssl bc autoconf - Debian-Paketumgebung zum Erstellen von Kernel-.deb-Paketen:
sudo apt install autoconf automake autotools-dev bison build-essential dh-make debhelper debmake devscripts dpkg fakeroot file gfortran git gnupg fp-compiler lintian patch pbuilder perl quilt xutils-dev
In Fedora, CentOS und DerivatenDie Herangehensweise ändert sich leicht, aber die Grundidee bleibt dieselbe: Installieren Sie einen Satz von Entwicklungswerkzeugen und Bibliotheken für Konfigurationsschnittstellen (textuell und grafisch). Beispielsweise werden häufig die folgenden verwendet. Befehle des Stils:
su -c 'yum groupinstall "Development Tools"'
su -c 'yum install ncurses-devel qt-devel unifdef'
Ohne diese Abhängigkeiten schlägt die Kompilierung ziemlich schnell fehl, daher ist es Es ist unerlässlich, die Umgebung vorzubereiten, bevor der Quellcode heruntergeladen wird..
Wo kann man den Quellcode des Linux-Kernels herunterladen?
Die offizielle Quelle zum Erhalt des Kernel-Codes ist kernel.orgDort können Sie zwischen der Hauptversion, der stabilen Version und der Version mit Langzeitunterstützung (LTS) wählen. Jede Version hat ihren eigenen Ordner und einen Link zu einer Tarball Komprimido.
Einige Beispiele von Descargas die man oft sieht Die Tutorials sind:
- Stabiler Kernel 6.6 für aktuelle Tests:
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.xz - Kernel 6.0.11 (v6.x-Zweig):
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.0.11.tar.xz - Kernel 5.10.13 (v5.x-Zweig):
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.13.tar.xz
Sie können die Schriftarten auch von der Website herunterladen. Repositorys Ihrer DistributionIn Debian/Ubuntu gibt es beispielsweise das Paket Linux-Quelle:
sudo apt-get install linux-source
Dadurch entsteht eine Datei vom Typ linux-source-xxxtar.bz2 en / usr / srcdie Sie auf ähnliche Weise wie das kernel.org-Tarball entpacken können.
Bereiten Sie den Quellcodebaum und den Speicherplatz vor.
Sobald Sie das Kernel-Tarball heruntergeladen haben, müssen Sie es an einen Ort extrahieren, an dem Sie ausreichend Platz und SchreiberlaubnisSie sind nicht verpflichtet, /usr/src zu verwenden, obwohl es ein Klassiker ist. Sie können beispielsweise ein Verzeichnis wie folgt erstellen: ~/Downloads/my-kernels.
Beachten Sie, dass der Quellcodebaum im unkomprimierten Zustand etwa [Größenangabe fehlt] groß sein kann. 1,5 GBund während der Kompilierung springen die Werte leicht über den 7 GBLassen Sie also genügend Raum für Fehler.
Einige typische Beispiele für Dekompression sind:
- Mit tar.xz:
tar avxf linux-6.6.tar.xz - Mit tar.bz2:
tar jxvf linux-2.6.36.tar.bz2 -C /usr/src - Mit tar.gz:
tar zxvf linux-x.x.x.x.tar.gz -C /usr/src
Nach dem Entpacken erhalten Sie ein Verzeichnis wie dieses: Linux-6.6 o Linux-5.10.13Sie können einen generischen symbolischen Link erstellen, der heißt linux um bei der Routenplanung nicht den Überblick zu verlieren:
cd /usr/src
sudo ln -s linux-6.0.11 linux
Es ist nicht zwingend erforderlich, die Quellen anzugeben in / usr / src, obwohl viele Reiseführer es aus Tradition tun. Die Kompilierung und Installation funktionieren auf die gleiche Weise, wenn Sie sie in Ihrem Benutzerordner durchführen.Vorausgesetzt, Sie verfügen über den Platz und die entsprechenden Genehmigungen.
Die aktuelle Kernelkonfiguration wiederverwenden
Einen Kernel von Grund auf, Option für Option, zu konfigurieren, ist selbst für sehr erfahrene Anwender eine endlose Aufgabe. Die übliche Vorgehensweise ist Verwenden Sie die bereits verwendete Kernelkonfiguration wieder. als Ausgangspunkt.
Dazu ist es zunächst notwendig zu wissen Welchen Kernel haben Sie geladen? im Augenblick:
uname -r
Das Ergebnis wird in etwa so aussehen: 6.1.0-13-amd64 o 4.19.0-6-amd64Mit diesen Informationen können Sie die aktuelle Konfiguration kopieren von / boot zum Verzeichnis der neu dekomprimierten Quellen:
cd linux-6.6
cp /boot/config-$(uname -r) .config
Diese Datei .config Dies ist diejenige, die das Kernel-Build-System als Basis verwendet. In neueren Versionen werden Sie beim Ausführen der Konfigurationstools nur noch danach gefragt. Optionen, die in Ihrem vorherigen Kernel nicht vorhanden warenwas eine enorme Zeitersparnis bedeutet.
Wie man die Einstellungen an die tatsächliche Hardware anpasst
Neben der Wiederverwendung der aktuellen .config-Datei können Sie diese mithilfe der im Kernel-Baum enthaltenen Werkzeuge noch weiter optimieren. Ein besonders nützliches Werkzeug ist mache localmodconfig, wodurch versucht wird, eine Konfiguration zu generieren, die an die aktuell geladenen Module angepasst ist.
Führen Sie im Quellverzeichnis einfach Folgendes aus:
make localmodconfig
Dieser Befehl überprüft die aktiven Module und Es deaktiviert viele Funktionen, die Ihr System nicht nutzt.Dies ist ideal, wenn Sie einen Kernel für diesen speziellen Rechner konfigurieren. Wenn Sie jedoch einen generischen Kernel für andere Rechner oder Server kompilieren möchten, müssen Sie ihn anschließend sorgfältig überprüfen, um sicherzustellen, dass Sie keine Hardware auslassen, die auf dem System, auf dem Sie kompilieren, nicht vorhanden ist.
Kernel-Konfigurationsmodi: Text- und grafische Umgebungen
Die Kernelkonfiguration kann auf verschiedene Arten erfolgen. Alle führen letztendlich zur Erstellung oder Änderung der Datei. .configDas Erlebnis ist jedoch je nach Modus sehr unterschiedlich:
- make configEin rein textbasierter Fragebogen, Frage für Frage. Heute gilt er nur noch in sehr spezifischen Fällen als praktikabel; er ist langsam, mühsam und fehleranfällig.
- Mache menuconfigTextbasierte Menüoberfläche (ncurses), sehr verbreitet auf Servern oder wenn keine grafische Oberfläche vorhanden ist. Die Navigation erfolgt mit den Pfeiltasten, der Tabulatortaste und der Leertaste.
- xconfig erstellenEine auf Qt basierende grafische Benutzeroberfläche, komfortabel für die Mausbedienung. Ideal für die Arbeit an einem vollwertigen Desktop.
- gconfig erstellen: GTK-basierte grafische Benutzeroberfläche, entwickelt für GNOME-ähnliche Umgebungen.
In der Praxis, Mache menuconfig Es ist der Star in fast jeder Anleitung, weil es in nahezu jedem Kontext funktioniert. Ausgehend von Ihrer kopierten .config-Datei müssen Sie lediglich Folgendes tun:
make menuconfig
Sie sehen ein Hauptmenü mit Kategorien wie „Prozessortyp und -funktionen“, „Gerätetreiber“, „Dateisysteme“, „Netzwerkunterstützung“, „Virtualisierung“ usw. Innerhalb jeder Kategorie können Sie aktivieren, deaktivieren oder als Modul markieren Die verschiedenen Optionen. Normalerweise:
- [*] Es bedeutet „eingebaut“.
- [M] Es bedeutet, dass es als ladbares Modul kompiliert wurde.
- [] Es ist "deaktiviert".
Die Idee besteht darin, das zum Booten des Systems Notwendige (z. B. Unterstützung für die Root-Disk) in den Kernel zu integrieren und Module für … zu verwenden. weniger kritische Funktionen oder Funktionen, die nicht immer verwendet werdendamit der Hauptkernel leichter wird.
Jeder Menüpunkt bietet in der Regel eine Option dazu Hilfe Hier wird die genaue Funktionsweise erklärt und manchmal eine Standardempfehlung gegeben. Wenn Sie sich bei etwas Bestimmtem unsicher sind, empfiehlt es sich, den empfohlenen Wert oder den in der vorherigen Konfiguration aktivierten Wert beizubehalten.
Nützliche Einstellungen: Dateisysteme, Virtualisierung und Docker
Ein wichtiger Aspekt der Kernel-Anpassung ist die Auswahl einer guten Welche Dateisysteme, Containermechanismen und Netzwerkoptionen? Sie werden es benötigen. Zum Beispiel, wenn Sie Partitionen verwenden möchten. NTFS Beim Schreiben müssen Sie die entsprechende Unterstützung aktivieren (in der Regel zu finden unter „Dateisysteme → DOS/FAT/EXFAT/NT-Dateisysteme“).
Wenn Sie mit Virtualisierung oder Containern arbeiten möchten, gibt es eine Reihe von Optionen, die Sie unbedingt prüfen sollten. Für Docker und Docker Swarm gibt es beispielsweise eine Reihe von Funktionen von Namensräumen, Cgroups und Netzwerken das aktiv sein muss:
- Cgroup-Hierarchie.
CONFIG_NAMESPACES,CONFIG_NET_NS,CONFIG_PID_NS,CONFIG_IPC_NS,CONFIG_UTS_NS.CONFIG_CGROUPSund Unteroptionen wieCONFIG_CGROUP_CPUACCT,CONFIG_CGROUP_DEVICE,CONFIG_CGROUP_FREEZER,CONFIG_CGROUP_SCHED,CONFIG_CPUSETS,CONFIG_MEMCG.- Wichtige Unterstützung (
CONFIG_KEYS). - Netzwerkoptionen wie z.B.
CONFIG_VETH,CONFIG_BRIDGE,CONFIG_BRIDGE_NETFILTER,CONFIG_NF_NAT_IPV4,CONFIG_IP_NF_FILTER,CONFIG_IP_NF_TARGET_MASQUERADE,CONFIG_NETFILTER_XT_MATCH_ADDRTYPE,CONFIG_NETFILTER_XT_MATCH_CONNTRACK,CONFIG_NETFILTER_XT_MATCH_IPVS,CONFIG_IP_NF_NAT,CONFIG_NF_NAT,CONFIG_NF_NAT_NEEDED. - POSIX-Warteschlangenunterstützung (
CONFIG_POSIX_MQUEUE). - Optionen wie
CONFIG_IPVLANfür bestimmte Netzwerkkonfigurationen, die von Docker verwendet werden.
Ein Großteil dieser Funktionalität lässt sich problemlos als Modul kompilieren, aber Es empfiehlt sich, die Docker-Dokumentation zu konsultieren oder Testskripte zu verwenden.Es gibt Versorgungsunternehmen wie zum Beispiel check-config.sh die die .config-Datei des Kernels analysieren und Ihnen mitteilen, was für die vollständige Containerkompatibilität fehlt.
Die grundlegenden Mechanismen wären:
chmod +x check-config.sh
./check-config.sh .config
Die Ausgabe zeigt Ihnen, welche Optionen korrekt, welche fehlen oder welche falsch konfiguriert sind. Sollten Sie eine wichtige deaktivierte Option finden, können Sie den Vorgang erneut ausführen. Mache menuconfig o xconfig erstellenKorrigieren Sie den Fehler, speichern Sie und wiederholen Sie die Überprüfung.
Interessante Verbesserungen in den letzten Kernelversionen
Neben der individuellen Anpassung kompilieren viele Leute auch neue Versionen des Kernels, um Profitieren Sie von Leistungsverbesserungen und neuen Funktionen. Es wird noch einige Zeit dauern, bis diese Pakete in Ihrer Distribution ankommen.
Zum Beispiel in der Rama 6.6 Als Verbesserungen wurden beispielsweise folgende genannt:
- Deutliche Leistungssteigerung in EXT4, mit Steigerungen von bis zu 34 % bei bestimmten gleichzeitigen Schreiblasten.
- Verbesserungen bei der GPU-Unterstützung NVIDIA Verwendung des kostenlosen Treibers Neu, um den Boden für den NVK (Vulkan)-Fahrer vorzubereiten.
- Optionen für Aspekte des konfigurieren BIOS von HP-Geräten direkt von Linux.
- Cluster-Planungseinstellungen für Hybridprozessoren Intel (Alder Lake, Raptor Lake und später).
- Optimierung der direkten asynchronen E/A mit io_uring, mit Leistungssteigerungen von rund 37 % in bestimmten Tests.
- Ein neuer Aufgabenplaner, EEVDF (Früheste zulässige virtuelle Frist zuerst), wodurch die CPU-Zuteilung zwischen den Prozessen verbessert wird.
All das ist in modernen Versionen standardmäßig enthalten, aber es kann einige Zeit dauern, bis Ihre Distribution es paketiert oder aktiviert, weshalb viele Leute auf Folgendes zurückgreifen: Einen neueren Kernel manuell kompilieren.
Kernel kompilieren: make, Module und Kompilierungsthreads
Sobald die Konfiguration Ihren Wünschen entspricht, ist es an der Zeit, die CPU zu aktivieren. Hier kommen die Befehle zum Einsatz. um Klassische Kernelkompilierung. Die Kompilierung kann je nach Hardware und Anzahl der zu generierenden Module zwischen einigen Minuten und über einer Stunde dauern.
Im Wesentlichen die grundlegender Ablauf In Debian/Ubuntu (oder anderen Distributionen) ist es üblicherweise:
- Kernel kompilieren (Hauptimage):
make -j$(nproc)
Oder, falls Sie nur einen Kern verwenden möchten:
make - Module kompilieren und installieren:
sudo make modules_install
Die Wahl -j$(nproc) Es weist Make an, so viele parallele Prozesse zu nutzen, wie Ihre CPU Kerne hat, was auf modernen Rechnern viel Zeit spart. Sollten während der Kompilierung Fehler auftreten, müssen Sie diese an der Stelle überprüfen, an der sie auftreten; sie könnten folgende Ursachen haben: fehlende Abhängigkeiten, widersprüchliche Konfigurationen oder spezifische Fehler in dieser Kernelversion.
Einige fortgeschrittenere Rezepte verwenden das Debian-Tool. make-kpkg und das Paket Kernel-Paket um den Kernel in .deb-Dateien zu verpacken. Dadurch können Sie den benutzerdefinierten Kernel dann wie ein normales Paket installieren und deinstallieren, etwa so:
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
cd /usr/src
sudo dpkg -i *.deb
In diesem Szenario treten häufig auch Fehler im Zusammenhang mit Kernel-ZertifikateViele Anleitungen lösen spezifische Probleme, indem sie vertrauenswürdige Schlüssel in der .config-Datei mit einer Zeile wie dieser deaktivieren:
sed -i '/CONFIG_SYSTEM_TRUSTED_KEYS/s/^/#/g' .config
Installieren Sie den neu kompilierten Kernel und aktualisieren Sie den Bootloader.
Wenn Sie keine .deb-Pakete verwenden und mit den Standard-Kernel-Baum-Tools „bareback“ arbeiten, Die Installation erfolgt direkt aus dem Quellverzeichnis.Die häufigste Sequenz nach der Kompilierung ist:
- Installieren Sie die Module (falls Sie dies noch nicht getan haben):
sudo make modules_install - Installieren Sie den Kernel:
sudo make install
Das eigene Skriptsystem des Kernels kopiert die Binärdatei. bzBild Die Datei wird zusammen mit der System.map-Datei und der Konfigurationsdatei in /boot erstellt. In Debian/Ubuntu werden Skripte typischerweise ausgeführt in /etc/kernel/postinst.d die erzeugen initramfs und den Bootmanager (GRUB) automatisch aktualisieren.
Dennoch schadet es nie, es explizit auszuführen:
sudo update-initramfs -u
sudo update-grub
sudo update-grub2
Mit diesem Sie stellen sicher, dass das ursprüngliche Boot-Image korrekt neu generiert wurde. für die neue Kernelversion, und dass GRUB dies in seinem Menü berücksichtigt. In anderen Distributionen, wie beispielsweise einigen, die auf Red Hat basieren, kann es verwendet werden mkinitrd o Dracut statt update-initramfs, aber das Ziel ist dasselbe: Erstellen Sie ein für den neuen Kernel geeignetes initrd/initramfs-Image..
Die Rolle von initrd/initramfs und potenzielle Probleme
Die initrd oder initramfs ist eine Dateisystemabbild, das sehr früh im Bootvorgang in den Speicher geladen wirdEs enthält die minimalen Treiber, die zum Einbinden des eigentlichen Root-Dateisystems erforderlich sind (z. B. Unterstützung für den SATA- oder NVMe-Controller, auf dem sich Ihre /-Partition befindet).
Wenn Ihre initrd-Datei fehlerhaft generiert wurde oder die erforderlichen Module nicht enthält, startet der Kernel zwar, kann aber nicht eingebunden werden. / und du wirst am Ende ein Kernel-Panik er beschwert sich, dass er den/die/das nicht finden kann Wurzel Dateisystem. Dies ist ein typischer Fehler, wenn kritische Kerneloptionen deaktiviert sind oder die Initramfs nach einem Versionswechsel nicht neu generiert wird.
In Debian/Ubuntu lautet der heutige Referenzbefehl: update-initramfs:
sudo update-initramfs -c -k x.x.x
Parameter -c erzeugt ein neues Bild, und -k Gibt die genaue Kernelversion an. In älteren Distributionen (oder mit anderen Tools) wurde sie verwendet. mkinitrd mit ähnlicher Syntax:
cd /boot
mkinitrd -o initrd.img-2.6.36 2.6.36
Sollten Sie nach der Installation Ihres benutzerdefinierten Kernels Fehler im Zusammenhang mit /lib/modules oder dem Mounten des Root-Verzeichnisses feststellen, Überprüfen Sie zunächst initramfs/initrd und die GRUB-Konfiguration. bevor ich irgendetwas anderes berühre.
Überprüfen Sie, ob der neue Kernel korrekt funktioniert.
Nachdem alles installiert und der Bootmanager aktualisiert wurde, ist es Zeit für einen Neustart zum Testen des Systems. Während des Startvorgangs GRUB- und Kernel-Bootmeldungen überwachen für den Fall, dass Fehler von Modulen, Dateisystemen oder Geräten auftreten, die nicht erkannt werden.
Sobald Sie im System sind, können Sie mit folgendem Befehl überprüfen, welche Kernel-Version Sie verwenden:
uname -a
Die Ausgabe sollte Folgendes widerspiegeln: neu kompilierte VersionVon da an geht es darum, Ihre üblichen Dienste zu testen: Webserver, Datenbanken, Docker, virtuelle MaschinenDesktop-Programme usw. Wenn alles ordnungsgemäß funktioniert, können Sie diesen Kernel als Hauptkernel beibehalten und ältere Versionen als Backups aufbewahren.
Wie kann man zu einem vorherigen Kernel zurückkehren und den neuen deinstallieren?
Sollte etwas schiefgehen (was passieren kann, besonders in den ersten paar Malen), ist das Wichtigste, dass Keine PanikSolange GRUB andere funktionierende Kernel auflistet, können Sie das System ohne größere Schwierigkeiten wiederherstellen.
Verfahren typisch würde:
- Starten Sie das System neu.
- Navigieren Sie im GRUB-Bildschirm mit den Pfeilen zum Abschnitt „Typ“. „Erweiterte Optionen für…“.
- Wählen Sie eine ältere Kernel-Version, von der Sie wissen, dass sie gut funktioniert hat.
- Starten Sie den Computer mit diesem Kernel und löschen Sie anschließend den problematischen Kernel.
Wenn Sie den Kernel manuell, ohne .deb-Pakete, installiert haben, umfasst die Deinstallation in der Regel Folgendes: Löschen Sie die entsprechenden Dateien in /boot und /lib/modules.Um beispielsweise eine Version 6.6.0 zu entfernen, könnten Sie Folgendes tun:
cd /boot
sudo rm config-6.6.0 initrd.img-6.6.0 System.map-6.6.0 vmlinuz-6.6.0
Und anschließend die zugehörigen Module löschen:
cd /lib/modules
sudo rm -rf 6.6.0
Nach Abschluss der Arbeiten aktualisieren Sie GRUB, sodass dieser Kernel nicht mehr im Menü angeboten wird, und starten Sie das System neu:
sudo update-grub
sudo update-grub2
sudo reboot
Wenn Sie den Kernel als .deb-Paket installiert haben, ist das Ergebnis sauberer. Verwenden Sie es wie jedes andere Paket. Verwenden Sie apt oder dpkg, um es zu deinstallieren und so den Systemzustand besser unter Kontrolle zu halten.
Hinweise zu anderen Distributionen: Fedora, CentOS und andere
Obwohl sich dieser Leitfaden hauptsächlich auf Debian/Ubuntu/Mint konzentriert, ist die allgemeine Vorgehensweise bei Red Hat-basierten Distributionen wie Fedora oder CentOS ähnlich. Welche Änderungen gibt es? Paketverwaltungstools, einige Abhängigkeitsnamen und wie man auf den Bootmanager zugreift.
In Fedora/CentOS könnte ein grundlegender Arbeitsablauf zum Kompilieren eines Kernels von kernel.org beispielsweise so aussehen:
- Installieren Sie die Entwicklungstools:
su -c 'yum groupinstall "Development Tools"'
su -c 'yum install ncurses-devel qt-devel unifdef' - Laden Sie eine stabile Version herunter (z. B. 2.6.36 in den klassischen Beispielen):
cd /tmp
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2 - Entpacken und bereiten Sie den Quellcodebaum vor:
mkdir /usr/src/linux
tar -xjvf linux-2.6.36.tar.bz2 -C /usr/src/linux
cd /usr/src/linux - Konfigurieren Sie den Kernel mit menuconfig, xconfig oder gconfig.
- Kompilieren und installieren:
make
make modules
make modules_install
make install
Anschließend müssen Sie die Dokumente überprüfen und bearbeiten. /boot/grub/grub.conf (oder die entsprechende Datei, je nachdem, ob Sie GRUB Legacy, GRUB2 usw. verwenden), um einen Eintrag für den neuen Kernel mit seiner zugehörigen initrd hinzuzufügen, wobei die Pfade sorgfältig beachtet werden müssen. root = und Verweise auf logische Volumes, wenn Sie LVM verwenden.
Das Kompilieren, Konfigurieren und Installieren eines benutzerdefinierten Linux-Kernels ist ein langwieriger, aber äußerst lehrreicher Prozess: Man lernt, welche Module zum Booten benötigt werden, welche Optionen für die eigenen Dienste (wie Docker oder Virtualisierung) unerlässlich sind, wie initramfs und GRUB in den Bootvorgang integriert sind und wie man stets eine Ausweichoption für einen vorherigen Kernel bereithält, falls etwas schiefgeht. Wer sich die Zeit nimmt, jeden Abschnitt durchzugehen, seine aktuelle Kernelkonfiguration sinnvoll wiederzuverwenden und Änderungen schrittweise zu testen, kann am Ende ein wirklich leistungsstarkes System nutzen. besser optimiert, auf Ihre Hardware zugeschnitten und auf Ihre tatsächlichen Bedürfnisse abgestimmt als die von den generischen Kernels der meisten Distributionen bereitgestellten.
Leidenschaftlicher Autor über die Welt der Bytes und der Technologie im Allgemeinen. Ich liebe es, mein Wissen durch Schreiben zu teilen, und genau das werde ich in diesem Blog tun und Ihnen die interessantesten Dinge über Gadgets, Software, Hardware, technologische Trends und mehr zeigen. Mein Ziel ist es, Ihnen dabei zu helfen, sich auf einfache und unterhaltsame Weise in der digitalen Welt zurechtzufinden.