Nvidia linux secure boot

How to install nvidia driver with secure boot enabled?

I found this post: nvidia-smi command not found Ubuntu 16.04 | Ask Ubuntu Which says that with UEFI secure boot enabled nvidia-smi could not be found in Ubuntu:

$ nvidia-smi nvidia-smi: command not found 

Any idea on how to enable secure boot with NVIDIA driver functioning? I found this article on solving the secure boot issue with virtual box, just still have little idea on how MOK manager works: VirtualBox + Secure Boot + Ubuntu = fail | Øyvind Stegard blog

Why disabling “Secure Boot” is enforced policy when installing 3rd party modules askubuntu.com/questions/755238/… Do you need Secure Boot? Torvalds clarifies Linux’s Windows 8 Secure Boot position zdnet.com/… the whole UEFI thing is more about control than security

Yes, kind of need secure boot. Do you think I can bypass this problem with MOK manager? I resolved secure boot issue with it on virtualbox problem

If anyone comes back to this after windows 11 upgrade, follow the next steps 1. Remove any currently installed nvidia drivers 2. Restart 3. sudo apt install nvidia-driver-XXX ( where XXX is the version. Currently it’s 470 = nvidia-driver-470) 4. Set a password for the newly generated keys 5. Restart 6. Enable MOK 7. Type the password you previously set 8. Restart 9. Done

4 Answers 4

  1. Download the latest driver from the NVIDIA website: https://www.geforce.com/drivers.
  2. Create a new pair of private key ( Nvidia.key ) and public key ( Nvidia.der ) by running the command:
openssl req -new -x509 -newkey rsa:2048 -keyout PATH_TO_PRIVATE_KEY -outform DER -out PATH_TO_PUBLIC_KEY -nodes -days 36500 -subj "/CN=Graphics Drivers" 
openssl req -new -x509 -newkey rsa:2048 -keyout /home/itpropmn07/Nvidia.key -outform DER -out /home/itpropmn07/Nvidia.der -nodes -days 36500 -subj "/CN=Graphics Drivers" 
sudo mokutil --import PATH_TO_PUBLIC_KEY 
sudo mokutil --import /home/itpropmn07/Nvidia.der 
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf; sudo update-initramfs -u 
sudo sh ./XXXXXX.run -s --module-signing-secret-key=PATH_TO_PRIVATE_KEY --module-signing-public-key=PATH_TO_PUBLIC_KEY 

where: XXXXXX : name of file installer (downloaded from NVIDIA). PATH_TO_PRIVATE_KEY : full path to private key. If you place it in your home folder, use /home/USER_NAME/ instead of ~ . PATH_TO_PUBLIC_KEY : full path to public key. If you place it in your home folder, use /home/USER_NAME/ instead of ~ . Example:

sudo sh ./NVIDIA-Linux-x86_64-390.67.run -s --module-signing-secret-key=/home/itpropmn07/Nvidia.key --module-signing-public-key=/home/itpropmn07/Nvidia.der 

Is there a way to do the same thing when installing driver packages through apt? I may be wrong but I prefer enabling the relevant repos/ppas and then apt upgrade’ing.

«This command requires you create password for enrolling. Afterwards, reboot your computer, in the next boot, the system will ask you enroll, you enter your password (which you created in this step) to enroll it.» My computer does not ask for any enrollment after I reboot. What is wrong? I followed every step given by @itpropmn07.

The recommendation from itpropmn07 works for me. There is one change I had to make which is the last step.

Instead of entering this command:

sudo sh ./XXXXXX.run -s --module-signing-secret-key=PATH_TO_PRIVATE_KEY --module-signing-public-key=PATH_TO_PUBLIC_KEY 

I entered the command without -s :

sudo sh ./XXXXXX.run --module-signing-secret-key=PATH_TO_PRIVATE_KEY --module-signing-public-key=PATH_TO_PUBLIC_KEY 

With this command I could interactively install the driver.

2022 and I am getting —module-signing-secret-key=~/.mok/Nvidia_key . Any tips on this? I did remove the -s .

I was also able to successfully install the drivers using the method by @itpropmn07 with one slight change.

The mokutil —import did not work on my ASUS motherboard so I had to import the key from inside the UEFI interface.

This can be done by loading the .der file onto a USB drive and navigating to the Secure Boot > Key Management section and selecting the Append Default db option.

A popup will then ask if you want to append the system default db. Make sure to select No, which will then let you browse to your file on the USB drive. Choose key certificate blob as the selected file type. Finally, save and exit.

You can verify that the import was successful by running: mokutil —db

Note: it would be wise to backup your secure boot keys and have them stored somewhere safe in case something goes wrong. Use the ‘Save Secure Boot Keys’ option for that. When restoring the keys, use UEFI secure variable as the file type.

Источник

Настраиваем поддержку UEFI Secure Boot для драйверов NVIDIA

В комментариях нас часто спрашивали о том, как правильно настроить работу проприетарных драйверов NVIDIA с UEFI Secure Boot. С выходом Fedora 36 это стало возможным.

Введение

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

До выхода Fedora 36 требовались сложные скрипты, которые бы запускались в виде пост-установочных хуков ядра и автоматизировали бы процесс подписи модулей, однако их работа в большинстве случаев была очень ненадёжной и приводила к различным ошибкам.

Начиная с версии 0.5.7, утилиты из состава akmods получили поддержку автоматической подписи всех собираемых ими пакетов, что значительно упростило процесс внедрения поддержки Secure Boot в актуальных версиях дистрибутива.

Создание CA и ключей

Сначала нам необходимо любым удобным способом создать свой собственный центр сертификации с возможностью подписи кода.

Воспользуемся утилитой kmodgenca для генерирования простого одноуровневого CA:

Ответим на стандартные вопросы о создаваемом удостоверяющем центре и сертификате, либо добавим параметр -a, чтобы пропустить этот шаг и использовать настройки по умолчанию.

В результате будет создана новая ключевая пара. Открытый ключ будет сохранён в каталоге /etc/pki/akmods/certs, а закрытый — в /etc/pki/akmods/private соответственно.

Развёртывание CA

Добавим публичный ключ созданного удостоверяющего центра в список разрешённых для использования в UEFI Secure Boot материнской платы устройства.

Это один из самых сложных шагов, т.к. далеко не все производители позволяют загружать новые сертификаты из работающей операционной системы.

Автоматический способ

Произведём автоматическое развёртывание при помощи mokutil:

sudo mokutil --import /etc/pki/akmods/certs/public_key.der

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

Сразу после перезапуска увидим диалог менеджера MOK, который сообщит об обнаружении нового сертификата и предложит произвести настройку.

Выполним следующие действия:

  1. выберем пункт Enroll MOK;
  2. нажмём Continue для продолжения;
  3. подтвердим импорт при помощи Yes;
  4. введём пароль, заданный ранее;
  5. перезагрузим устройство для вступления изменений в силу.

Внимание! Ряд производителей допускают программную загрузку сертификатов лишь после активации соответствующей опции в настройках UEFI Secure Boot, поэтому выберем её, произведём указанные выше действия, а затем снова отключим для максимальной безопасности.

Ручной способ

Если добиться успеха при помощи mokutil не получилось, применим альтернативный способ:

  1. подключим внешний USB-накопитель с файловой системой FAT32 (это важно, т.к. прошивка UEFI без особых драйверов не поддерживает иные ФС);
  2. скопируем файл открытого ключа /etc/pki/akmods/certs/public_key.der в корневой каталог флешки;
  3. войдём в настройки UEFI Secure Boot;
  4. найдём пункт импорта сертификатов;
  5. выберем файл public_key.der на внешнем устройстве;
  6. подтвердим действие при помощи Continue и Yes;
  7. перезагрузим устройство для вступления изменений в силу.

Завершение

Убедимся, что наш CA был успешно импортирован и авторизован:

sudo mokutil --list-enrolled

С этого момента все собираемые kmod-пакеты будут автоматически подписаны.

Литература

При написании данной статьи использовалась литература из следующих источников:

Источник

bitsurgeon / nvidia.md

Select existing Window 10 boot partition as Ubuntu EFI target. GRUB will look after the rest.

Update to latest Nvidia Driver

## check display card and driver status sudo lshw -c display # or sudo lshw -c video ## check loaded display card and driver lsmod | grep nvidia # or nvidia-smi # or lsmod | grep nouveau ## remove old Nvidia driver sudo apt purge nvidia-* # or sudo apt remove nvidia-* ## add driver repository sudo add-apt-repository ppa:graphics-drivers/ppa ## identify suitable driver version sudo ubuntu-drivers devices ## if ubuntu-drivers command not found sudo apt install ubuntu-drivers-common ## install drivers from ppa database sudo apt install nvidia-driver-430 # sudo apt install nvidia-XYXYX nvidia-settings # v430 was the recommended and the latest by writing this gist ## this installs drivers from Nvidia wget http://us.download.nvidia.com/tesla/418.67/NVIDIA-Linux-x86_64-418.67.run # or wget http://us.download.nvidia.com/XFree86/Linux-x86_64/418.74/NVIDIA-Linux-x86_64-418.74.run # supporting packages may need to be installed before running following sudo bash ./NVIDIA-Linux-x86_64-418.67.run --dkms ## reboot sudo reboot ## check driver details and settings nvidia-smi or nvidia-settings ## select driver prime-select query sudo prime-select nvidia or sudo prime-select intel ## display usage dpkg -L nvidia-driver-430

External Display via HDMI

If it’s not working by the above steps, try the followings.

## try 1 xrandr --setprovideroutputsource modesetting NVIDIA-0 && xrandr --auto ## try 2 grep modeset /etc/modprobe.d/* # and grep modeset /lib/modprobe.d/* # to find the file containing # options nvidia-drm modeset=1 # change it to # options nvidia-drm modeset=0 # run sudo update-initramfs -u reboot # check if the external monitor works

Note: try 2 works for ThinkPad X1 Extreme.

Timezone Difference when Dual Boot

# on Linux timedatectl set-local-rtc 1 --adjust-system-clock

The above steps also suitable for enabling CUDA support on AWS GPU instances, such as g3 and p3 EC2 instances.

For RHEL user, please check this link.

Источник

Читайте также:  Linux no console login
Оцените статью
Adblock
detector