Secure Boot и Linux: установка драйверов без отключения защиты
Чтобы драйвер NVIDIA или другой модуль DKMS работал при включённом Secure Boot, его нужно подписать своим ключом и добавить этот ключ в список MOK через mokutil. Делается это один раз: после подтверждения на экране MOK Manager модули подписываются автоматически при каждом обновлении ядра.

Содержание
Почему драйвер не загружается при включённом Secure Boot
Ситуация знакомая: поставили драйвер NVIDIA, VirtualBox или модуль для Wi-Fi адаптера, перезагрузились, а он не работает. В терминале при ручной загрузке видно:
sudo modprobe nvidia
# modprobe: ERROR: could not insert 'nvidia': Key was rejected by serviceПричина в цепочке доверия. С включённым Secure Boot прошивка запускает только подписанный загрузчик shim, тот проверяет GRUB и ядро, а ядро Ubuntu, Fedora или Debian в этом режиме переходит в lockdown и принимает только модули, подписанные известным ему ключом. Модули из пакетов дистрибутива подписаны при сборке. А вот модули, которые собираются у вас на компьютере через DKMS или akmods, подписать заранее некому.
Чаще всего это касается драйвера NVIDIA, VirtualBox (vboxdrv), v4l2loopback, ZFS, драйверов Broadcom и Realtek для Wi-Fi. Отключать Secure Boot ради них не нужно: достаточно один раз создать свой ключ, добавить его в список MOK и подписывать им модули. Дальше всё происходит автоматически при каждом обновлении ядра.
Сначала проверьте, что дело действительно в Secure Boot:
mokutil --sb-state
sudo dmesg | grep -i -e lockdown -e 'module verification'MOK: собственный ключ рядом с ключами Microsoft
В базе ключей прошивки обычно лежат сертификаты Microsoft. Shim подписан Microsoft и добавляет второй, свой список доверенных ключей - Machine Owner Key, или MOK. Ключи туда может добавить только владелец компьютера, причём подтверждение происходит до загрузки системы, на синем экране MOK Manager. Вредоносная программа в работающей системе не сможет тихо подложить свой ключ: без физического присутствия и пароля на этом экране ничего не произойдёт.
Порядок для всех дистрибутивов одинаковый:
- Создать пару ключей: закрытый остаётся на диске, открытый в формате DER пойдёт в MOK.
- Поставить открытый ключ в очередь на добавление командой
mokutil --importи придумать одноразовый пароль. - Перезагрузиться и подтвердить ключ в MOK Manager.
- Пересобрать или подписать модули, если они были собраны до появления ключа.
Разница между дистрибутивами только в том, где лежит ключ и кто им подписывает модули.
| Дистрибутив | Кто собирает модули | Где открытый ключ | Импорт |
|---|---|---|---|
| Ubuntu 26.04 LTS | DKMS | /var/lib/shim-signed/mok/MOK.der | update-secureboot-policy --enroll-key или mokutil --import |
| Debian 13 | DKMS | /var/lib/dkms/mok.pub | mokutil --import /var/lib/dkms/mok.pub |
| Fedora 44 + RPM Fusion | akmods | /etc/pki/akmods/certs/public_key.der | mokutil --import |
| Arch Linux | DKMS | Подпись модулей не требуется по умолчанию | Свои ключи Secure Boot через sbctl |
Ubuntu: готовые подписанные драйверы и DKMS
Для NVIDIA в Ubuntu есть путь вообще без MOK. Утилита ubuntu-drivers по возможности ставит заранее собранные модули из пакетов linux-modules-nvidia-*, а они подписаны ключом Canonical, которому ядро уже доверяет:
ubuntu-drivers devices
sudo ubuntu-drivers installЕсли модуль всё же собирается через DKMS (VirtualBox, нестандартная версия драйвера, Wi-Fi), при установке пакета появится текстовое окно с предложением задать пароль для Secure Boot. Запомните его, он понадобится один раз после перезагрузки. Окно пропустили или ключ не добавился, повторите вручную:
sudo update-secureboot-policy --enroll-key
# или напрямую
sudo mokutil --import /var/lib/shim-signed/mok/MOK.der
sudo mokutil --list-newПоследняя команда показывает ключи, ожидающие подтверждения. Пустой вывод значит, что импорт не встал в очередь. Подробности о выборе версии драйвера NVIDIA есть в статье об установке драйвера NVIDIA.
Debian 13: ключ DKMS
В Debian DKMS сам создаёт пару ключей при первой сборке модуля: закрытый /var/lib/dkms/mok.key и открытый /var/lib/dkms/mok.pub. Если ключей нет, их можно создать заранее командой sudo dkms generate_mok. Регистрация выглядит так, как описано в Debian Wiki:
sudo apt install dkms mokutil linux-headers-$(uname -r)
sudo mokutil --import /var/lib/dkms/mok.pub
sudo mokutil --list-new
sudo rebootПосле подтверждения ключа пересоберите модули, собранные раньше, например sudo dkms autoinstall, или переустановите пакет драйвера. Про остальную настройку системы для дома есть отдельный материал о Debian 13.
Fedora: akmods и драйвер NVIDIA из RPM Fusion
В Fedora драйвер NVIDIA ставится из RPM Fusion как akmod-nvidia, модуль собирается сервисом akmods. Ключ лучше создать до установки драйвера, тогда первый же модуль будет подписан:
sudo dnf install kmodtool akmods mokutil openssl
sudo kmodgenca -a
sudo mokutil --import /etc/pki/akmods/certs/public_key.der
sudo rebootКлюч -a у kmodgenca принимает значения по умолчанию без вопросов. Если ключ уже существует, утилита не перезапишет его без -f, и это правильно: новый ключ пришлось бы снова регистрировать. После перезагрузки и подтверждения ставьте драйвер и дайте akmods собрать модуль:
sudo dnf install akmod-nvidia
sudo akmods --force
modinfo -F signer nvidiaСборка занимает несколько минут, перезагружаться раньше не стоит. Если драйвер был поставлен до ключа, модуль остался неподписанным: после регистрации ключа выполните sudo akmods --force или переустановите пакет.
Экран MOK Manager после перезагрузки
Сразу после перезагрузки появится синий экран shim. Он ждёт нажатия клавиши всего несколько секунд, поэтому не уходите от компьютера.
- Нажмите любую клавишу и выберите Enroll MOK.
- View key покажет данные ключа, можно пропустить. Далее Continue.
- На вопрос "Enroll the key(s)?" ответьте Yes.
- Введите пароль, заданный при импорте. Раскладка здесь английская, символы при вводе не отображаются.
- Выберите Reboot.
Пропустили экран и система загрузилась как обычно? Ничего страшного, импорт просто не выполнился. Повторите mokutil --import и перезагрузитесь ещё раз.
Задавайте простой пароль из латинских букв и цифр, без символов, которые на английской раскладке стоят в другом месте. На экране MOK Manager нет русской раскладки, и пароль с кириллицей или @, набранной "по-русски", не пройдёт. Пароль нужен один раз, сложность тут не важна.
Arch Linux: свои ключи Secure Boot через sbctl
Ядро Arch по умолчанию не требует подписи модулей, поэтому DKMS-драйверы грузятся без MOK. Здесь задача другая: включить Secure Boot вообще. Обычно используют sbctl, он создаёт собственные ключи платформы и подписывает ядро и загрузчик. Перед началом переведите прошивку в режим Setup Mode (в настройках UEFI это пункт вроде "Reset to Setup Mode" или "Clear Secure Boot keys").
sudo pacman -S sbctl
sbctl status
sudo sbctl create-keys
sudo sbctl enroll-keys -m
sudo sbctl verify
sudo sbctl sign -s /boot/vmlinuz-linux
sudo sbctl sign -s /boot/EFI/BOOT/BOOTX64.EFIКлюч -m оставляет в базе сертификаты Microsoft. Не пропускайте его: прошивки многих видеокарт и сетевых контроллеров подписаны Microsoft, и без этих сертификатов можно получить чёрный экран при старте. sbctl verify показывает неподписанные файлы, а флаг -s запоминает их, чтобы хук pacman переподписывал их после каждого обновления.
Проверка подписи и откат, если что-то пошло не так
Убедиться, что всё в порядке, можно так:
# ключи, которые уже в MOK
mokutil --list-enrolled | grep -i subject
# кем подписан модуль
modinfo -F signer nvidia
modinfo vboxdrv | grep -e signer -e sig_id
# загружен ли модуль
lsmod | grep -e nvidia -e vboxdrvЕсли нужно подписать сторонний модуль вручную, используйте sign-file из заголовков ядра. Модули в .ko.zst или .ko.xz сначала распакуйте, подписывается несжатый файл:
sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 /var/lib/dkms/mok.key /var/lib/dkms/mok.pub module.koПуть к sign-file зависит от дистрибутива: в Debian он лежит в /usr/lib/linux-kbuild-*/scripts/, в других системах в /lib/modules/$(uname -r)/build/scripts/.
Как откатить
- Убрать ключ из очереди до перезагрузки:
sudo mokutil --revoke-import. - Удалить уже добавленный ключ:
sudo mokutil --delete /var/lib/dkms/mok.pub, затем подтвердить удаление в MOK Manager. - Если после правок система не грузится, временно выключите Secure Boot в UEFI, загрузитесь и разберитесь. Для восстановления загрузчика поможет статья о восстановлении GRUB.
Владельцам компьютеров с Windows рядом: отключение Secure Boot или сброс ключей в прошивке может заставить BitLocker попросить ключ восстановления. Найдите его в учётной записи Microsoft заранее. Сама регистрация MOK базу прошивки не меняет. Тонкости двойной загрузки разобраны в статье о Linux рядом с Windows 11.
Частые вопросы
Что значит ошибка Key was rejected by service?
Ядро работает в режиме Secure Boot и не доверяет подписи модуля. Нужно добавить ключ, которым DKMS или akmods подписывает модули, в MOK и пересобрать модуль.
Безопасно ли добавлять свой ключ в MOK?
Да, если закрытый ключ хранится только у вас. Каждый ключ подтверждается вручную до загрузки системы, поэтому чужая программа не добавит его тайно. Для защиты закрытого ключа полезно шифрование диска.
Нужно ли повторять регистрацию после обновления ядра?
Нет. Ключ остаётся в MOK, а DKMS и akmods подписывают им модули для каждого нового ядра автоматически.
Я пропустил экран MOK Manager, что делать?
Повторите sudo mokutil --import с тем же файлом ключа и перезагрузитесь. На экране shim нажмите клавишу в течение нескольких секунд.
Как проверить, включён ли Secure Boot?
Командой mokutil --sb-state. Она выводит SecureBoot enabled или disabled.
Документация и источники
- SecureBoot, Debian Wiki, 2026
- Howto/Secure Boot, RPM Fusion, 2025
- UEFI Secure Boot, Ubuntu Security documentation, 2026
- Unified Extensible Firmware Interface/Secure Boot, ArchWiki, 2026
Читайте также
- Как установить драйвер NVIDIA в Ubuntu, Fedora и Arch Linux
- Как установить Linux рядом с Windows 11: разметка, BitLocker, GRUB
- Как узнать видеодрайвер и модель видеокарты в Linux
- Как восстановить загрузчик GRUB после Windows или неудачного обновления
- Шифрование диска LUKS в Linux без риска потерять данные
Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.