← Назад к вопросам

Какой командой загрузить модуль ядра?

1.6 Junior🔥 151 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Загрузка модулей ядра Linux

Загрузка модулей ядра в Linux выполняется командой insmod (insert module), но на практике чаще используются более высокоуровневые утилиты modprobe и depmod, которые автоматически разрешают зависимости между модулями.

Основные команды для работы с модулями

1. insmod (базовая загрузка)

Загружает модуль, указанный по абсолютному пути:

sudo insmod /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/e1000/e1000.ko

Недостаток: insmod не обрабатывает зависимости модулей. Если модулю требуются другие модули, команда завершится с ошибкой.

2. modprobe (рекомендуемый способ)

Автоматически находит модуль в стандартных каталогах, разрешает и загружает зависимости:

sudo modprobe e1000

Ключевые особенности:

  • Ищет модули в /lib/modules/$(uname -r)/
  • Использует файл зависимостей /lib/modules/$(uname -r)/modules.dep
  • Поддерживает параметры загрузки через файлы в /etc/modprobe.d/

3. depmod (генерация зависимостей)

Создает файлы зависимостей для modprobe. Обычно выполняется автоматически при обновлении ядра:

sudo depmod -a

Практический пример рабочего процесса

# 1. Поиск модуля (например, для сетевой карты Realtek)
find /lib/modules/$(uname -r) -name "*r8169*"

# 2. Проверка информации о модуле
modinfo r8169

# 3. Загрузка модуля с автоматическим разрешением зависимостей
sudo modprobe r8169

# 4. Проверка загруженных модулей
lsmod | grep r8169

# 5. Выгрузка модуля
sudo modprobe -r r8169

Управление модулями через конфигурацию

Для постоянной загрузки модулей при старте системы используются:

  • Файлы в /etc/modules-load.d/ (системы на основе systemd):
# /etc/modules-load.d/my-modules.conf
e1000
vfio-pci
  • Файлы в /etc/modprobe.d/ для параметров модулей:
# /etc/modprobe.d/blacklist.conf
blacklist nouveau
options e1000 interrupt_throttle_rate=8000

Диагностика и отладка

# Просмотр всех загруженных модулей
lsmod

# Детальная информация о модуле
modinfo <module_name>

# Просмотр сообщений ядра при загрузке модуля
sudo dmesg | tail -20

# Проверка зависимостей модуля
modprobe --show-depends e1000

Особенности для разных дистрибутивов

  • RHEL/CentOS/Fedora: modprobe + конфиги в /etc/sysconfig/modules/
  • Debian/Ubuntu: modprobe + /etc/modules
  • Arch Linux: modprobe + /etc/modules-load.d/

Безопасность и best practices

  1. Проверяйте подписанные модули в безопасных средах:
sudo modprobe --set-vermagic <module> --force
  1. Черный список ненужных или конфликтующих модулей через /etc/modprobe.d/blacklist.conf

  2. Используйте modprobe вместо insmod для автоматического разрешения зависимостей

  3. Тестируйте модули перед добавлением в автозагрузку:

sudo modprobe <module> && sleep 10 && sudo modprobe -r <module>

Автоматизация в DevOps-контексте

В инфраструктуре как код модули ядра часто настраиваются через:

  • Ansible: модуль kernel_module
  • Puppet: ресурс kernel_module
  • Terraform: provisioner с shell-скриптами

Пример Ansible-плейбука:

- name: Ensure kernel module is loaded
  kernel_module:
    name: e1000
    state: present
    params: 'interrupt_throttle_rate=8000'

Важно: При работе в облачных средах (AWS, GCP, Azure) загрузка модулей ядра часто ограничена политиками безопасности и требует использования специальных образов с поддержкой кастомных модулей.

Какой командой загрузить модуль ядра? | PrepBro