Получить конфигурацию ядра из работающей системы 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) (ищите /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, существует возможность получить конфигурацию ядра через файловую систему /proc или из других мест на вашей системе. Вот детальный процесс для этого:

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

    zcat /proc/config.gz > running.config

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

    sudo modprobe configs

    После этого файл /proc/config.gz должен появиться.

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

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

    или

    cat /boot/config
  3. Проверка в /lib/modules:
    Если у вас не удалось найти конфигурацию в предыдущих местах, вы можете попробовать следующий путь:

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

    Однако убедитесь, что у вас установлен пакет kernel-devel.

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

    cd /path/to/kernel/source
    ./scripts/extract-ikconfig /path/to/current/kernel/image

    Учтите, что этот метод работает только если поддержка конфигурации в ядре была включена.

Заключение

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

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

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