modprobe завершает работу с ошибкой “Операция не разрешена”

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

Я пытаюсь выполнить modprobe wireguard от имени root, и это вызывает ошибку:

modprobe: ERROR: не удалось вставить 'wireguard': Операция не разрешена

Добавив опцию verbose, я получаю еще одну строку:

[root@localhost ben]# insmod /lib/modules/5.2.11-100.fc29.x86_64/extra/wireguard.ko.xz
insmod: ERROR: не удалось вставить модуль /lib/modules/5.2.11-100.fc29.x86_64/extra/wireguard.ko.xz: Операция не разрешена

dkms работает без ошибок. Я также отключил SELinux, и это не изменило ситуацию. В логах journalctl ничего не вижу.

Просмотр мануалов и Google не дал результата.

Я нашел полезную строку в dmesg:

Lockdown: modprobe: Загрузка неподписанного модуля ограничена; смотрите man kernel_lockdown.7

Тем не менее, этой страницы в мануале не существует.

Как я могу отладить это? Есть ли советы, что делать дальше?

Наконец-то нашел что-то по этому поводу. Похоже, это “особенность”, при которой неподписанный код не может быть загружен в ядро при включенной функции безопасной загрузки UEFI (что и есть).

Чтобы загрузить модуль, отключите блокировку ядра через sys-rq:

# echo 1 > /proc/sys/kernel/sysrq
# echo x > /proc/sysrq-trigger

После этого modprobe должен сработать:

modprobe wireguard

Для получения дополнительной информации смотрите:

https://mjg59.dreamwidth.org/50577.html

https://bugzilla.redhat.com/show_bug.cgi?id=1599197

Возможно, на длительный срок лучше подписать ваши модули.

Для Debian и его производных смотрите:

https://wiki.debian.org/SecureBoot#MOK_-_Machine_Owner_Key

Моя дистрибуция Fedora 31 не принимала команды на sysrq
В вики Arch Linux предложили
использовать Alt+PrtSc+x
(на ноутбуках, где Fn является частью клавиатуры). 
Блокировка была успешно отключена, и WireGuard успешно загружен. 
Я установил akmod, поэтому modprobe wireguard сработал для меня
в качестве альтернативы SysRq+x
(В руководстве Red Hat сказано, что это должно быть выполнено
на физически подключенной клавиатуре.)

Мне удалось это сделать на моем Asus ProArt B550 Creator с AMI BIOS, изменив настройку BIOS “Тип ОС” с Windows UEFI на “Другая ОС”. Никакой магии SysRq не потребовалось.

https://www.techpowerup.com/review/asus-proart-b550-creator/images/bios_55-copy.jpg

Если вы находитесь в виртуальной системе, такой как контейнер lxc, вам следует загрузить модуль в основную систему, только тогда он будет доступен внутри контейнера.

Моя проблема заключается в загрузке модуля os overlay для CentOS 7.x (не скомпилированный модуль), который обычно подписывается…
плюс безопасная загрузка не включена (mokutil говорит “EFI переменные не поддерживаются на этой системе”).

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

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

modprobe: ERROR: could not insert 'wireguard': Operation not permitted

Это может быть связано с тем, что система ограничивает загрузку неподписанных модулей ядра из-за включенной функции безопасности UEFI Secure Boot. Это поведение документируется в механизме блокировки ядра. Пункт из вывода dmesg, указывающий на это, выглядит следующим образом:

Lockdown: modprobe: Loading of unsigned module is restricted; see man kernel_lockdown.7

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

1. Отключение Secure Boot

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

2. Используйте SysRq для отключения блокировки

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

echo 1 > /proc/sys/kernel/sysrq
echo x > /proc/sysrq-trigger

После этого попробуйте снова выполнить modprobe wireguard.

3. Подпись модулей

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

4. Изменение параметров BIOS/UEFI

В некоторых системах, возможно, поможет изменение параметра "OS Type" в настройках BIOS с "Windows UEFI" на "Other OS". Это может отключить строгую проверку неподписанных модулей.

5. Загрузка в виртуальных системах

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

6. Проблемы с CentOS

Если вы работаете с CentOS и не можете загрузить модули, которые должны быть подписаны, убедитесь, что у вас действительно отключен Secure Boot. Если команду mokutil не поддерживаются на вашей системе, это может указывать на это.

Заключение

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

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

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

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