Как изменить значение module.sig_enforce, которое использует ядро Fedora?

Вопрос или проблема

Я использую ядро Fedora версии: 4.15.3-300.fc27.i686). Я пытаюсь загрузить пользовательский драйвер устройства. Когда я пытаюсь использовать устройство (через вызов open() в программе на C), вызов завершается с ошибкой, errno равно 6 (ENODEV). Когда я смотрю на это ближе, я вижу следующие сообщения от dmesg:

[Вт Апр 24 17:34:32 2018] mymodule: загрузка модуля вне дерева портит ядро.
[Вт Апр 24 17:34:32 2018] mymodule: проверка модуля не удалась: подпись и/или требуемый ключ отсутствуют - порча ядра

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

Если UEFI Secure Boot отключен и параметр ядра module.sig_enforce не был задан, то неподписанные модули ядра и подписанные модули ядра без открытого ключа могут быть успешно загружены.

Компьютер, который я использую, использует BIOS и не поддерживает UEFI.

Как мне узнать текущее значение параметра module.sig_enforce и как мне его изменить?

На самом деле ответ Эльмера не является неправильным. Ссылка, упомянутая в комментарии (цитата ниже), на самом деле указывает на /etc/grub2.cfg. Хотя это символическая ссылка, это все еще верно. Практика изменения этой символической ссылки (/etc/grub2.cfg) на /boot/grub2/grub.cfg рискованна, и существуют лучшие/безопасные способы добиться желаемого результата.

Прямо из: Глава 26. Работа с GRUB 2 Red Hat Enterprise Linux 7 | Портал клиентов Red Hat

26.4. Внесение постоянных изменений в меню GRUB 2 с помощью инструмента grubby Инструмент grubby можно использовать для чтения информации из файла grub.cfg и внесения в него
постоянных изменений. Он позволяет, например,
изменять записи меню GRUB 2, чтобы указать, какие аргументы передавать ядру при запуске системы, и менять ядро по умолчанию.

В Red Hat Enterprise Linux 7, если grubby вызывается вручную без указания файла конфигурации GRUB 2, он по умолчанию ищет /etc/grub2.cfg, который является символической ссылкой на файл grub.cfg, местоположение которого зависит от архитектуры. Если этот файл не может быть найден, он будет искать архитектурно зависимый по умолчанию.

В RHEL7 вы можете изменить /etc/grub2.cfg и либо удалить его, либо изменить значение с yes на no. Поскольку вы используете Fedora, это должно быть похожим.

Ответ или решение

Для изменения значения параметра module.sig_enforce, используемого ядром Fedora, вам необходимо изменить конфигурацию загрузчика GRUB. Параметр module.sig_enforce определяет, должны ли загружаться только подписанные модули ядра, что может быть важно при работе с пользовательскими драйверами. Ваша ситуация требует определенных действий, чтобы разрешить загрузку неподписанных модулей, если UEFI Secure Boot отключен и BIOS поддерживает загрузку без проверки подписи.

Шаг 1: Проверка текущего значения module.sig_enforce

Для начала вы можете проверить текущее значение параметра module.sig_enforce. Это можно сделать с помощью команды:

cat /proc/sys/kernel/module.sig_enforce

Если значение равно 1, это означает, что загружаются только подписанные модули. Значение 0 позволит загружать неподписанные модули.

Шаг 2: Изменение значения через GRUB

  1. Установка нового значения через grubby:

    Fedora использует инструмент grubby для управления параметрами загрузки. Чтобы изменить значение module.sig_enforce, выполните следующую команду в терминале:

    sudo grubby --set-args="module.sig_enforce=0" --update-kernel=ALL

    Эта команда установит параметр на значение 0 для всех доступных ядер, что позволит загружать неподписанные модули.

  2. Перезагрузка системы:

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

    sudo reboot

Шаг 3: Проверка изменений

После перезагрузки вы можете снова выполнить команду из Шага 1, чтобы убедиться, что значение module.sig_enforce установлено на 0. Теперь вы сможете загружать ваш пользовательский драйвер без необходимости его подписывать.

Рекомендации

  • На случай, если вы будете готовить модули для использования в безопасности критичных приложениях, что может потребовать цифровой подписи для обеспечения доверия, достаточно рано начинать изучение и практическое применение подписей для των модулей ядра.
  • Следите за обновлениями в документации Fedora, чтобы узнать о потенциальных изменениях в политике управления модулями и их подписями.

Эти шаги позволят вам эффективно управлять загрузкой модулей в Fedora и работать с пользовательскими драйверами, минимизируя проблемы, связанные с подписями модулей ядра.

Оцените материал
Добавить комментарий

Капча загружается...