Перегляд поточної конфігурації ядра¶
Ядро Linux зберігає поточну інформацію про ядро у двох місцях за допомогою спеціальних файлових систем:
- Старіші procfs, які монтують
/proc(перевірте за допомогоюmount -l -t proc) - Новіший sysfs, який монтує
/sys(перевірити за допомогоюmount -l -t sysfs)
Warning
Будьте обережні, якщо перевіряєте згадані тут файли, їх зміна може змінити поведінку фактично запущеного ядра!
Ці два інтерфейси дозволяють переглядати та змінювати параметри поточного ядра.
Зверніть увагу, що якщо ви виконаєте команду ls -l для деяких із цих файлів, вони відображатимуться як файли довжиною "0", але якщо ви їх вилучите командою cat, вони насправді містять дані. Більшість із них є ASCII і їх можна редагувати, однак деякі є двійковими. В обох випадках команди типу 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