Debian Buster, SecureBoot и Nvidia RTX 2070
Условия задачи
Дано:
- Ошибка Xorg в логах:
May 7 16:21:42 darktower kernel: [ 5.572986] Lockdown: ioperm is restricted; see https://wiki.debian.org/SecureBoot
- Debian 10 Booster с подключенными репозиториями
non-free
иcontrib
. - Права
root
- Видеокарта NVidia RTX 2070
- Компьютер с включенной в настройках материнской платы опцией
SecureBoot (EFI)
Проблема в том, что в ряде случаев видеокарта может не запускаться, потому что драйверы не подписаны. Для подписания драйверов следует выполнить действия, описанные в Wiki Debian / SecureBoot.
В моём случае пришлось выполнить следующую последовательность действий:
Установка драйвера Nvidia, исходных кодов ядра и mokutil
apt-get update
apt-get install nvidia-driver nvidia-xconfig linux-headers-amd64 mokutil
Пакет | Предназначение |
---|---|
nvidia-driver | Проприетарный драйвер Nvidia с поддержкой нужных моделей видеокарт. |
nvidia-xconfig | Утилита конфигурирования параметров Xorg для поддержки им нужных драйверов. |
linux-headers-amd64 | Исходные коды установленного ядра. |
mokutil | Утилита для работы с ключами EFI |
Генерация ключа EFI, его установка и подписывание драйверов.
Теперь действуем ровно так, как написано в руководстве Debian'а:
# Генерация ключей и импорт в EFI
cd /root
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=NVidia RTX 2070 key/"
mokutil --import MOK.der
# Подписывание драйверов Nvidia
cd /lib/modules/4.19.0-8-amd64/updates/dkms/
/usr/lib/linux-kbuild-4.19/scripts/sign-file sha256 /root/MOK.priv /root/MOK.der nvidia-current-drm.ko
/usr/lib/linux-kbuild-4.19/scripts/sign-file sha256 /root/MOK.priv /root/MOK.der nvidia-current.ko
/usr/lib/linux-kbuild-4.19/scripts/sign-file sha256 /root/MOK.priv /root/MOK.der nvidia-current-modeset.ko
/usr/lib/linux-kbuild-4.19/scripts/sign-file sha256 /root/MOK.priv /root/MOK.der nvidia-current-uvm.ko
# Перенастройка Xorg под nvidia
cd /etc/X11
rm xorg.conf
nvidia-xconfig
Следует обратить внимание на путь, в котором расположены исходные модули ядра nvidia и скрипт для подписывания драйверов - они могут быть другими.
Перезагрузка
При перезагруке EFI выдаст сообщение, что появился запрос на установку собственного ключа цифровой подписи. Принимаем этот ключ и устанавливаем. После этого компьютер должен перезагрузиться и запустить установленный Linux, используя подписанные данным ключом драйверы. После этого запустится Xorg и всё будет нормально работать.
Автоматизация подписывания ключей.
Можно автоматизировать процесс по максимуму, если ручной выбор исходников ядра переключить на работу с результатами команды uname -r
и поместить всё в файл скрипта:
#!/bin/sh
SIGN=/usr/lib/linux-kbuild-4.19/scripts/sign-file
MOK=/root/MOK.priv
DER=/root/MOK.der
cd /lib/modules/$(uname -r)/updates/dkms/
$SIGN sha256 $MOK $DER nvidia-current-drm.ko
$SIGN sha256 $MOK $DER nvidia-current.ko
$SIGN sha256 $MOK $DER nvidia-current-modeset.ko
$SIGN sha256 $MOK $DER nvidia-current-uvm.ko
Его нужно запускать всякий раз при обновлении драйвера Nvidia или ядра.
Комментариев нет :
Отправить комментарий