Исправлена ​​ошибка «Не удалось запустить загрузку модулей ядра» при загрузке SLES.

Сообщение SLES при загрузке «Не удалось запустить загрузку модулей ядра» обычно означает, что systemd-modules-load.serviceбыла предпринята попытка загрузить как минимум один модуль ядра, и один запрос не удался. Полезная цель состоит не просто в том, чтобы скрыть красную строку при загрузке. Правильное восстановление обеспечивает работоспособность службы, удаляет устаревшие запросы на модули, сохраняет все необходимые драйверы и обеспечивает работоспособность после следующей перезагрузки.

Данное руководство написано для SUSE Linux Enterprise Server 15 и соответствует текущему руководству по администрированию SLES 15 SP7. В документации SUSE указано, что systemd-modules-load.serviceмодули, указанные в файле конфигурации /etc/modules-load.d/*.conf, загружаются автоматически при обнаружении устройств, в то время как большинство современных аппаратных модулей обычно загружаются автоматически. Это различие важно: если устаревшая статическая запись указывает на модуль, который больше не существует, удаление или исправление этой записи часто безопаснее, чем принудительное возвращение устаревшего драйвера в систему. См. документацию SUSE по управлению модулями ядра для SLES 15 SP7 .

Как должен выглядеть успешный результат решения проблемы

Прежде чем что-либо менять, определите желаемый результат. После ремонта:

  • systemctl status systemd-modules-load.serviceБольше не должно сообщать о неудачном результате.
  • В журнале больше не должно отображаться то же сообщение об ошибке загрузки модуля при повторной загрузке.
  • Если модуль действительно необходим, modprobe MODULE_NAMEон должен успешно работать, и соответствующее оборудование или функция должны функционировать.
  • Если модуль устарел, устаревший запрос следует удалить, а не заменять его несвязанным модулем.
  • Если проблема связана с ранней загрузкой, следует пересобрать initramfs, и машина должна перезагрузиться в обычном режиме.

Если не все эти проверки применимы к вашей ситуации, используйте те, которые соответствуют неисправному компоненту. Например, сервер может успешно загрузиться, даже если необязательный модуль неисправен. Это все равно стоит исправить, но это отличается от отсутствия драйвера хранилища, которое препятствует отображению корневой файловой системы.

Шаг 1: Подтвердите неисправность модуля и зафиксируйте точное сообщение об ошибке.

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

sudo systemctl status systemd-modules-load.service --no-pager

Найдите имя модуля и сообщение об ошибке, например Module ... not found, No such device, , Operation not permitted, или сообщение о том, что неподдерживаемый модуль был отклонен. Точная формулировка определяет дальнейшие действия.

Пример работы терминала SLES, демонстрирующий сбой службы systemd-modules-load.service после того, как не удалось загрузить вымышленный модуль example_drv.
Типичный вид состояния сервиса: сосредоточьтесь на имени модуля и первой конкретной ошибке загрузки, а не только на конечном состоянии сбоя.

Если вывод состояния неполный, пока не редактируйте конфигурацию. Сначала получите полный журнал загрузки.

Шаг 2: Перед изменением файлов модулей прочтите журнал загрузки.

Для текущей загрузки запрашивайте информацию только об этой службе:

sudo journalctl -b -u systemd-modules-load.service --no-pager

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

sudo journalctl -b -k --no-pager | grep -iE 'module|modprobe|firmware|taint'

Первая команда отвечает на вопрос, какой именно запрос статической загрузки завершился неудачей . Журнал ядра может добавить контекст, например, отказ драйвера от обнаруженного устройства, зависимость от прошивки, проблемы с подписью или другую ошибку более низкого уровня.

Пример использования команды SLES journalctl, демонстрирующий вымышленную ошибку загрузки модуля ядра внутри службы systemd-modules-load.service.
Журнал обслуживания сужает круг проблем до запроса модуля, который не удалось выполнить во время этой загрузки, что является необходимым доказательством перед принятием решения о ремонте.

Результат, подобный этому, Module foo not found in directory /lib/modules/...обычно указывает на устаревшую конфигурацию, несоответствие ядра/пакета или сторонний драйвер, который не был пересобран для активного ядра. No such deviceДругой пример: файл модуля может существовать, но текущее оборудование или виртуальное устройство может не соответствовать ожиданиям драйвера.

Шаг 3: Выясните, кто запрашивает у SLES загрузку этого модуля.

Найдите стандартные места расположения статической нагрузки и конфигурацию modprobe:

grep -Rns --color=auto 'MODULE_NAME'   /etc/modules-load.d /run/modules-load.d /usr/lib/modules-load.d   /etc/modprobe.d /usr/lib/modprobe.d 2>/dev/null

Замените MODULE_NAMEна имя из журнала. В SLES 15 SP7 локальные записи в /etc/modules-load.d/являются стандартным местом, управляемым администратором, для модулей, которые должны быть загружены при загрузке, в то время как упакованные записи могут существовать в /usr/lib/modules-load.d/. SUSE отмечает, что большинству модулей вообще не требуется ручная запись в modules-load.d.

Затем проверьте, действительно ли активное ядро ​​содержит этот модуль:

uname -r
sudo modinfo MODULE_NAME
sudo modprobe MODULE_NAME
Пример использования терминала SLES, сравнивающий активную версию ядра со статической записью в файле modules-load.d и ошибкой modprobe «модуль не найден».
Сравните имя сконфигурированного модуля с именем работающего ядра. Статическая запись, указывающая на модуль, отсутствующий в этом ядре, является явным признаком устаревшей конфигурации или отсутствующего пакета драйверов.

Если модуль устарел

Удалите или отключите локальный файл, который запрашивает это. Не удаляйте файл поставщика /usr/libпросто для того, чтобы заглушить ошибку, поскольку обновления пакетов могут его восстановить. Если вы определите, что локальный /etc/modules-load.d/*.confфайл был создан для устаревшего оборудования или старого программного обеспечения, удалите эту локальную запись и повторите проверку.

Если модуль должен существовать, но modinfo не может его найти.

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

uname -r
ls -ld /lib/modules/$(uname -r)
rpm -q kernel-default

Стандартная проверка качества проста: /lib/modules/$(uname -r)драйвер должен существовать и содержать модули для фактически работающего ядра. Если драйвер стороннего разработчика был скомпилирован для более старой версии ядра, переустановите или пересоберите этот драйвер для текущего ядра SLES, используя поддерживаемую производителем процедуру. Избегайте копирования файла .koиз другой версии ядра только для того, чтобы modprobeчто-то найти; различия в ABI ядра или сигнатурах могут сделать это небезопасным или неэффективным.

Если модуль находится в чёрном списке

Найдите черный список или установите средство переопределения:

grep -Rns --color=auto -E '^[[:space:]]*(blacklist|install)[[:space:]]+MODULE_NAME'   /etc/modprobe.d /usr/lib/modprobe.d 2>/dev/null

Удаляйте черный список только после подтверждения причины его добавления. Черный список может защитить систему от конфликтующих драйверов. В руководстве по модулям SUSE описаны как постоянные черные списки, так и временные черные списки во время работы GRUB, поэтому правильным решением может быть удаление запроса на статическую загрузку вместо удаления черного списка.

Если SLES сообщает о неподдерживаемом модуле

Не включайте автоматически загрузку неподдерживаемых модулей. SLES помечает модули ядра для статуса поддержки, и принудительное включение неподдерживаемого модуля может повлиять на возможность его поддержки. SUSE описывает механизм исключений для сценариев тестирования или исправления от поставщика в своем Руководстве администратора. Используйте его только тогда, когда вы понимаете последствия для поддержки и имеете законную потребность в драйвере. Аналогичное актуальное руководство SUSE доступно по адресу SLES 15 SP7 Administration Guide .

Шаг 4: Пересобирайте initramfs только в том случае, если изменение затрагивает раннюю загрузку.

Если неисправный модуль необходим внутри initramfs, или вы изменили критически важные для загрузки драйверы или конфигурацию черного списка, которые должны быть там отражены, перегенерируйте образ:

sudo dracut -f

В документации SUSE подробно описано восстановление initramfs после изменений драйверов, влияющих на загрузку. В текущем руководстве по процессу загрузки объясняется, когда необходимо добавить драйверы в initramfs и как dracutэто делается для его восстановления: Введение в процесс загрузки в SLES 15 SP7 .

Не следует запускать dracut -fэту процедуру каждый раз при возникновении ошибки необязательного модуля. Если обычный модуль, установленный после загрузки, просто был указан в файле /etc/modules-load.d, исправления этого файла может быть достаточно. Пересборка initramfs наиболее актуальна, когда некорректная конфигурация встроена в образ загрузки или необходимый драйвер должен быть доступен до полного монтирования корневой файловой системы.

Пример работы терминала SLES, демонстрирующий пересборку initramfs командой dracut с последующей проверкой службы systemd modules-load.
Если исправление затрагивает раннюю загрузку, пересоберите initramfs, а затем проверьте работу службы, вместо того чтобы предполагать, что успешная команда dracut сама по себе устранила исходную ошибку модуля.

Перед тем как считать инцидент закрытым, убедитесь в качестве выполненного ремонта.

Сначала проверьте работу без перезагрузки, когда это будет безопасно:

sudo systemctl restart systemd-modules-load.service
systemctl status systemd-modules-load.service --no-pager
systemctl is-failed systemd-modules-load.service

Если необходимый модуль должен быть загружен, подтвердите это:

lsmod | grep -w MODULE_NAME

Затем перезагрузите компьютер во время планового технического обслуживания и проверьте новую загрузку:

sudo reboot

После входа в систему:

systemctl --failed
journalctl -b -u systemd-modules-load.service --no-pager

Наиболее убедительным признаком успеха является не исчезновение сообщения в консоли, а то, что после перезагрузки ошибка модуля не повторяется, и оборудование или подсистема, зависящие от этого модуля, по-прежнему работают.

Когда следует изменить подход

Что вы найдетеЛучший следующий шаг
Модуль отсутствует и больше не нужен.Удалите устаревший локальный запрос на загрузку.
Модуль отсутствует, но необходим.Восстановите правильный пакет драйверов SLES или драйверов поставщика для работающего ядра; не копируйте случайный исполняемый файл модуля.
Модуль существует, но выдает сообщение «Такого устройства не существует».Проверьте аппаратное обеспечение, модель виртуального устройства, идентификаторы PCI/USB и убедитесь, что драйвер по-прежнему актуален.
Модуль намеренно внесен в черный список.Сохраните черный список и удалите противоречивую запись о принудительной нагрузке, если требования не изменились.
Работа стороннего модуля прекратилась после обновления ядра.Используйте поддерживаемый сторонним поставщиком процесс пересборки/переустановки нового ядра или загрузите заведомо исправное поддерживаемое ядро ​​во время его восстановления.
В дело вступает критически важный для загрузки носитель данных, файловая система или драйвер многоканального доступа.Рассматривайте это как проблему, связанную с initramfs/восстановлением загрузки, и проверьте работоспособность системы с консоли или из режима восстановления, прежде чем снова перезагружать систему.

Ограничения этого исправления

Сообщение «Не удалось запустить загрузку модулей ядра» — это симптом, а не единичный дефект. Данная процедура устраняет сбои, вызванные запросами статических модулей, отсутствующими или несовместимыми модулями, черными списками и синхронизацией initramfs. Она не заменяет диагностику оборудования, поддержку сторонних драйверов, работу по подписанию Secure Boot или восстановление данных с хранилища, когда само корневое устройство недоступно.

Для производственных систем SLES необходимо обеспечить поддержку: отдавайте предпочтение модулю, поставляемому вместе с ядром SLES, следите за тем, чтобы драйверы сторонних разработчиков соответствовали матрице поддержки их поставщиков, и используйте документированные механизмы SUSE, а не обходите проверки просто для устранения сбоя службы. Восстановление считается завершенным, когда состояние службы, журнал загрузки и зависимое оборудование подтверждают, что проблема устранена.

Оставить комментарий

Как безопасно восстановить потерянные разделы и данные с жесткого диска

Как безопасно восстановить потерянные разделы и данные с жесткого диска

Узнайте, как восстановить потерянные разделы и файлы с помощью TestDisk и PhotoRec. Защитите исходный диск, проведите безопасное сканирование и сохраните восстановленные данные на другой диск.

Как сканировать QR-коды на настольном компьютере с Linux

Как сканировать QR-коды на настольном компьютере с Linux

Сканируйте QR-коды в Linux с помощью CoBang, используя веб-камеру или файл изображения. См. варианты установки, шаги настройки и решения проблем с доступом к камере Flatpak.

Как изменить настройки веб-камеры в Linux с помощью Cameractrls

Как изменить настройки веб-камеры в Linux с помощью Cameractrls

Изменяйте настройки веб-камеры в Linux с помощью Cameractrls: настраивайте экспозицию, цвет, подавление мерцания и другие поддерживаемые параметры, а затем проверяйте совместимые видеорежимы.

Как установить PhpStorm на Linux: Toolbox, Tar.gz, Snap и AUR

Как установить PhpStorm на Linux: Toolbox, Tar.gz, Snap и AUR

Установите PhpStorm на Linux с помощью JetBrains Toolbox или автономного архива tar.gz, а также через Snap и Arch AUR. Java уже включена в комплект.

Как создать резервную копию CD-ROM в формате ISO в Linux

Как создать резервную копию CD-ROM в формате ISO в Linux

Создайте образ CD-ROM ISO в Linux с помощью GNOME Disks или dd. Определите оптический привод, отслеживайте процесс копирования, проверяйте образ и узнавайте, когда поврежденный диск или аудиодиск требует использования другого инструмента.

Как вырезать изображение в Linux с помощью GIMP

Как вырезать изображение в Linux с помощью GIMP

Удаление фона фотографии в Linux с помощью GIMP: обведите контур объекта, удалите выделенный фон, сохранив прозрачность, и экспортируйте многоразовый PNG-файл.

Как установить Cisco Packet Tracer на Linux

Как установить Cisco Packet Tracer на Linux

Загрузите Cisco Packet Tracer 9.0.1 для Ubuntu 64-бит, установите DEB-пакет с помощью APT, примите лицензионное соглашение в Терминале и войдите в систему, чтобы начать лабораторную работу.

Скачайте FlightGear бесплатно: официальное руководство по установке

Скачайте FlightGear бесплатно: официальное руководство по установке

Скачайте FlightGear бесплатно с официального сайта. Сравните пакеты для Windows, macOS и Linux, установите файлы данных и совершите свой первый полет.

Настольное приложение Google Tasks: как им пользоваться на компьютере

Настольное приложение Google Tasks: как им пользоваться на компьютере

Откройте Google Задачи в браузере, добавьте ярлык Chrome или запустите приложение, и управляйте задачами с указанием даты через Календарь и Gmail.

OKSampler: Бесплатный и простой музыкальный сэмплер для клавишных ритмов.

OKSampler: Бесплатный и простой музыкальный сэмплер для клавишных ритмов.

OKSampler сопоставляет MP3-клипы с клавишами клавиатуры и может зацикливать аудио. Узнайте, что делает эта старая бесплатная программа, на чем заканчиваются ее старые функции и что нужно проверить перед загрузкой.