Отримати конфігурацію ядра з поточно запущеної системи Linux?


107

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

Чи все-таки це можливо, і якщо так, як би я це зробив?


@Sonny Ordell: Зараз є дві дійсні відповіді. Чи можете ви прийняти одну з них?
Геннес

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.
Sopalajo de Arrierez

1
Ви повинні зазначити, що ваш перший елемент (/ proc) доступний лише у випадку завантаження модуля "configs"
Енді,

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як root. Потім, /proc/config.gzбув присутній


Може підтвердити на Intel MIC вбудований Linux (BusyBox), це необхідно і працює.
Марк Лаката

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

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

Ви, пане, врятували мені день. Майте +1
Крістіан

"Конфігурації modprobe" дуже корисні. У мене були тести, які автоматично перевіряли 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, доступної після встановлення ядра пакета ядра за допомогою команди:

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.