Kernel/modules: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
 
(не показаны 2 промежуточные версии 2 участников)
Строка 8: Строка 8:
Ядро Linux загружается из {{path|/boot/vmlinuz}}, содержит базовую функциональность и некоторые '''встроенные модули (builtin)''', список которых для совместимости содержится в каталоге {{path|/lib/modules/версия_ядра/modules.builtin}}:
Ядро Linux загружается из {{path|/boot/vmlinuz}}, содержит базовую функциональность и некоторые '''встроенные модули (builtin)''', список которых для совместимости содержится в каталоге {{path|/lib/modules/версия_ядра/modules.builtin}}:


  cat /lib/modules/$(uname -r)/modules.builtin
  $ cat /lib/modules/$(uname -r)/modules.builtin


Отдельные модули для '''ранней загрузки''' могут включаться в образ [[initrd|{{path|/boot/initrd.img}}]], чтобы просмотреть их список можно установить пакет '''{{pkg|dracut}}''' и выполнить команду {{cmd|lsinitrd}}:
Отдельные модули для '''ранней загрузки''' могут включаться в образ [[initrd|{{path|/boot/initrd.img}}]], чтобы просмотреть их список можно установить пакет '''{{pkg|dracut}}''' и выполнить команду {{cmd|lsinitrd}}:


  lsinitrd /boot/initrd.img | grep .ko
  # lsinitrd /boot/initrd.img | grep .ko


Либо распаковать файл {{path|/boot/initrd.img}} во временный каталог и работать с ним:
Либо распаковать файл {{path|/boot/initrd.img}} во временный каталог и работать с ним:


  mkdir tmp_init && cd tmp_init
  # mkdir tmp_init && cd tmp_init
  lsinitrd --unpack /boot/initrd.img
  # lsinitrd --unpack /boot/initrd.img


Динамически загружаемые '''модули ядра''' хранятся в каталоге {{path|/lib/modules/версия_ядра}}, например:
Динамически загружаемые '''модули ядра''' хранятся в каталоге {{path|/lib/modules/версия_ядра}}, например:


  find /lib/modules/$(uname -r) -type f -name '*.ko*'
  # find /lib/modules/$(uname -r) -type f -name '*.ko*'


{{Note|Зависимости между модулями содержатся в файле {{path|/lib/modules/версия_ядра/modules.dep}}, псевдонимы — в файле {{path|/lib/modules/версия_ядра/modules.alias}}}}
{{Note|Зависимости между модулями содержатся в файле {{path|/lib/modules/версия_ядра/modules.dep}}, псевдонимы — в файле {{path|/lib/modules/версия_ядра/modules.alias}}}}
==Установка модулей ядра==
==Установка модулей ядра==
{{Attention|Рекомендуется выполнить '''[[Обновление_ядра#Доустановка_модулей_ядра|обновление ядра]]''' до последней версии перед установкой модулей ядра.}}
{{Attention|Рекомендуется выполнить '''[[Обновление_ядра#Доустановка_модулей_ядра|обновление ядра]]''' до последней версии перед установкой модулей ядра.}}
  su -
  $ su -
  apt-get update
  # apt-get update
  update-kernel
  # update-kernel
  reboot
  # reboot


'''Посмотреть список''' установленных пакетов, содержащих ядра и модули ядра:
'''Посмотреть список''' установленных пакетов, содержащих ядра и модули ядра:


  rpm -qa kernel* | sort
  $ rpm -qa kernel* | sort
 


Для '''установки модуля''' из репозитория выполните команду (предварительно узнайте версию ядра командой {{cmd|uname -r}}):
Для '''установки модуля''' из репозитория выполните команду (предварительно узнайте версию ядра командой {{cmd|uname -r}}):


  su -  
  $ su -  
  apt-get install kernel-modules-имя_модуля-un-def
  # apt-get install kernel-modules-имя_модуля-un-def


Также для обновления ядра и установки модулей можно воспользоваться графическим интерфейсом центра управления '''[[Alterator-update-kernel|Альтератор]]'''.
Также для обновления ядра и установки модулей можно воспользоваться графическим интерфейсом центра управления '''[[Alterator-update-kernel|Альтератор]]'''.
Строка 47: Строка 46:
Просмотреть '''загруженные модули''' можно командой:
Просмотреть '''загруженные модули''' можно командой:


  lsmod
  $ lsmod


или
или


  cat /proc/modules
  $ cat /proc/modules


Получить '''информацию о модуле''' можно командой {{cmd|modinfo имя_модуля}}, например:
Получить '''информацию о модуле''' можно командой {{cmd|modinfo имя_модуля}}, например:


  modinfo fuse
  # modinfo fuse


'''Вывод команды:'''
'''Вывод команды:'''
Строка 81: Строка 80:
Чтобы сократить вывод команды, например, вывести только '''зависимости модуля''':
Чтобы сократить вывод команды, например, вывести только '''зависимости модуля''':


  modinfo -F depends имя_модуля
  # modinfo -F depends имя_модуля


Вывести '''параметры модуля''':
Вывести '''параметры модуля''':


  modinfo -F parm имя_модуля
  # modinfo -F parm имя_модуля


Показать параметры загруженного модуля может команда {{cmd|systool}}:
Показать параметры загруженного модуля может команда {{cmd|systool}}:


  systool -vm имя_модуля
  $ systool -vm имя_модуля


Также можно изучить каталог {{path|/sys/module}} для определения '''параметров загруженных модулей''':
Также можно изучить каталог {{path|/sys/module}} для определения '''параметров загруженных модулей''':


  ls /sys/module
  $ ls /sys/module


==Загрузка и выгрузка модулей==
==Загрузка и выгрузка модулей==
Строка 101: Строка 100:
'''Загрузку и выгрузку''' модулей ядра '''вручную''' можно выполнить с помощью команды {{cmd|modprobe}}. Она заменяет отдельные команды для '''вставки''' ({{cmd|insmod}}) и '''удаления модуля''' ({{cmd|rmmod}}), в том числе учитывая зависимости. С помощью {{cmd|modprobe}} можно передать параметры модулю [опционально]. Для '''вставки модуля''' выполнить:
'''Загрузку и выгрузку''' модулей ядра '''вручную''' можно выполнить с помощью команды {{cmd|modprobe}}. Она заменяет отдельные команды для '''вставки''' ({{cmd|insmod}}) и '''удаления модуля''' ({{cmd|rmmod}}), в том числе учитывая зависимости. С помощью {{cmd|modprobe}} можно передать параметры модулю [опционально]. Для '''вставки модуля''' выполнить:


  modprobe имя_модуля [параметр=значение]
  # modprobe имя_модуля [параметр=значение]


'''Возможные опции''':
'''Возможные опции''':
Строка 113: Строка 112:
Для '''выгрузки модуля''' с зависимостями выполнить команду (опции те же):
Для '''выгрузки модуля''' с зависимостями выполнить команду (опции те же):


  modprobe -r имя_модуля
  # modprobe -r имя_модуля


Для хранения параметров загрузки и выгрузки модулей используется каталог {{path|/etc/modprobe.d}}. Конфигурационные файлы в этом каталоге (с суффиксом '''.conf''') могут содержать псевдонимы модулей, их параметры и '''черные списки (blacklist)''' запрещенных для загрузки модулей:
Для хранения параметров загрузки и выгрузки модулей используется каталог {{path|/etc/modprobe.d}}. Конфигурационные файлы в этом каталоге (с суффиксом '''.conf''') могут содержать псевдонимы модулей, их параметры и '''черные списки (blacklist)''' запрещенных для загрузки модулей:


  ls /etc/modprobe.d/*.conf
  $ ls /etc/modprobe.d/*.conf
  cat /etc/modprobe.d/имя_файла.conf
  $ cat /etc/modprobe.d/имя_файла.conf


Для '''исключения модуля''' из загрузки:
Для '''исключения модуля''' из загрузки:


  echo "blacklist имя_модуля" >> /etc/modprobe.d/имя_файла_черного_списка.conf
  # echo "blacklist имя_модуля" >> /etc/modprobe.d/имя_файла_черного_списка.conf


Для включения модуля в процессе загрузки используется каталог {{path|/etc/modules-load.d}}. Конфигурационные файлы в этом каталоге (с суффиксом '''.conf''') содержат список модулей для автоматической загрузки. Для '''добавления модуля''' в список:
Для включения модуля в процессе загрузки используется каталог {{path|/etc/modules-load.d}}. Конфигурационные файлы в этом каталоге (с суффиксом '''.conf''') содержат список модулей для автоматической загрузки. Для '''добавления модуля''' в список:


  echo "имя_модуля" >> /etc/modules-load.d/имя_файла.conf
  # echo "имя_модуля" >> /etc/modules-load.d/имя_файла.conf


Также для обновления ядра и включения/выключения модулей можно воспользоваться графическим интерфейсом центра управления '''[[Alterator-update-kernel|Альтератор]]'''.
Также для обновления ядра и включения/выключения модулей можно воспользоваться графическим интерфейсом центра управления '''[[Alterator-update-kernel|Альтератор]]'''.
Строка 135: Строка 134:


{{Category navigation|title=Kernel|category=Kernel|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Kernel|category=Kernel|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Модули ядра|category=KernelModules|sortkey={{SUBPAGENAME}}}}

Текущая версия от 15:48, 21 мая 2025

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

Внимание! Многие команды для работы с модулями ядра доступны только суперпользователю root!
Примечание: После проведения usrmerge упоминаемые в статье каталоги /lib/modules будут перенесены в каталог /usr.

Где находятся модули ядра

Ядро Linux загружается из /boot/vmlinuz, содержит базовую функциональность и некоторые встроенные модули (builtin), список которых для совместимости содержится в каталоге /lib/modules/версия_ядра/modules.builtin:

$ cat /lib/modules/$(uname -r)/modules.builtin

Отдельные модули для ранней загрузки могут включаться в образ /boot/initrd.img, чтобы просмотреть их список можно установить пакет dracut и выполнить команду lsinitrd:

# lsinitrd /boot/initrd.img | grep .ko

Либо распаковать файл /boot/initrd.img во временный каталог и работать с ним:

# mkdir tmp_init && cd tmp_init
# lsinitrd --unpack /boot/initrd.img

Динамически загружаемые модули ядра хранятся в каталоге /lib/modules/версия_ядра, например:

# find /lib/modules/$(uname -r) -type f -name '*.ko*'
Примечание: Зависимости между модулями содержатся в файле /lib/modules/версия_ядра/modules.dep, псевдонимы — в файле /lib/modules/версия_ядра/modules.alias

Установка модулей ядра

Внимание! Рекомендуется выполнить обновление ядра до последней версии перед установкой модулей ядра.
$ su -
# apt-get update
# update-kernel
# reboot

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

$ rpm -qa kernel* | sort

Для установки модуля из репозитория выполните команду (предварительно узнайте версию ядра командой uname -r):

$ su - 
# apt-get install kernel-modules-имя_модуля-un-def

Также для обновления ядра и установки модулей можно воспользоваться графическим интерфейсом центра управления Альтератор.

Как посмотреть информацию о модулях

Просмотреть загруженные модули можно командой:

$ lsmod

или

$ cat /proc/modules

Получить информацию о модуле можно командой modinfo имя_модуля, например:

# modinfo fuse

Вывод команды:

filename:
файл модуля, если модуль является встроенным, здесь будет написано (builtin);
name:
имя модуля;
description:
краткое описание модуля;
depends:
зависимости модуля;
intree:Y
модуль включен в дерево исходников;
vermagic:
версия ядра, для которого предназначен модуль;
alias:
псевдонимы модуля;
firmware:
прошивка для устройства из каталога /lib/firmware;
sig_*: и signature:
цифровая подпись;
parm:
параметры модуля.

Чтобы сократить вывод команды, например, вывести только зависимости модуля:

# modinfo -F depends имя_модуля

Вывести параметры модуля:

# modinfo -F parm имя_модуля

Показать параметры загруженного модуля может команда systool:

$ systool -vm имя_модуля

Также можно изучить каталог /sys/module для определения параметров загруженных модулей:

$ ls /sys/module

Загрузка и выгрузка модулей

Автоматическая загрузка модулей выполняется с помощью udev.

Загрузку и выгрузку модулей ядра вручную можно выполнить с помощью команды modprobe. Она заменяет отдельные команды для вставки (insmod) и удаления модуля (rmmod), в том числе учитывая зависимости. С помощью modprobe можно передать параметры модулю [опционально]. Для вставки модуля выполнить:

# modprobe имя_модуля [параметр=значение]

Возможные опции:

-i
игнорировать команды конфигурационного файла в /etc/modprobe.d;
-n
только показать, не выполняя;
-v
подробный вывод.

Для выгрузки модуля с зависимостями выполнить команду (опции те же):

# modprobe -r имя_модуля

Для хранения параметров загрузки и выгрузки модулей используется каталог /etc/modprobe.d. Конфигурационные файлы в этом каталоге (с суффиксом .conf) могут содержать псевдонимы модулей, их параметры и черные списки (blacklist) запрещенных для загрузки модулей:

$ ls /etc/modprobe.d/*.conf
$ cat /etc/modprobe.d/имя_файла.conf

Для исключения модуля из загрузки:

# echo "blacklist имя_модуля" >> /etc/modprobe.d/имя_файла_черного_списка.conf

Для включения модуля в процессе загрузки используется каталог /etc/modules-load.d. Конфигурационные файлы в этом каталоге (с суффиксом .conf) содержат список модулей для автоматической загрузки. Для добавления модуля в список:

# echo "имя_модуля" >> /etc/modules-load.d/имя_файла.conf

Также для обновления ядра и включения/выключения модулей можно воспользоваться графическим интерфейсом центра управления Альтератор.

Ссылки