¿Obtener la configuración del kernel del sistema Linux actualmente en ejecución?

107

Accidentalmente eliminé mi .config para la configuración de mi kernel en Linux, y parece recordar que había una manera de recuperar la configuración del kernel a través del sistema de archivos proc de alguna manera.

¿Sigue siendo posible, y si es así, cómo lo haría?

Sonny Ordell
fuente
@Sonny Ordell: ahora hay dos respuestas válidas. ¿Puedes aceptar uno de ellos?
Hennes
3
@Hennes User no ha estado en línea desde entonces Jun 27 '11 at 16:19. No pienses que va a aceptar nada.
DanteTheEgregore

Respuestas:

110

Dependiendo de su sistema, lo encontrará en cualquiera de estos:

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

y posiblemente más lugares.

nuevo123456
fuente
44
En algunas distribuciones (Fedora / Redhat) es /boot/config-2.6.18-194.el5 o similar, con la cadena de liberación del núcleo adjunta.
Phil
1
@ Phil ejecuto una distribución (Zenwalk) donde esos nombres de archivos están enlazados por el último paquete del kernel /boot/config. Continuaré y agregaré estos a la lista, gracias por recordármelo.
nuevo123456
in / boot / config - $ (uname -r) para amazon linux y probablemente RHEL
aeb0
1
No existen tales archivos en Ubuntu Mate o Kali Linux para RaspBerry Pi.
Sopalajo de Arrierez
1
Debe mencionar que su primer elemento (/ proc) solo está disponible si el módulo "configs" está cargado
Andy
55

Para un núcleo en ejecución real, una forma de obtener el archivo de configuración es

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

o,

zcat /proc/config.gz > running.config

Luego running.configcontendrá la configuración del kernel de Linux en ejecución.

Sin embargo, esto solo es posible si su kernel Linux en ejecución se configuró para tener /proc/config.gz. La configuración para esto se encuentra en

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

La mayoría de las distribuciones no tienen este conjunto de configuración. Proporcionan archivos de configuración de kernel en sus paquetes de kernel y generalmente se encuentran en el /boot/directorio.

Jarl
fuente
55
Estos se conocen como CONFIG_IKCONFIGy CONFIG_IKCONFIG_PROC, si los estás buscando.
Cronospoon
2
zcat /proc/config.gzfunciona bien.
Quanlong
37

Un poco tarde pero quizás ayude a alguien. No tenía /proc/config.gzni /boot/configni /boot/config-$(uname -r)en mi computadora. Tuve que correr modprobe configscomo root. Entonces, /proc/config.gzestuvo presente

Thomas Sparber
fuente
Puede confirmar en Intel MIC Linux integrado (BusyBox), esto es necesario y funciona.
Mark Lakata
44
Lo mismo para Raspbian en Raspberry Pi 2
Drew McGowen
2
FATAL: Module configs not found.en OMV 2.2 (Debian Wheezy) me alegro de que lo hayan proporcionado en / boot / config - $ (uname -r)
tuk0z
Usted señor, me salvó el día. Tener un +1
Christian
'modprobe configs' es muy útil. Tenía pruebas que sondeaban automáticamente kconfig que fallaban en un Raspberry Pi 3, pero ahora funcionan. ¡¡Gracias por el consejo!!
Tim Bird
9

Si no pudo encontrar la configuración del núcleo en / boot / ni en /proc/config.gz, puede intentar extraer esta información del núcleo mismo.

Dentro de cualquier código fuente del kernel hay una secuencia de comandos para extraer la configuración ubicada scripts/extract-ikconfig, pase el núcleo que desea su configuración como parámetro a esta secuencia de comandos.

Esta solución solo funcionará si Kernel .config supportse habilitó en el núcleo compilado.

Ramast
fuente
2
Esto fue extremadamente útil y me ayudó a obtener muchas configuraciones que no esperaba ver. ¡Gracias!
selurvedu
1

Para las distribuciones basadas en RedHat, el archivo .config del kernel estándar se puede encontrar con el comando cat /lib/modules/$(uname -r)/build/.configque está disponible después de instalar el paquete kernel-devel usando el comando:

yum -y install kernel-devel

Tenga en cuenta que con la distribución real de Red Hat Enterprise Linux, deberá habilitar el repositorio de origen para obtener este paquete. En RHEL8, use el siguiente comando para hacer eso:

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