Вопрос или проблема
Я случайно удалил свой .config для конфигурации ядра в Linux и помню, что существует способ восстановить конфигурацию ядра через файловую систему proc.
Это все еще возможно, и если да, то как мне это сделать?
В зависимости от вашей системы, вы можете найти это в одном из следующих мест:
/proc/config.gz
/boot/config
/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) (ищите /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
"/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
, существует возможность получить конфигурацию ядра через файловую систему /proc
или из других мест на вашей системе. Вот детальный процесс для этого:
-
Проверка на наличие
/proc/config.gz
:
Если ваша сборка ядра была настроена с поддержкой доступа к конфигурации через/proc
, вы сможете использовать этот файл. Выполните следующую команду, чтобы извлечь конфигурацию:zcat /proc/config.gz > running.config
Эта команда распакует файл конфигурации в новый файл
running.config
. Если файла/proc/config.gz
нет, возможно, нужно будет загрузить модуль с помощью следующей команды:sudo modprobe configs
После этого файл
/proc/config.gz
должен появиться. -
Проверка на наличие конфигурации в каталоге
/boot
:
В некоторых дистрибутивах информация о конфигурации ядра хранится в файлах, расположенных в каталоге/boot
. Попробуйте найти конфигурацию командой:cat /boot/config-$(uname -r)
или
cat /boot/config
-
Проверка в
/lib/modules
:
Если у вас не удалось найти конфигурацию в предыдущих местах, вы можете попробовать следующий путь:cat /lib/modules/$(uname -r)/build/.config
Однако убедитесь, что у вас установлен пакет
kernel-devel
. -
Извлечение конфигурации из исходного кода ядра:
Если ни один из вышеперечисленных методов не сработал, и у вас есть исходный код ядра, можно попытаться извлечь конфигурацию с помощью скрипта, который находится вscripts/extract-ikconfig
. Для этого выполните:cd /path/to/kernel/source ./scripts/extract-ikconfig /path/to/current/kernel/image
Учтите, что этот метод работает только если поддержка конфигурации в ядре была включена.
Заключение
Эти методы должны помочь вам восстановить конфигурацию ядра на вашей системе Linux. Обратите внимание, что наличие файла конфигурации зависит от компиляции вашего ядра, и не все дистрибутивы по умолчанию включают соответствующие настройки. Если вы снова потеряете файл конфигурации, рекомендуется его регулярно сохранять в безопасном месте для будущего использования.