Получить конфигурацию ядра из работающей в данный момент системы Linux?


108

Я случайно удалил свой .config для своей конфигурации ядра в Linux и, похоже, помнил, что был способ получить конфигурацию ядра через файловую систему proc.

Это все еще возможно, и если да, то как бы я это сделал?


@ Сонни Орделл: теперь есть два правильных ответа. Можете ли вы принять один из них?
Hennes

3
@Hennes Пользователь не был онлайн с тех пор Jun 27 '11 at 16:19. Не думай, что он что-то примет.
DanteTheEgregore

Ответы:


110

В зависимости от вашей системы, вы найдете его в любом из следующих:

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

и, возможно, больше мест.


4
В некоторых дистрибутивах (Fedora / Redhat) это /boot/config-2.6.18-194.el5 или аналогичный, с добавленной строкой выпуска ядра.
Фил

1
@Phil Я запускаю дистрибутив (Zenwalk), в котором эти имена файлов обозначены последним пакетом ядра /boot/config. Я добавлю их в список - спасибо, что напомнили мне.
new123456

в / boot / config - $ (uname -r) для Amazon linux и, вероятно, RHEL
aeb0

1
Не существует таких файлов в Ubuntu Mate или Kali Linux для RaspBerry Pi.
Сопалайо де Арриерес

1
Вы должны упомянуть, что ваш первый элемент (/ proc) доступен только в том случае, если загружен модуль "config"
Энди,

55

Для реально работающего ядра один из способов получить конфигурационный файл это

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

или же,

zcat /proc/config.gz > running.config

Затем running.configбудет содержать конфигурацию работающего ядра Linux.

Однако это возможно только в том случае, если у вас установлено ядро ​​Linux /proc/config.gz. Конфигурация для этого находится в

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

Большинство дистрибутивов не имеют этого набора конфигурации. Они предоставляют файлы конфигурации ядра в своих пакетах ядра и обычно находятся в /boot/каталоге.


5
Они известны как CONFIG_IKCONFIGи CONFIG_IKCONFIG_PROC, если вы ищете их.
хронологическая ложка

2
zcat /proc/config.gzработает отлично.
Quanlong

37

Немного поздно, но, возможно, это кому-то поможет. У меня не было /proc/config.gzни, /boot/configни /boot/config-$(uname -r)на моем компьютере. Я должен был бежать modprobe configsкак корень. Тогда /proc/config.gzприсутствовал


Можно подтвердить на Intel MIC встроенный Linux (BusyBox), это необходимо и работает.
Марк Лаката

4
То же самое для Raspbian на Raspberry Pi 2
Дрю Макгоуэн

2
FATAL: Module configs not found.на OMV 2.2 (Debian Wheezy) так рада, что они предоставили его в / boot / config - $ (uname -r)
tuk0z

Вы, сэр, спас мой день. Имейте +1
Кристиан

'modprobe config' очень полезен, у меня были тесты, которые автоматически проверяли kconfig, которые не работали на Raspberry Pi 3, но теперь работают. Спасибо за чаевые!!
Тим Берд

9

Если вы не смогли найти конфигурацию ядра ни в / boot /, ни в /proc/config.gz, вы можете попробовать извлечь эту информацию из самого ядра.

Внутри любого исходного кода ядра есть скрипт для извлечения конфигурации, расположенный в scripts/extract-ikconfigядре, передайте ядро, в котором вы хотите его конфигурацию, в качестве параметра этому сценарию.

Это решение будет работать, только если Kernel .config supportбыло включено в скомпилированном ядре.


2
Это было чрезвычайно полезно и помогло мне получить множество конфигов, которые я никогда не ожидал увидеть. Спасибо!
selurvedu


1

Для дистрибутивов на основе RedHat файл .config стандартного ядра можно найти с помощью команды cat /lib/modules/$(uname -r)/build/.config, доступной после установки пакета kernel-devel, с помощью команды:

yum -y install kernel-devel

Обратите внимание, что в реальном дистрибутиве Red Hat Enterprise Linux вам нужно включить репозиторий-источник, чтобы получить этот пакет. На RHEL8 используйте следующую команду:

subscription-manager repos --enable=rhel-8-for-x86_64-baseos-source-rpms
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.