Kernel-Konfiguration von aktuell laufendem Linux-System erhalten?

107

Ich habe versehentlich meine .config-Datei für meine Kernelkonfiguration unter Linux gelöscht und mich anscheinend daran erinnert, dass es irgendwie eine Möglichkeit gab, die Kernelkonfiguration über das proc-Dateisystem abzurufen.

Ist das noch möglich und wenn ja, wie würde ich es tun?

Sonny Ordell
quelle
@Sonny Ordell: Es gibt jetzt zwei gültige Antworten. Kannst du einen von ihnen akzeptieren?
Hennes
3
@Hennes Benutzer war seitdem nicht online Jun 27 '11 at 16:19. Glaube nicht, dass er irgendetwas akzeptieren wird.
DanteTheEgregore

Antworten:

110

Abhängig von Ihrem System finden Sie es in einem der folgenden Verzeichnisse:

  1. /proc/config.gz
  2. /boot/config
  3. /boot/config-$(uname -r)

und möglicherweise mehr Orte.

new123456
quelle
4
In einigen Distributionen (Fedora / Redhat) ist es /boot/config-2.6.18-194.el5 oder ähnlich, wobei die Kernel-Release-Zeichenfolge angehängt ist.
Phil
1
@Phil Ich führe eine Distribution (Zenwalk) aus, in der diese Dateinamen durch das neueste Kernelpaket mit symbolisiert werden /boot/config. Ich werde fortfahren und diese der Liste hinzufügen - danke, dass Sie mich daran erinnert haben.
new123456
in / boot / config - $ (uname -r) für Amazon Linux und wahrscheinlich RHEL
aeb0
1
Keine solchen Dateien auf Ubuntu Mate oder Kali Linux für RaspBerry Pi.
Sopalajo de Arrierez
1
Sie sollten erwähnen, dass Ihr erster Artikel (/ proc) nur verfügbar ist, wenn das Modul "configs" geladen ist
Andy
55

Für einen aktuell ausgeführten Kernel ist dies eine Möglichkeit, die Konfigurationsdatei abzurufen

cat /proc/config.gz | gunzip > running.config

oder,

zcat /proc/config.gz > running.config

Dann running.configwird die Konfiguration des laufenden Linux-Kernels enthalten.

Dies ist jedoch nur möglich, wenn Ihr laufender Linux-Kernel konfiguriert wurde /proc/config.gz. Die Konfiguration dafür finden Sie in

  • General setup
    • [*] Kernel .config support
      • [*] Enable access to .config through /proc/config.gz

Bei den meisten Distributionen ist diese Konfiguration nicht festgelegt. Sie stellen Kernel-Konfigurationsdateien in ihren Kernel-Paketen bereit und befinden sich normalerweise im /boot/Verzeichnis.

Jarl
quelle
5
Diese werden als CONFIG_IKCONFIGund bezeichnet CONFIG_IKCONFIG_PROC, wenn Sie danach suchen.
Chronospoon
2
zcat /proc/config.gzfunktioniert gut.
Quanlong
37

Ein bisschen spät, aber vielleicht hilft es jemandem. Ich hatte weder /proc/config.gznoch /boot/confignoch /boot/config-$(uname -r)auf meinem Computer. Ich musste modprobe configsals root laufen . Dann /proc/config.gzwar anwesend

Thomas Sparber
quelle
Kann auf Intel MIC Embedded Linux (BusyBox) bestätigen, das ist notwendig und funktioniert.
Mark Lakata
4
Gleiches gilt für Raspbian auf Raspberry Pi 2
Drew McGowen
2
FATAL: Module configs not found.auf OMV 2.2 (Debian Wheezy) so froh, dass sie es in / boot / config - $ (uname -r)
tuk0z
Sie, mein Herr, haben meinen Tag gerettet. Habe ein +1
Christian
'modprobe configs' ist sehr hilfreich Ich hatte Tests, die kconfig automatisch überprüften und auf einem Raspberry Pi 3 fehlschlugen, aber jetzt funktionieren. Danke für den Tipp!!
Tim Bird
9

Wenn Sie die Kernelkonfiguration nicht in / boot / oder /proc/config.gz finden konnten, können Sie versuchen, diese Informationen aus dem Kernel selbst zu extrahieren.

In jedem Kernel-Quellcode befindet sich ein Skript zum Extrahieren scripts/extract-ikconfigder Konfiguration. Übergeben Sie den Kernel, dessen Konfiguration Sie möchten, als Parameter an dieses Skript.

Diese Lösung funktioniert nur, wenn sie Kernel .config supportim kompilierten Kernel aktiviert wurde.

Ramast
quelle
2
Dies war äußerst hilfreich und hat mir geholfen, viele Konfigurationen zu erhalten, die ich nie erwartet hatte. Vielen Dank!
Selurvedu
6

Unabhängig von der Distribution können Sie Folgendes ausführen: cat /lib/modules/$(uname -r)/build/.config

Quelle: https://linux.die.net/man/5/proc (Suche nach /proc/config).

jgomo3
quelle
1

Bei RedHat-basierten Distributionen kann die .config-Datei des Standard-Kernels mit dem Befehl gefunden werden cat /lib/modules/$(uname -r)/build/.config, der verfügbar ist, nachdem das Paket kernel-devel mit dem Befehl installiert wurde:

yum -y install kernel-devel

Beachten Sie, dass Sie mit der echten Red Hat Enterprise Linux-Distribution das Quell-Repository aktivieren müssen, um dieses Paket zu erhalten. Verwenden Sie dazu auf RHEL8 den folgenden Befehl:

subscription-manager repos --enable=rhel-8-for-x86_64-baseos-source-rpms
Gertjan Bijl
quelle