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

Вопрос или проблема

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

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

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

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

и, возможно, в других местах.

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

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

или,

zcat /proc/config.gz > running.config

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

Однако это возможно только если ваше работающее ядро linux было настроено на наличие /proc/config.gz. Конфигурация для этого находится в

  • Общие настройки
    • [*] Поддержка .config ядра
      • [*] Включить доступ к .config через /proc/config.gz

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

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

Независимо от дистрибутива, вы можете запустить: cat /lib/modules/$(uname -r)/build/.config

Источник: proc(5) страница man (поиск по /proc/config.gz).

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

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

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

Если вы не можете найти ни один из предложенных файлов и можете использовать modprobe, вы почти всегда сможете получить копию текущей конфигурации таким образом.

modprobe configs # возможно, нужно будет использовать `sudo modprobe configs`

# Это создаст /proc/config.gz
zcat /proc/config.gz

# Или если вы ищете, была ли установлена конкретная опция
zgrep USBIP /proc/config.gz

Запустите modprobe configs от имени root, чтобы создать /proc/config.gz

После этого zcat /proc/config.gz > /boot/config-$(uname -r), чтобы отобразить конфигурацию ядра.

Для дистрибутивов на базе 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

https://github.com/kubernetes/system-validators/blob/e6e77857caf8e6f5ef43fb61d59d034f5f4c0f94/validators/kernel_validator.go#L177-L188

"/proc/config.gz",
"/boot/config-" + k.kernelRelease,
"/usr/src/linux-" + k.kernelRelease + "/.config",
"/usr/src/linux/.config",
"/usr/lib/modules/" + k.kernelRelease + "/config",
"/usr/lib/ostree-boot/config-" + k.kernelRelease,
"/usr/lib/kernel/config-" + k.kernelRelease,
"/usr/src/linux-headers-" + k.kernelRelease + "/.config",
"/lib/modules/" + k.kernelRelease + "/build/.config",

Ответ или решение

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

1. Проверьте /proc/config.gz

На большинстве современных дистрибутивов Linux можно получить текущую конфигурацию ядра через файл /proc/config.gz. Однако, чтобы этот файл был доступен, опция конфигурации CONFIG_IKCONFIG должна быть активна при компиляции ядра. Для доступа к этому файлу выполните следующие команды:

# Если вы не видите файл /proc/config.gz, попробуйте:
modprobe configs
# Теперь вы сможете извлечь конфигурацию
zcat /proc/config.gz > running.config

Как альтернатива, можно использовать:

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

2. Проверьте директорию /boot

Дистрибутивы обычно сохраняют файлы конфигурации ядра в каталоге /boot. Вы можете найти конфигурацию текущего ядра с помощью следующей команды:

cat /boot/config-$(uname -r)

Если там нет конфигурации, возможно, следует установить пакет с исходниками ядра (kernel-devel).

3. Извлечение из загруженных модулей

В зависимости от вашей системы, возможно, вам удастся найти файл конфигурации в узле /lib/modules:

cat /lib/modules/$(uname -r)/build/.config

Этот файл доступен только если установлен пакет kernel-devel.

4. Получение конфигурации через исходный код ядра

Если у вас есть доступ к исходному коду ядра, вы можете извлечь конфигурацию, используя скрипт из директории scripts. Для этого выполните следующие действия:

  1. Загрузите исходный код подходящего для вас ядра.
  2. Найдите и выполните скрипт extract-ikconfig, который извлечет конфигурацию, если она была включена в ядро при его сборке.
cd /путь/к/исходному/коду/ядра
scripts/extract-ikconfig < путь_к_вашему_диску

5. Полезная информация о RedHat и CentOS

Для пользователей дистрибутивов на базе RedHat, таких как CentOS, вы можете выполнить следующую команду, чтобы получить доступ к файлу конфигурации:

yum -y install kernel-devel
cat /lib/modules/$(uname -r)/build/.config

Если у вас не включены источники для пакетов, вам нужно будет активировать их с помощью следующих команд:

subscription-manager repos --enable rhel-8-for-x86_64-baseos-source-rpms

Заключение

Если ни один из перечисленных методов не сработал, вероятно, конфигурация ядра не была включена на этапе компиляции. В этом случае единственный выход — повторно скомпилировать ядро с необходимыми параметрами конфигурации.

Эти шаги помогут вам восстановить файл конфигурации ядра или извлечь из него нужные настройки, что значительно упростит администрирование вашей системы Linux.

Оцените материал
Добавить комментарий

Капча загружается...