systemd-modules-load: модуль не загружается при загрузке системы
Модули, нужные службам, загружаются отдельной службой при старте системы. Её отказ виден только в журнале, а последствия проявляются позже: не работает брандмауэр, не поднимается туннель, не монтируется файловая система.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Модуля нет для текущего ядра
После обновления ядра модули сторонних сборок могут отсутствовать. Загрузка отказывает.
-
Модуль встроен в ядро
Встроенную функциональность загружать не нужно, и попытка даёт сообщение об отсутствии модуля.
-
Модуль заблокирован в чёрном списке
Блокировка не даёт загрузить модуль ни автоматически, ни по описанию. Служба сообщает об отказе.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Какие модули не загрузились при старте.
journalctl -u systemd-modules-load -b --no-pagerЗагруженные модули.
lsmod | head -20Загрузка модуля вручную с подробным выводом.
sudo modprobe -v имя_модуля 2>&1 | headРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- После обновления ядра модули сторонних сборок могут отсутствовать. Загрузка отказывает.
- Как проверить
-
Посмотрите сообщение и наличие модуля.
journalctl -u systemd-modules-load -b --no-pager | tail -10 modinfo tun 2>&1 | head -3; uname -r
- Как исправить
- Пересоберите или установите модуль для текущего ядра. После обновления ядра это надо проверять отдельно.
- Почему происходит
- Встроенную функциональность загружать не нужно, и попытка даёт сообщение об отсутствии модуля.
- Как проверить
-
Посмотрите, встроен ли модуль.
grep -E "CONFIG_TUN" /boot/config-$(uname -r) 2>/dev/null
- Как исправить
- Уберите модуль из описания загрузки: встроенная поддержка уже работает. Значение «y» в настройках ядра означает встроенную поддержку.
- Почему происходит
- Блокировка не даёт загрузить модуль ни автоматически, ни по описанию. Служба сообщает об отказе.
- Как проверить
-
Посмотрите чёрные списки.
sudo grep -rh "blacklist" /etc/modprobe.d/ 2>/dev/null | head sudo modprobe -v tun 2>&1 | head -3
- Как исправить
- Снимите блокировку либо откажитесь от модуля. Блокировки обычно ставят намеренно, поэтому стоит выяснить причину, прежде чем убирать.
Пример вывода
Модуля нет для текущего ядра. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
systemd-modules-load[610]: Failed to find module 'wireguard'
systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start systemd-modules-load.service - Load Kernel Modules.
Связанные ошибки
- openvpn: Cannot open TUN/TAP dev /dev/net/tun Служба не может открыть устройство туннеля: нет модуля, нет устройства в контейнере или мешает изоляция unit-файла.
- systemd-sysctl: Couldn't write sysctl setting Настройки ядра не применяются при загрузке: параметра нет в ядре, модуль не загружен или конфликт описаний.
- WireGuard: туннель поднят, но обмена нет Интерфейс есть, рукопожатие не проходит: неверные ключи, недоступный порт, несовпадение разрешённых адресов.
- Обновление микрокода процессора не загружено В журнале ядра нет записи о загрузке микрокода: пакет не установлен или образ начальной загрузки не обновлён.
- A start job is running: загрузка висит на одной службе Загрузка останавливается с обратным отсчётом: служба не укладывается в таймаут. Как найти виновника и не ждать.
- Cannot assign requested address при привязке Ошибка 99 при привязке: адрес не принадлежит машине или ещё не поднят. Разбор с network-online.target и ip_nonlocal_bind.
- Dependency failed for … и результат 'dependency' Сообщение Dependency failed for: служба не запускалась, потому что упала её зависимость. Как найти настоящего виновника.
- Elasticsearch: max virtual memory areas vm.max_map_count is too low Elasticsearch отказывается стартовать из-за заниженного vm.max_map_count. Как поднять значение и закрепить его.
Где встречается чаще всего
Источники
-
modules-load.d(5)
Описания загрузки модулей при старте. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено описанием с модулем, отсутствующим для текущего ядра.