Wie man Konfigurationen in make menuconfig findet und den Kernel feinabstimmt.

Letzte Aktualisierung: 31/10/2025
Autor: Holger
  • Die Suche mit „/“ in menuconfig zeigt Pfade, Abhängigkeiten und den Status jedes Symbols an.
  • Beginnen Sie mit einer funktionierenden .config-Datei und aktualisieren Sie diese mit oldconfig/olddefconfig oder localmodconfig.
  • Sicher kompilieren und installieren: modules_install, initramfs und GRUB update.
  • Vermeiden Sie typische Fehler (außerhalb des Kernelbaums, gemischte Toolchains, versteckte Abhängigkeiten).

kernel make menuconfig screen

Wenn Sie versuchen herauszufinden Wie man in `make menuconfig` nach Konfigurationen sucht Und wenn Sie schon dabei sind, bereiten Sie gleich Ihren Kernel für Ihren Rechner vor. Hier finden Sie eine umfassende und praktische Anleitung. Wir beginnen mit den Grundlagen, damit Sie sich nicht in Menüs, Symbolen und Abhängigkeiten verlieren, und schließen mit der Kompilierung und Installation ab. Tricks in Gentoo, Debian und Derivaten.

Ziel ist es, dass Sie den Kernel-Konfigurator problemlos bedienen, jede Option mithilfe der Suchfunktion finden und verstehen können. Symbolformate und ihre Abhängigkeitenund häufige Fehler bei der Kompilierung und Installation vermeiden. All dies wird anhand von Beispielen aus der Praxis veranschaulicht. Treiber (Netzwerk, WLAN, Ton, Video, Kameras, Touchscreens), Empfehlungen für Container wie Docker und wichtige Hinweise zu Kbuild und Toolchains.

Was ist `make menuconfig` und wozu dient es?

Das Kernel-Toolset umfasst mehrere konfigurierbare Frontends, die Mache menuconfig Eines der beliebtesten Programme ist seine textbasierte Benutzeroberfläche, die auf ncurses basiert. Sie ermöglicht es, Funktionen zu aktivieren, beispielsweise solche, die in den Kernel integriert sind (Y), als Modul verfügbar sind (M) oder deaktiviert sind (N), sowie Kategorien und Untermenüs mithilfe der Tastatur zu durchsuchen.

Bevor wir beginnen, ist es hilfreich, Ihre Hardware um nichts Wesentliches zu deaktivieren. Befehle als lspci, lspci -k, dmesg Ein einfacher `lsmod`-Befehl zum Anzeigen der geladenen Module hilft Ihnen, die benötigten Treiber zu identifizieren. Es empfiehlt sich, die aktuelle Konfiguration in den Quellenordner zu kopieren und als Grundlage zu verwenden.

Eine typische Vorbereitung beinhaltet den Wechsel zum Quellcodeverzeichnis (zum Beispiel in /usr/src/linux oder der spezifischen Version, die Sie verwenden), und kopieren Sie die laufende Kerneldatei: cp -v /boot/config-$(uname -r) .configMit dieser Grundlage können Sie starten make menuconfig und beginnen Sie mit der Anpassung von Optionen, ohne von Grund auf neu beginnen zu müssen.

In der Benutzeroberfläche sehen Sie Kategorien wie zum Beispiel Gerätetreiber, Dateisysteme, Netzwerkunterstützung oder CPU/Virtualisierung. Bewegen Sie den Cursor mit den Pfeiltasten, wechseln Sie mit der Tabulatortaste zwischen den Schaltflächen und ändern Sie den Status einer Option mit der Leertaste oder den Tasten Y, M und N. Zu jedem Element gehört in der Regel eine kontextbezogene Hilfe, die Sie mit der Taste H oder der Schaltfläche „Hilfe“ aufrufen können.

Suche innerhalb von menuconfig

Suche nach Optionen innerhalb von menuconfig (Symbole, Pfade und Abhängigkeiten)

Die integrierte Suchfunktion ist entscheidend, um Verwirrung zu vermeiden. Drücken Sie / (Schrägstrich) innerhalb von menuconfig und geben Sie den Symbolnamen ein (zum Beispiel, BT_HCIBTUSB o IPVLANoder ein Schlüsselwort aus dem Aufgabentext. Das Ergebnis zeigt das Symbol (CONFIG_…), seine Beschreibung, seinen Standort im Menü, seine Abhängigkeiten und wo es definiert ist.

Interpretieren Sie die Ergebnisse sorgfältig: Sie sehen Abschnitte wie „Ort“ (Menüpfad), „Abhängig von“ (Bedingungen, die erfüllt sein müssen) und „Wählt aus“ (Elemente, die durch diese Option aktiviert werden). Wenn eine Option ausgeblendet ist, bedeutet das wahrscheinlich, dass Eine Abhängigkeit fehltAktivieren Sie es zunächst, indem Sie den Hinweisen der Suchmaschine folgen.

Sobald Sie die Option gefunden haben, folgen Sie dem unter „Standort“ angegebenen Pfad, um sie zu erreichen. Falls sie als angeboten wird integriert () O Modul (<M>Wählen Sie das, was am besten zu Ihnen passt. Module sind flexibler, aber bestimmte kritische Funktionen (z. B. Root-Festplattencontroller oder Dateisysteme für den …) sind nicht verfügbar. StartenEs empfiehlt sich, sie zu integrieren.

Die Hilfe (H oder Hilfe) ist nützlich: Sie erklärt den Zweck des Treibers, seine Stabilität und gibt oft Hinweise darauf, ob es besser ist, ihn als Modul oder als integrierten Treiber zu aktivieren. (NEU), (EXPERIMENTELL), (VERALTET) oder (ÜBERLEGT) Sie informieren Sie über den Status jeder Option.

Navigation und Symbole: Was bedeuten Y/M/N und wie wird die Menüsprache erklärt?

Die Einträge im Konfigurator verwenden visuelle Symbole, um ihren Status anzuzeigen. Sie werden sehen y wenn das Element monolithisch deaktiviert oder aktiviert werden kann; und < >, , <*> wenn es auch die Kompilierung als Modul ermöglicht. Jeder Tastendruck mit der Leertaste (oder Y/M/N) ändert den Zustand, sofern zulässig.

  QNodeOS: Das Betriebssystem, das Quantennetzwerke revolutionieren könnte

Es ist auch üblich zu sehen {M} oder {*} wenn es nicht möglich ist, eine Option vollständig zu deaktivieren (es bestehen Abhängigkeiten zu vorgelagerten Systemen), und Formate wie -M- oder -*- Diese Hinweise deuten darauf hin, dass der Status eine andere Option erfordert. Falls Sie dies feststellen, verwenden Sie die Suchfunktion und die Hilfe, um herauszufinden, welche Abhängigkeit Sie aktivieren oder deaktivieren müssen.

Um schnell zu navigieren, springen die Tasten A bis Z zur nächsten Zeile, in der der entsprechende Buchstabe fettgedruckt ist. Die Leertaste schaltet den Status um, die Tabulatortaste wechselt zwischen den Schaltflächen (Auswählen, Beenden, Hilfe, Speichern) und die Eingabetaste öffnet Untermenüs. Tastaturkürzel Es beschleunigt die Arbeit erheblich.

Wenn Sie fertig sind, speichern Sie die Datei mit „Speichern“. Die .config-Datei wird im Verzeichnis „sources“ abgelegt; falls sie bereits existiert, wird die vorherige Version umbenannt. .config.oldDas ist sehr praktisch, um Änderungen zu vergleichen oder schnell zurückzugehen.

Bereiten Sie den Quellcodebaum vor: Verwenden und aktualisieren Sie Ihre .config-Datei.

Der effizienteste Ansatz besteht darin, mit einem/einer bekannte Konfiguration, die bereits funktioniertKopieren Sie die aktuelle .config-Datei aus /boot wie beschrieben und aktualisieren Sie sie mit make oldconfig (Sie werden nach Aktualisierungen gefragt), oder schneller mit make olddefconfig (Es akzeptiert Standardwerte für die neue Version, ohne Sie zu fragen.) Beide Ansätze sparen Zeit bei der Migration zwischen Versionen.

Eine weitere sehr praktische Option ist mache localmodconfigDadurch wird eine Konfiguration basierend auf den aktuell geladenen Modulen (wie von lsmod angezeigt) erstellt. Sie eignet sich ideal zur Feinabstimmung auf Ihre aktuelle Hardware. Wenn Sie jedoch für einen anderen Rechner kompilieren, müssen Sie zusätzliche Optionen manuell überprüfen.

Falls Sie zum Ausgangspunkt zurückkehren müssen, make defconfig Es generiert die Standardkonfiguration für Ihre Architektur. Und falls Sie die Frontend-Alternativen sehen möchten, gibt es neben menuconfig noch weitere Optionen. mach nconfig (moderne Einfälle), xconfig erstellen (Qt) oder gconfig erstellen (GTK), nützlich, wenn Sie eine grafische Benutzeroberfläche bevorzugen.

In Gentoo ist es wichtig, sicherzustellen, dass die Verbindung /usr/src/linux mit auf die richtigen Quellen verweisen eselect kernel list y eselect kernel setBei Verwendung von Distributionskerneln erhalten Sie sichere Standardkonfigurationen, wodurch die Risiken auf kritischen Systemen reduziert werden.

Kompilierung und Installation: Sichere Befehle und bewährte Vorgehensweisen

Nach dem Speichern Ihrer .config-Datei starten Sie die Kompilierung mit make -j$(nproc) zu benutzen alle CPU-KerneJe nach Hardware und Anzahl der ausgewählten Optionen kann der Vorgang zwischen einigen Minuten und mehr als einer Stunde dauern.

Wenn Sie Funktionen wie Module aktiviert haben, installieren Sie diese anschließend mit make modules_installDadurch werden die Module kopiert nach /lib/modules/$(version). Dann, make install Dabei werden der Kernel und die zugehörigen Dateien in /boot abgelegt und bei vielen Distributionen der Bootmanager-Eintrag automatisch aktualisiert.

Um die initramfs zu generieren (notwendig bei der Verwendung bestimmter Module, z. B. Controller von Lagerung oder ZFS/NVIDIA), in Gentoo können Sie verwenden genkernel –install initramfsund in anderen Umgebungen Werkzeuge wie dracut o update-initramfs. Nicht vergessen GRUB aktualisieren falls Ihr Vertriebssystem dies nicht automatisch erledigt.

In Debian und Derivaten ist es üblich, Folgendes auszuführen: update-initramfs -u y GRUB aktualisieren (zum Beispiel mit update-grub) O grub-mkconfig -o /boot/grub/grub.cfgIn Systemen mit mehreren Kerneln hilft die Beibehaltung eindeutiger Namen (z. B. durch Hinzufügen eines Labels zu EXTRAVERSION), Stabile Versionen nicht überschreiben die du noch brauchst.

In Debian und Derivaten ist es üblich, Folgendes auszuführen: update-initramfs -u y update-grub o grub-mkconfig -o /boot/grub/grub.cfgIn Systemen mit mehreren Kerneln hilft die Beibehaltung eindeutiger Namen (z. B. durch Hinzufügen eines Labels zu EXTRAVERSION), Stabile Versionen nicht überschreiben die du noch brauchst.

Häufig verwendete Treiber aktivieren: Wo Sie diese im Menü finden

  • Für Ethernet-Netzwerkkarten: Gehen Sie zu Gerätetreiber > Netzwerkgeräteunterstützung > Ethernet-Treiberunterstützung Wählen Sie den entsprechenden Chipsatztreiber aus. Sie können ihn integrieren oder als separates Modul belassen, falls er für den Systemstart nicht unbedingt erforderlich ist.
  • Für WLAN: prüfen Gerätetreiber > Netzwerkgeräteunterstützung > Drahtloses LAN und kennzeichnet den jeweiligen Treiber (Atheros, Intel(Broadcom usw.). Es ist oft praktisch, es zu kompilieren als Modul um Aktualisierungen oder Tests zu erleichtern.
  • Grafik: Eingabe Gerätetreiber > Grafikunterstützung. Für NVIDIA Bei Nouveau- oder AMD-GPUs mit amdgpu prüfen Sie bitte die entsprechende Unterstützung; bei Hybridsystemen prüfen Sie die Umschaltoptionen. Es empfiehlt sich, die Hilfedokumentation jedes Treibers zu lesen, um zwischen einer Modulgrafikeinheit und einer integrierten Grafikeinheit zu entscheiden.
  • Ton: geht durch Gerätetreiber > Soundkartenunterstützung > Erweitert Linux Sound Architecture (ALSA)Wählen Sie den passenden Treiber für Ihre Grafikkarte und aktivieren Sie die allgemeine ALSA-Unterstützung. Wenn Sie sich unsicher sind, bietet die Option „Module“ mehr Flexibilität.
  • Webcams: Zugriff Gerätetreiber > Multimedia-UnterstützungAktivieren Sie „Kameras/Video-Grabber“ und innerhalb von „Medien“. USB "Adapter" aktiv USB-Videoklasse (UVC) wenn Ihre Webcam dem UVC-Standard entspricht.
  • Touchscreens: Eingabe Gerätetreiber > HID-Unterstützung > Spezielle HID-Treiber und ermöglicht HID-Multitouch für gängige Multi-Touch-Panels.
  Schritt für Schritt zur Erstellung eines Snap-Pakets

Dateisysteme, Sicherheit und Virtualisierung: Wichtige Entscheidungen

En Dateisysteme Sie können EXT4 (bei Bedarf mit Verschlüsselung), XFS und Btrfs aktivieren. NTFSVFAT/EXFAT, ISO/UDF und Netzwerksysteme wie NFS oder CIFS. Für das Root-Dateisystem des Systemstarts ist es üblich, dieses in den Kernel zu integrieren, um die Abhängigkeit von Modulen in der Initramfs zu vermeiden.

Im Hinblick auf die Sicherheit sollten Sie Optionen wie die folgenden in Betracht ziehen: SELinuxKernel-Schlüssel (KEYS) oder Integritätstechnologien wie EVM. Einige Funktionen können die Leistung beeinträchtigen, bieten aber zusätzliche Schutzebenen in sensiblen Umgebungen.

Abschnitt Virtualisierung Es umfasst KVM und weitere für Hypervisoren notwendige Elemente. Auf modernen CPUs ist die Aktivierung von KVM und der entsprechenden Intel/AMD-Flags in der Regel unkompliziert und sehr vorteilhaft für virtuelle Maschinen.

In der Kryptographie (Kryptografische APISie können CPU-beschleunigte Algorithmen (SSE2/SSSE3/AVX/AVX2) aktivieren, sofern Ihre Hardware diese unterstützt. Dadurch werden Verschlüsselung, Komprimierung und verschiedene Protokolloperationen beschleunigt.

Kernel für Docker und Orchestratoren: essentielle Optionen

Wenn Sie Container (Docker, Docker Swarm usw.) ausführen möchten, stellen Sie sicher, dass Sie diese Option aktivieren. Namensräume und CgroupsZu den üblichen Optionen gehören: CONFIG_NAMESPACES, CONFIG_NET_NS, CONFIG_PID_NS, CONFIG_IPC_NS, CONFIG_UTS_NS und CONFIG_CGROUPS mit seinen Unterkomponenten (CPUACCT, DEVICE, FREEZER, SCHED, CPUSETS, MEMCG).

Für Containernetzwerke sind sie von zentraler Bedeutung. CONFIG_VETH (Virtuelles Ethernet), Bridge und Netfilter. Zum Beispiel: CONFIG_BRIDGE, CONFIG_BRIDGE_NETFILTER, CONFIG_NETFILTER_XT_MATCH_CONNTRACK, CONFIG_NETFILTER_XT_MATCH_ADDRTYPE, CONFIG_NETFILTER_XT_MATCH_IPVS, CONFIG_NF_NAT und Ziele wie CONFIG_IP_NF_TARGET_MASQUERADEViele dieser Optionen können als Module kompiliert werden.

Der Fahrer CONFIG_IPVLAN Dies ist in fortgeschrittenen Container-Netzwerkszenarien üblich. Im Zweifelsfall verwenden Sie die Suchfunktion mit "/" und überprüfen Sie die Abhängigkeiten. Durch die Kompilierung als Modul können Sie es nur bei Bedarf laden.

Es Skript Eine gängige Methode, die Kompatibilität Ihrer .config-Datei mit Docker zu überprüfen, ist die Verwendung von `check-config.sh`. Nachdem Sie die Berechtigungen erteilt und auf Ihre .config-Datei verwiesen haben... .configEs zeigt Ihnen, was für ein vollständiges Container-Erlebnis noch fehlt.

Kbuild und Toolchains: Wichtige Hinweise

Das Kernel-Build-System (Kbuild) ermöglicht es Ihnen, den Build-Prozess mithilfe von Umgebungsvariablen zu parametrisieren. Zum Beispiel: LLVM=1 Mit Clang/LLVM kompilieren. Aber Vorsicht: GNU-Tools dürfen nicht mit LLVM vermischt werden (zum Beispiel, CC=gcc mit LD=ld.lld), Weil Du wirst die Konstruktion zerstören. auf eine Weise, die keineswegs offensichtlich ist.

Wenn Sie vollständig mit LLVM kompilieren möchten, definieren Sie LLVM=1 oder verwenden CC=clang und die übrigen konsistenten Binärprogramme (ar, nm, ld usw.). Beachten Sie stets die Dokumentation des verwendeten Kernels, da bestimmte Flags oder aggressive Optimierungen im Produktivbetrieb möglicherweise nicht empfehlenswert sind.

In sehr alten Zweigen (wie 2.4) Schritte wie machen Sie eine Abfindung o mach sauber vor dem Bau; heutzutage ist das normalerweise nicht mehr nötig, aber wenn Sie von problematischen Vorgängerkonfigurationen kommen, make mrproper Dadurch wird der Verzeichnisbaum in einen sauberen Zustand versetzt. Erstellen Sie vor der Bereinigung eine Sicherungskopie Ihrer .config-Datei.

Um benutzerdefinierte Kernel zu unterscheiden, fügen viele Administratoren ein Tag hinzu. EXTRAVERSION (Makefile) oder verwenden Sie eindeutige Image-Namen. Dadurch wird verhindert, dass der stabile Kernel, mit dem Sie täglich booten, versehentlich überschrieben wird.

„make: *** Keine Regel zum Erstellen des Ziels 'menuconfig'. Abbruch.“ Warum passiert das?

Dieser Fehler tritt auf, wenn Sie Folgendes ausführen make menuconfig outside of the sources tree des Kernels oder in einem Projekt, das die Kconfig/mconf-Infrastruktur nicht enthält. Das Ziel „menuconfig“ wird vom Kernel-Makefile zusammen mit den zugehörigen Skripten bereitgestellt; wenn Sie sich nicht in diesem Verzeichnis befinden, existiert keine solche Regel.

  Secure Boot Violation: Ursachen, Lösungen und Schritt-für-Schritt-UEFI-Anleitung

Typische Lösungen: Stellen Sie sicher, dass Sie sich in /usr/src/linux (oder im Ordner der unkomprimierten Version) und dass ein Kernel-Makefile mit dem Ziel „menuconfig“ vorhanden ist. Wenn Sie Kconfig in einem kleinen eigenen Projekt verwenden möchten (z. B. einem „Hello World“-Programm mit Kconfig), müssen Sie die entsprechenden Tools einbinden. scripts/kconfig (oder verwenden Sie Pakete wie kconfig-frontends) und ein Makefile, das mconf/nconf korrekt aufruft. Ohne diese Infrastruktur weiß der Befehl nicht, was zu tun ist.

Fazit für die Praxis: menuconfig ist Teil des Kernels.Verwechseln Sie es nicht mit einem generischen Makefile. Um in einem minimalen Projekt mit Kconfig zu experimentieren, binden Sie die entsprechenden Abhängigkeiten ein oder entwickeln Sie Ihren eigenen Workflow mithilfe separat kompilierter Kconfig-Dienstprogramme.

Downloadquellen: Mainline, Stable, Longterm und Linux-Next

Den Kernel erhalten Sie über den Paketmanager Ihrer Distribution oder von der offiziellen Website. Auf kernel.org finden Sie verschiedene Entwicklungszweige. Hauptleitung (neueste Updates und aktuelle Patches), Stabil (für den täglichen Gebrauch getestet) und Langfristig (LTS, ideal für Unternehmen oder alle, die Wert auf Stabilität legen), zusätzlich zu linux-next um zu verfolgen, was kommt.

Si Descargas Entpacken Sie eine tar.xz-Datei und wechseln Sie in den entsprechenden Ordner, um dort zu arbeiten. Das Kompilieren nach /usr/src ist nicht zwingend erforderlich; der Build Es funktioniert auf jeder Route Vorausgesetzt, die Abhängigkeiten (Compiler, Header, Binärprogramme usw.) sind installiert. Unter Debian/Ubuntu wird üblicherweise ein Metapaket wie build-essential und zugehörige Hilfsprogramme benötigt.

In Gentoo listet „emerge -s sources“ Quellpakete auf (z. B. gentoo-sources). Bei der Installation mit emerge -a gentoo-sourcesDie Verzeichnisstruktur wird in /usr/src erstellt und Sie können die aktive Version auswählen mit eselect kernelÄndern Sie den symbolischen Link /usr/src/linux vor dem Konfigurieren und Kompilieren auf die gewünschte Version.

Beachten Sie, dass bei der Verwendung von Tools wie genkernel für initramfs der Link /usr/src/linux auf die korrekten Quellen verweisen muss. Andernfalls könnte ein fehlerhaftes initramfs generiert werden. unvereinbar mit dem Kernel, den Sie gerade kompiliert haben.

Konfigurationen vergleichen und die Umgebung bereinigen

Wenn Sie auf eine neue Version aktualisieren, mache oldconfig Es führt Sie durch das Neue; mache olddefconfig Es übernimmt die Standardwerte der hinzugefügten Elemente. Um zu überprüfen, was sich im Vergleich zur Standardkonfiguration der Architektur geändert hat, können Sie eine separate Standardkonfigurationsdatei erstellen und diese mit Ihrer Konfigurationsdatei mithilfe von diff vergleichen.

Wenn Sie schon viel herumprobiert haben und immer noch etwas nicht passt, sollten Sie Folgendes in Betracht ziehen: mrrichtig machen Für einen sauberen Start. Hinweis: Dadurch werden Kompilierungsartefakte und Konfigurationsdateien entfernt. Speichern Sie daher Ihre .config-Datei vorher. Wenn der Verzeichnisbaum mit alten Builds überladen ist, verhindert eine rechtzeitige Bereinigung unerwartete Fehler.

Es empfiehlt sich, Versionen davon zu speichern. .config mit Namen (z. B. .config-01, .config-02…) bevor die aktive Konfiguration überschrieben wird. Dadurch können Sie zu einer stabilen Konfiguration zurückkehren, während Sie Änderungen parallel testen.

Wenn Sie externe Treiber (wie NVIDIA oder ZFS) verwenden, müssen Sie die externen Module neu kompilieren und die Initramfs nach der Installation des neuen Kernels neu generieren. Dies ist der beste Weg, um zu vermeiden, dass der Kernel mit einem Fehler vom System bootet. fehlende Funktionalität oder schwarze Bildschirme aufgrund eines nicht gekoppelten Treibers.

Wer die Suche mit „/“ beherrscht, die Bedeutung von Y/M/N und deren Notation versteht und sich Flows wie olddefconfig oder localmodconfig zunutze macht, für den wird das Konfigurieren und Kompilieren des Kernels nicht länger zu einem Labyrinth. Mit einer bekannten .config-Basis, sinnvoller Baumbereinigung und Beachtung der AbhängigkeitenSie erhalten einen auf Ihre Hardware abgestimmten Kernel, der für den Produktiveinsatz oder zum Experimentieren mit den neuesten Funktionen bereit ist, ohne dass Sie die Kontrolle über das System verlieren.

Tutorial zum Befehl „journalctl“
Verwandte Artikel:
Journalctl-Befehls-Tutorial: Vollständiger und praktischer Leitfaden