Obter configuração do kernel do sistema Linux atualmente em execução?

108

Apaguei acidentalmente meu .config para a configuração do meu kernel no Linux, e parece lembrar que havia uma maneira de recuperar a configuração do kernel através do sistema de arquivos proc de alguma forma.

Isso ainda é possível? Em caso afirmativo, como eu faria isso?

Sonny Ordell
fonte
@ Sonny Ordell: Agora existem duas respostas válidas. Você pode aceitar um deles?
Hennes
3
@Hennes O usuário não está online desde então Jun 27 '11 at 16:19. Não pense que ele aceitará qualquer coisa.
DanteTheEgregore 2/13

Respostas:

110

Dependendo do seu sistema, você o encontrará em qualquer um destes:

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

e possivelmente mais lugares.

new123456
fonte
4
Em algumas distros (Fedora / Redhat) é /boot/config-2.6.18-194.el5 ou similar, com a string de lançamento do kernel anexada.
23411 Phil
1
@ Phil Eu corro uma distro (Zenwalk) onde esses nomes de arquivos são vinculados pelo último pacote do kernel /boot/config. Vou adicioná-los à lista - obrigado por me lembrar.
new123456 23/05
in / boot / config - $ (uname -r) para linux amazon e provavelmente RHEL
aeb0
1
Esses arquivos não existem no Ubuntu Mate ou no Kali Linux para RaspBerry Pi.
Sopalajo de Arrierez 05/10
1
Você deve mencionar que o seu primeiro item (/ proc) só está disponível se módulo "configurações" é carregado
Andy
55

Para um kernel em execução, uma maneira de obter o arquivo de configuração é:

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

ou,

zcat /proc/config.gz > running.config

Em seguida running.config, conterá a configuração do kernel linux em execução.

No entanto, isso só é possível se o kernel do Linux em execução estiver configurado para ter /proc/config.gz. A configuração para isso é encontrada em

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

A maioria das distribuições não possui esse conjunto de configurações. Eles fornecem arquivos de configuração do kernel em seus pacotes do kernel e geralmente são encontrados no /boot/diretório

Jarl
fonte
5
Eles são conhecidos como CONFIG_IKCONFIGe CONFIG_IKCONFIG_PROC, se você está esperando por eles.
Chronospoon
2
zcat /proc/config.gzfunciona bem.
Quanlong 22/08/16
37

Um pouco tarde, mas talvez isso ajude alguém. Eu não tinha /proc/config.gznem /boot/confignem /boot/config-$(uname -r)no meu computador. Eu tive que correr modprobe configscomo root. Então, /proc/config.gzestava presente

Thomas Sparber
fonte
Pode confirmar no Linux embarcado Intel MIC (BusyBox), isso é necessário e funciona.
Mark Lakata 23/02
4
Mesmo para Raspbian em Raspberry Pi 2
de Drew McGowen
2
FATAL: Module configs not found.em OMV 2,2 (Debian Wheezy) tão feliz por eles desde que em / boot / config - $ (uname -r)
tuk0z
Você salvou meu dia. Tenha +1
Christian
'modprobe configs' é muito útil. Tive testes que analisam automaticamente o kconfig que estava falhando em um Raspberry Pi 3, mas agora funciona. Obrigado pela dica!!
Tim Bird
9

Se você não conseguiu encontrar a configuração do kernel em / boot / nem em /proc/config.gz, tente extrair essas informações do próprio kernel.

Dentro de qualquer código fonte do kernel, existe um script para extrair a configuração scripts/extract-ikconfig, passe o kernel em que você deseja sua configuração como parâmetro para esse script.

Esta solução funcionará apenas se Kernel .config supportestiver ativada no kernel compilado.

Ramast
fonte
2
Isso foi extremamente útil e me ajudou a obter muitas configurações que eu nunca esperava ver. Obrigado!
Selurvedu 02/10/19
1

Para distribuições baseadas em RedHat, o arquivo .config do kernel pronto para uso pode ser encontrado com o comando cat /lib/modules/$(uname -r)/build/.configdisponível após a instalação do pacote kernel-devel usando o comando:

yum -y install kernel-devel

Note que com a distribuição real do Red Hat Enterprise Linux, você precisará habilitar o repositório de origem para obter este pacote. No RHEL8, use o seguinte comando para fazer isso:

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