Obtenir la configuration du noyau du système Linux en cours d’exécution?

108

J'ai accidentellement supprimé mon fichier .config pour la configuration de mon noyau sous Linux et je me souviens bien qu'il y avait un moyen de récupérer la configuration du noyau via le système de fichiers proc d'une manière ou d'une autre.

Est-ce toujours possible et si oui comment le ferais-je?

Sonny Ordell
la source
@Sonny Ordell: Il existe maintenant deux réponses valables. Pouvez-vous en accepter un?
Hennes
3
@Hennes L'utilisateur n'a pas été en ligne depuis Jun 27 '11 at 16:19. Ne pense pas qu'il va accepter quoi que ce soit.
DanteTheEgregore

Réponses:

110

Selon votre système, vous le trouverez dans l'un de ces éléments:

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

et peut-être plus d'endroits.

nouveau123456
la source
4
Sur certaines distributions (Fedora / Redhat), il s’agit de /boot/config-2.6.18-194.el5 ou similaire, avec la chaîne de version du noyau ajoutée.
Phil
1
@Phil, je lance une distribution (Zenwalk) où ces noms de fichiers sont liés symboliquement par le dernier paquetage du noyau /boot/config. Je vais les ajouter à la liste - merci de me le rappeler.
new123456
dans / boot / config - $ (uname -r) pour amazon linux et probablement RHEL
aeb0
1
N'existe pas de tels fichiers sur Ubuntu Mate ou Kali Linux pour RaspBerry Pi.
Sopalajo de Arrierez
1
Vous devez mentionner que votre premier élément (/ proc) est disponible uniquement si le module "configs" est chargé
Andy
55

Pour un noyau en cours d’exécution, l’un des moyens d’obtenir le fichier de configuration consiste à:

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

ou,

zcat /proc/config.gz > running.config

Puis running.configcontiendra la configuration du noyau Linux en cours d'exécution.

Cependant, cela n’est possible que si votre noyau Linux en cours d’exécution a été configuré /proc/config.gz. La configuration pour cela se trouve dans

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

La plupart des distributions ne possèdent pas ce jeu de configuration. Ils fournissent des fichiers de configuration du noyau dans leurs packages et se trouvent généralement dans un /boot/répertoire.

Jarl
la source
5
Celles-ci sont appelées CONFIG_IKCONFIGet CONFIG_IKCONFIG_PROC, si vous les recherchez.
Chronospoon
2
zcat /proc/config.gzfonctionne bien.
Quanlong
37

Un peu en retard mais peut-être que ça aide quelqu'un. Je n'avais /proc/config.gzni /boot/configni /boot/config-$(uname -r)sur mon ordinateur. Je devais courir en modprobe configstant que root. Ensuite, /proc/config.gzétait présent

Thomas Sparber
la source
Peut confirmer sur Intel MIC intégré Linux (BusyBox), cela est nécessaire et fonctionne.
Mark Lakata
4
Pareil pour Raspbian sur Raspberry Pi 2
Drew McGowen
2
FATAL: Module configs not found.sur OMV 2.2 (Debian Wheezy), donc heureux de l’avoir fourni dans / boot / config - $ (uname -r)
tuk0z
Vous avez sauvé ma journée, monsieur. Avoir un +1
Christian
'modprobe configs' est très utile. J'ai eu des tests qui analysent automatiquement kconfig qui échouaient sur un Raspberry Pi 3, mais qui fonctionnent maintenant. Merci pour le conseil!!
Tim Bird
9

Si vous ne trouvez pas la configuration du noyau dans / boot / ni dans /proc/config.gz, vous pouvez essayer d'extraire ces informations à partir du noyau lui-même.

Dans tout code source du noyau, il y a un script pour extraire la configuration situé dans scripts/extract-ikconfig, transmettez au noyau que vous voulez sa configuration en tant que paramètre pour ce script.

Cette solution ne fonctionnera que si elle Kernel .config supportétait activée dans le noyau compilé.

Ramast
la source
2
C'était extrêmement utile et m'a aidé à obtenir beaucoup de configs que je ne m'attendais pas à voir. Merci!
Selurvedu
1

Pour les distributions basées sur RedHat, le fichier .config du noyau standard peut être trouvé avec la commande cat /lib/modules/$(uname -r)/build/.configdisponible après l'installation du paquet kernel-devel à l'aide de la commande suivante:

yum -y install kernel-devel

Notez qu'avec la vraie distribution Red Hat Enterprise Linux, vous devez activer le référentiel source pour obtenir ce package. Sur RHEL8, utilisez la commande suivante pour le faire:

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