Debian, Dojo, Django, Python

Делюсь опытом в описанных технологиях. Блог в первую очередь выполняет роль памяток для меня самого.

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 и поместить всё в файл скрипта:

/root/sign_nvidia_drivers.sh
#!/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 или ядра.

Комментариев нет :

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