Установка и подписание пользовательских модулей ядра в режиме безопасной загрузки SLES 15.

Сторонний драйвер на SUSE Linux Enterprise Server 15 может компилироваться корректно, но не загружаться с ошибкой «Необходимый ключ недоступен» или «Ключ был отклонен службой». Если UEFI Secure Boot требует подписи модулей, решение состоит в том, чтобы подписать пользовательский модуль ядра доверенным сертификатом, зарегистрировать этот сертификат через управление ключами владельца машины (MOK), а затем загрузить модуль обычным способом — без отключения Secure Boot.

Данная процедура предполагает стандартную систему SLES 15 UEFI с использованием SUSE shim, kernel-defaultядра, прав администратора и доверенного источника драйверов. Она рассматривает пользовательские .koмодули, не предусматривает подписание заменяющего ядра или изменение ключей платформы прошивки. Примеры соответствуют модели администрирования SLES 15 SP6/SP7; проверьте различия в пакетах и ​​вариантах ядра в установленном вами пакете обновлений.

1. Сначала проверьте Secure Boot и работающее ядро.

Войдите в систему с правами администратора и укажите, какое ядро ​​вы фактически загрузили. Одного лишь совпадения имени пакета недостаточно, чтобы доказать, что модуль может быть загружен в это ядро.

uname -r
mokutil --sb-state
ls -ld "/lib/modules/$(uname -r)/build"
В терминале отображаются результаты команды `uname -r`, статус безопасной загрузки с помощью `mokutil` и проверка каталога сборки ядра.
Перед установкой или подписанием драйвера проверьте активный релиз ядра и состояние Secure Boot.

Если mokutilсистема сообщает о включенной функции Secure Boot, вероятной причиной сбоя загрузки, связанного с ключом, является ненадежная подпись. Если она отключена, перед генерацией ключей следует исследовать другие причины; также может иметь значение явное принудительное применение подписи ядра. После неудачной загрузки проверьте журнал ядра, чтобы узнать фактическое сообщение об отклонении.

sudo journalctl -k -b --no-pager | tail -n 50

Перед установкой проверьте модуль-кандидат. Замените имя файла в примере на реальное; оно vermagicдолжно соответствовать текущей версии ядра и совместимым параметрам сборки.

modinfo -F name /path/to/mydriver.ko
modinfo -F vermagic /path/to/mydriver.ko
В терминале отображается пример вывода команды modinfo для внешнего драйвера ядра и путь к инструменту подписи ядра.
Проверяйте метаданные модулей, особенно vermagic, вместо того, чтобы предполагать, что любой файл .ko будет соответствовать SLES 15.

2. Используйте поддерживаемый пакет драйверов или создайте соответствующий модуль.

Сначала обратитесь к поставщику оборудования или программного обеспечения с просьбой предоставить совместимый с SLES, уже подписанный пакет модулей ядра (KMP). Это предпочтительнее, чем ручная установка бинарного файла: поставщик может обеспечить обработку обновлений ядра и документированный процесс регистрации сертификата. Подпись поставщика не автоматически считается доверенной на каждой машине с функцией Secure Boot.

Если вам необходимо собрать драйвер, установите файлы разработки, соответствующие используемому вами ядру. Что касается конфигурации kernel-default, то обычные пакеты SLES включают в себя стандартный пакет разработки ядра, файлы разработки ядра и инструменты сборки. Доступность репозитория и его версии зависят от регистрации и включенных модулей SLES.

sudo zypper install gcc make openssl mokutil kernel-devel kernel-default-devel
rpm -q kernel-default-devel kernel-devel
readlink -f "/lib/modules/$(uname -r)/build"
Терминал в стиле SLES, отображающий установку с помощью zypper необходимых компонентов для разработки ядра и подписи.
Перед началом работы с пользовательским модулем установите соответствующие пакеты разработки ядра и криптографические инструменты.

Если каталог сборки отсутствует или пакет разработки предназначен для другой версии ядра, сначала устраните несоответствие пакета и ядра. Для сборки недавно установленного ядра может потребоваться контролируемая перезагрузка.

Используйте инструкции по сборке от поставщика из каталога исходных кодов доверенных драйверов. Для обычных модулей на основе kbuild приведенная ниже команда выполняет сборку с использованием работающего ядра; она не загружает и не создает драйвер самостоятельно.

cd /path/to/driver-source
make -C "/lib/modules/$(uname -r)/build" M="$PWD" modules
В терминале отображается команда kbuild make, компилирующая внешний модуль ядра для работающего ядра SLES.
Используйте дерево сборки ядра и каталог исходных кодов драйвера для создания соответствующего файла .ko.

Пропускайте компиляцию, если у вас уже есть совместимый модуль .koот надежного поставщика. Никогда не загружайте модуль принудительно с неправильным значением vermagic; сигнатура не может исправить несовместимый исполняемый файл.

3. Создайте ключ подписи и подпишите установленный модуль.

Создайте выделенный ключ RSA и сертификат X.509 в каталоге, доступном только для корневого пользователя. Открытый сертификат будет зарегистрирован; закрытый ключ должен оставаться защищенным, поскольку тот, кто его контролирует, может подписывать дополнительные модули, которым может доверять эта машина.

sudo -i
umask 077
mkdir -p /root/module-signing
cd /root/module-signing
openssl req -new -x509 -newkey rsa:3072 -sha256 -days 3650 -nodes \
  -subj "/CN=SLES Custom Module Signing/" \
  -keyout MOK.priv -out MOK.pem
openssl x509 -in MOK.pem -outform DER -out MOK.der
chmod 600 MOK.priv
В терминале отображается команда OpenSSL, создающая локальный закрытый ключ RSA и сертификат подписи модуля X.509.
Сгенерируйте отдельную пару ключей для подписи модуля и храните закрытый ключ в тайне, доступ к нему должен быть ограничен администратором.

-nodesВ качестве простого примера создается незашифрованный закрытый ключ; для производственного процесса подписания используйте соответствующим образом защищенный зашифрованный ключ или внешнюю службу подписи в соответствии с вашей политикой безопасности. Показанный здесь десятилетний срок действия является иллюстративным и не является рекомендацией по сроку действия сертификата для организации.

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

install -D -m 0644 /path/to/mydriver.ko \
  "/lib/modules/$(uname -r)/extra/mydriver.ko"
SIGN_FILE="$(readlink -f /lib/modules/$(uname -r)/build)/scripts/sign-file"
test -x "$SIGN_FILE" || echo "Locate the sign-file binary for this kernel"
"$SIGN_FILE" sha256 /root/module-signing/MOK.priv \
  /root/module-signing/MOK.der \
  "/lib/modules/$(uname -r)/extra/mydriver.ko"
modinfo -F signer "/lib/modules/$(uname -r)/extra/mydriver.ko"
В терминале отображается пример вызова файла подписи и проверка подписи модуля modinfo для модуля ядра.
Примените подпись к установленному файлу .ko и проверьте поле "Подписант" перед его загрузкой.

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

4. Зарегистрируйте публичный сертификат с помощью MOK.

Импортируйте открытый сертификат в формате DER — нет MOK.priv— и установите одноразовый пароль для регистрации, запрошенный mokutil. Организуйте доступ к консоли перед перезагрузкой; авторизация происходит в интерфейсе MokManager при загрузке, а не в оболочке SSH.

mokutil --import /root/module-signing/MOK.der
mokutil --list-new
reboot
Загрузочное меню в стиле Blue MokManager, где опция «Зарегистрировать MOK» выделена выше остальных параметров ключа владельца машины.
В меню загрузки UEFI выберите «Зарегистрировать MOK» и подтвердите запрошенную регистрацию сертификата.

При следующей загрузке выберите «Зарегистрировать MOK» , следуйте инструкциям по подтверждению, введите одноразовый пароль и продолжите загрузку. Внешний вид меню зависит от версии прошивки и модуля. Возврат в Linux без подтверждения регистрации приведет к тому, что новый сертификат будет считаться недоверенным.

После загрузки убедитесь, что указанный сертификат зарегистрирован:

sudo mokutil --test-key /root/module-signing/MOK.der
sudo mokutil --list-enrolled

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

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

sudo depmod -a
sudo modprobe mydriver
lsmod | grep -w mydriver
modinfo -F signer mydriver
В терминале отображаются команды modprobe, lsmod и kernel-log, используемые для проверки подписанного модуля.
Убедитесь, что подписанный модуль отображается в списке загруженных модулей, и проверьте журнал ядра на наличие ошибок.

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

  • Ключ отклонен или необходимый ключ недоступен: повторный запуск mokutil --test-key; убедитесь, что установленный вами файл является подписанным, и проверьте, не был ли он заменен обновлением драйвера.
  • Недопустимый формат модуля: сравните modinfo -F vermagicс uname -r, пересоберите для активного ядра и проверьте архитектуру ЦП.
  • Неизвестный символ или отсутствующая зависимость: проверьте journalctl -k -bнеобходимые модули поставщика и ABI ядра; другая сигнатура не исправит отсутствующие символы.

Для критически важных при загрузке драйверов хранилища или сети сначала протестируйте их на непроизводственной системе и убедитесь в наличии консоли восстановления. Настраивайте автоматическую загрузку только после того, как драйвер будет работать надежно; /etc/modules-load.d/в документации SUSE описаны модули, которые не загружаются при обнаружении устройства.

Проверьте результат после перезагрузки.

Если постоянная загрузка имеет значение, перезагрузите систему еще раз в течение периода обслуживания. Убедитесь, что функция Secure Boot остается включенной, открытый ключ зарегистрирован, модуль присутствует, и ядро ​​не сообщает о новых ошибках проверки или совместимости. .koПосле обновления ядра или драйверов поставщика пересоберите или переустановите и подпишите обновленную версию.

mokutil --sb-state
sudo mokutil --test-key /root/module-signing/MOK.der
modinfo -F signer mydriver
lsmod | grep -w mydriver
sudo journalctl -k -b --no-pager | tail -n 30

Основная документация: SUSE SLES 15 SP6: UEFI и ключи владельца машины ; SUSE: Управление модулями ядра ; Ядро Linux: Средство подписи модулей ; Ядро Linux: Сборка внешних модулей . Руководство администратора SLES 15 SP6 было обновлено 17 сентября 2026 г.; поведение команд для установщиков драйверов сторонних производителей и нестандартных вариантов ядра необходимо уточнить у их сопровождающих.

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

Диагностика сбоев входа в SLES PAM без блокировки доступа.

Диагностика сбоев входа в SLES PAM без блокировки доступа.

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

Безопасная пересылка Syslog-сообщений SLES с использованием rsyslog и взаимного TLS.

Безопасная пересылка Syslog-сообщений SLES с использованием rsyslog и взаимного TLS.

Отправляйте системные журналы SLES на удаленный сборщик rsyslog по аутентифицированному TLS, с проверкой сертификатов, буферизацией сбоев и тестированием доставки.

Автоматизируйте согласованное резервное копирование Nextcloud с помощью Restic и Cron.

Автоматизируйте согласованное резервное копирование Nextcloud с помощью Restic и Cron.

Создавайте резервные копии файлов Nextcloud и MariaDB одновременно, планируйте создание зашифрованных снимков Restic с помощью cron и проверяйте восстановление, не рискуя работающим сервером.

Создание резервной копии и восстановление почтового ящика Zimbra CE с помощью экспорта TGZ.

Создание резервной копии и восстановление почтового ящика Zimbra CE с помощью экспорта TGZ.

Экспортируйте отдельный почтовый ящик Zimbra Community Edition, проверьте его резервную копию TGZ и восстановите отсутствующие элементы без перезаписи существующих писем.

Разрешите авторизованным пользователям создавать комнаты Jitsi с помощью входа через Keycloak.

Разрешите авторизованным пользователям создавать комнаты Jitsi с помощью входа через Keycloak.

Разрешите создавать комнаты Jitsi Meet только авторизованным пользователям, используя аутентификацию Keycloak и токены, при этом сохранив возможность присоединения гостей при необходимости.

Добавление шрифтов в ONLYOFFICE Document Server: Docker против Linux

Добавление шрифтов в ONLYOFFICE Document Server: Docker против Linux

Установите пользовательские шрифты в ONLYOFFICE Document Server, сравните постоянные Docker-контейнеры с прямыми копиями, перестройте список шрифтов и проверьте результат.

Синхронизация пользователей Active Directory с ONLYOFFICE DocSpace через LDAP

Синхронизация пользователей Active Directory с ONLYOFFICE DocSpace через LDAP

Подключите ONLYOFFICE DocSpace к Active Directory или OpenLDAP, безопасно импортируйте пользователей и группы, сопоставляйте поля учетных записей и планируйте надежную синхронизацию.

Разместите документы ONLYOFFICE за HAProxy, не нарушая режим редактирования.

Разместите документы ONLYOFFICE за HAProxy, не нарушая режим редактирования.

Настройте HTTPS-протокол HAProxy, заголовки переадресации, тайм-ауты WebSocket и проверки работоспособности для документов ONLYOFFICE, а затем проверьте редактирование и сохранение.

Установка и подписание пользовательских модулей ядра в режиме безопасной загрузки SLES 15.

Установка и подписание пользовательских модулей ядра в режиме безопасной загрузки SLES 15.

Загрузите пользовательский модуль ядра SLES 15, не отключая Secure Boot. Сопоставьте его с работающим ядром, подпишите файл .ko, зарегистрируйте ключ MOK и проверьте загрузку.

Загрузка Ubuntu Server в аварийный режим: пошаговое руководство по восстановлению.

Загрузка Ubuntu Server в аварийный режим: пошаговое руководство по восстановлению.

Безопасная диагностика аварийного режима Ubuntu Server. Чтение журналов загрузки, проверка монтирования корневого каталога и файла fstab, восстановление неисправного модуля, обработка ошибок файловой системы и проверка чистой перезагрузки.