Перейти до змісту

Перегляд поточної конфігурації ядра

Ядро Linux зберігає поточну інформацію про ядро у двох місцях за допомогою спеціальних файлових систем: (їх короткий опис)

  • Старіші procfs, які монтують /proc (перевірте за допомогою mount -l -t proc)
  • Новіший sysfs, який монтує /sys (перевірити за допомогою mount -l -t sysfs)

Важливо

Будьте обережні, якщо перевіряєте згадані тут файли, їх зміна може змінити поведінку фактично запущеного ядра!

Ці два інтерфейси дозволяють переглядати та змінювати параметри поточного ядра.

Зауважте, що якщо виконати ls -l для деяких із цих файлів, вони відображатимуться як довжина «0», але якщо ви їх виділите за допомогою cat</ 1></a>, виявиться, що вони насправді містять дані. Більшість із них є ASCII і їх можна редагувати, однак деякі є двійковими. У будь-якому випадку такі команди, як <a href="https://man7.org/linux/man-pages/man1/file.1.html"><code>file або stat зазвичай просто повертають "порожній файл" або "0" для довжини, хоча вони покажуть вам іншу інформацію.

Переважними та стандартними програмами для взаємодії з цими функціями є lsmod, modinfo та sysctl.

sysctl -a | grep -i <keyword>
lsmod | grep -i <keyword>
modinfo <module>

Подивіться, з якою версією «випуску ядра» зараз працюєте:

uname -r і замініть його повертане значення в командах за допомогою $(uname -r)

RHEL і похідні дистрибутиви (Fedora, CentOS Stream, Scientific Linux, RockyLinux, AlmaLinux тощо) також зберігайте конфігурацію, яка використовується для завантажувальних встановлених ядер, у каталозі /boot, який використовується Grub2, як файли ASCII:

/boot/config-<kernel-release>

Щоб перевірити поточну запущену конфігурацію ядра на певне значення:

cat /boot/config-$(uname -r) | grep -i <keyword>

Результати покажуть:

  • =m, якщо зібрано як модуль ядра
  • =y, якщо статично зібрано в ядро
  • is not set, якщо це налаштування було закоментовано
  • числове значення
  • значення рядка в лапках

Деякі дистрибутиви, як-от Gentoo та Arch, використовують модуль ядра configs, щоб надати /proc/config.gz за замовчуванням:

zcat /proc/config.gz | grep -i <keyword>
zgrep <keyword> /proc/config.gz

Для будь-якого дистрибутива, якщо ваше запущене ядро встановило як CONFIG_IKCONFIG, так і CONFIG_IKCONFIG_PROC і якщо

ls -lh /sys/module/configs

існує та є виконуваним (можна шукати у випадку каталогу), тоді ви можете створити /proc/config.gz за допомогою цієї команди, якщо її немає:

modprobe configs

Увімкнено репо

Цей документ наразі не охоплює пакети ядра, які могли походити зі сховищ не за замовчуванням, наприклад:

appstream-debug, appstream-source, baseos-debug, baseos-source або devel

Пакети kernel-devel встановлюють конфігураційний файл, який використовується для компіляції кожного встановленого стандартного пакета ядра, як файл ASCII у такому місці:

/usr/src/kernels/<kernel-release>/.config

До цього файлу частіше звертаються через шлях із символічним посиланням, наданий пакетами kernel-core:

/lib/modules/<kernel-release>/build/ -> /usr/src/kernels/<kernel-release>/

Якщо у вас встановлено пакети kernel-debug-devel, ви також матимете цей каталог:

 /usr/src/kernels/<kernel-release>+debug/

Ви можете переглянути будь-яку з наступних сторінок, щоб дізнатися більше про значення конфігурації, які використовуються для створення встановленого ядра:

/lib/modules/<kernel-release>/config
/lib/modules/<kernel-release>/build/.config
/usr/src/kernels/<kernel-release>/.config
/usr/src/kernels/<kernel-release>+debug/.config

Налаштовані модулі для поточного запущеного ядра, скомпільовані як вбудовані (тобто статичні в самому ядрі) або завантажувані модулі, перераховані підкаталогами, названими як назва модуля в:

/sys/module/

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

cat /lib/modules/$(uname -r)/config | grep -i <keyword>
cat /lib/modules/$(uname -r)/build/.config | grep -i <keyword>
cat /usr/src/kernels/$(uname -r)/.config | grep -i <keyword>
cat /usr/src/kernels/$(uname -r)+debug/.config | grep -i <keyword>
ls -lh /sys/module/ | grep -i <keyword>

Ви можете перевірити наявність залежностей модуля ядра у файлі:

/lib/modules/<kernel-release>/modules.dep

але легше прочитати або проаналізувати вивід поля «Використаний» у lsmod.

Посилання:

depmod, ls, lsmod, modinfo, modprobe, modules.dep, namespaces, procfs, sysctl, sysfs, uname

Author: David Hensley

Contributors: Steven Spencer