0011 — Драйверы NVIDIA, Debian и EFI
Если ваш Debian Linux установлен и работает на компьютере с включенным режимом EFI, нельзя просто взять и установить проприетарные драйверы NVIDIA, в логах будет ошибка Xorg:
May 7 16:21:42 darktower kernel: [ 5.572986] Lockdown: ioperm is restricted; see https://wiki.debian.org/SecureBoot
Официальная инструкция по решению этой проблемы находится в Debian Wiki / SecureBoot.
Здесь я привожу своё, неофициальное. TL;DR: в режиме EFI ядро Linux позволяет загружать и исполнять только модули, имеющие цифровую подпись. Драйверы NVIDIA для Linux поставляются без неё.
Установка драйверов, заголовочных файлов ядра и mokutil
ВСЕ ОПЕРАЦИИ, ЕСЛИ НЕ УКАЗАНО ОСОБО, ВЫПОЛНЯЮТСЯ ОТ ИМЕНИ ПОЛЬЗОВАТЕЛЯ ROOT
.
Включите несвободные и проприетарные пакеты в список доступных. Для этого в файле
/etc/apt/sources.list
добавьте в конец строк для репозиториев Debian каталогиnon-free
иcontrib
:deb http://ftp.ru.debian.org/debian/ bullseye main non-free contrib deb-src http://ftp.ru.debian.org/debian/ bullseye main non-free contrib deb http://security.debian.org/debian-security bullseye-security main non-free contrib deb-src http://security.debian.org/debian-security bullseye-security main non-free contrib # bullseye-updates, to get updates before a point release is made; # see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports deb http://ftp.ru.debian.org/debian/ bullseye-updates main non-free contrib deb-src http://ftp.ru.debian.org/debian/ bullseye-updates main non-free contrib # This system was installed using small removable media # (e.g. netinst, live or single CD). The matching "deb cdrom" # entries were disabled at the end of the installation process. # For information about how to configure apt package sources, # see the sources.list(5) manual.
Обновите список доступных пакетов и установите нужные:
apt-get update && \ apt-get install \ linux-headers-amd64 \ mokutil \ nvidia-driver \ nvidia-xconfig \ --yes
Описание устанавливаемых пакетов:
Пакет Предназначение linux-headers-amd64
Заголовочные файлы ядра, необходимые для сборки модулей ядра, ответственных за драйверы NVIDIA. mokutil
Утилита для импорта ключа цифровой подписи в EFI. Без этого ключа запустить драйверы не получится. nvidia-driver
Драйверы NVIDIA. nvidia-xconfig
Утилита для настройки Xorg под используемый драйвер.
Генерация ключа EFI, его установка и подписывание драйверов NVIDIA
Перейдите в домашний каталог пользователя
root
и сгенерируйте пару ключей (MOK.priv
иMOK.der
):cd /root && \ openssl req \ -new \ -x509 \ -newkey rsa:2048 \ -keyout MOK.priv \ -outform DER \ -out MOK.der \ -nodes \ -days 36500 \ -subj "/CN=NVIDIA EFI KEY/" && \ mokutil --import MOK.der
Выясните актуальную версию ядра:
uname --kernel-release
Перейдите в каталог с драйверами ядра и подпишите их:
cd /lib/modules/<версия ядра>-<номер обновления>-amd64/updates/dkms/ || exit && \ /usr/lib/linux-kbuild-<версия ядра>/scripts/sign-file sha256 /root/MOK.priv /root/MOK.der nvidia-current-drm.ko && \ /usr/lib/linux-kbuild-<версия ядра>/scripts/sign-file sha256 /root/MOK.priv /root/MOK.der nvidia-current.ko && \ /usr/lib/linux-kbuild-<версия ядра>/scripts/sign-file sha256 /root/MOK.priv /root/MOK.der nvidia-current-modeset.ko && \ /usr/lib/linux-kbuild-<версия ядра>/scripts/sign-file sha256 /root/MOK.priv /root/MOK.der nvidia-current-uvm.ko
При обновлении драйверов NVIDIA эту процедуру нужно будет повторить.
Удалите существующий файл настройки Xorg и сгенерируйте новый:
rm /etc/X11/xorg.conf && \ nvidia-xconfig
Перезагрузите компьютер.
При загрузке будет выведено сообщение, что производится попытка импорта ключа в EFI. Подтвердите импорт.
Ошибки ACPI в /var/log/syslog
Чтобы в логах не было ошибок, связанных с ACPI, необходимо:
Добавить в
/etc/default/grub
настройки драйверов NVIDIA в параметры ядра:GRUB_CMDLINE_LINUX_DEFAULT="quiet nvidia nvidia_modeset nvidia_uvm nvidia_drm"
Обновить параметры ядра:
sudo update-initramfs -u -k all
Установить пакет
acpid
:sudo apt-get install acpid --yes
Перезагрузить компьютер.