Veja como eu obtive o software kmod-nvidia da rpmfusion nonfree trabalhando com o Fedora 26 em uma máquina configurada para "boot seguro" / UEFI. Eu estava recebendo o erro "chave necessária não disponível" ao executar o modprobe contra os módulos do kernel nvidia.
É possível, e não muito difícil, manter a inicialização segura UEFI ativada e executar o driver nvidia proprietário.
- Depois de instalar os repositórios livres e não-livres do rpmfusion, instale o kmod-nvidia:
dnf install kmod-nvidia
-
Crie um certificado auto-assinado e uma chave, fazendo a configuração do openssl e executando o seguinte:
cd /root #or somewhere reasonably safe cat > mokutil-openssl.conf << XYZZY [ req ] default_bits = 4096 distinguished_name = req_distinguished_name string_mask = utf8only x509_extensions = exts prompt = no [ req_distinguished_name ] O = username CN = username emailAddress = [email protected] [ exts ] basicConstraints=critical,CA:FALSE keyUsage=digitalSignature subjectKeyIdentifier=hash authorityKeyIdentifier=keyid XYZZY # create the certificate & key openssl req -x509 -new -nodes -utf8 -sha256 -days 7300 -config ./mokutil-openssl.conf -outform DER -out mokutil.der -keyout mokutil.key -batch # to verify the certificate: openssl x509 -inform DER -in ./mokutil.der -noout -text |less
-
Em seguida, assine os novos módulos do kernel da nvidia com o utilitário fornecido:
cd /lib/modules/$(uname -r)/extra/nvidia /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /root/mokutil.key /root/mokutil.der nvidia.ko /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /root/mokutil.key /root/mokutil.der nvidia-drm.ko /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /root/mokutil.key /root/mokutil.der nvidia-modeset.ko /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /root/mokutil.key /root/mokutil.der nvidia-uvm.ko
-
O certificado precisa ser adicionado ao BIOS para ser confiável:
# first, we stage the new certificate to be added to the BIOS on # the next reboot. You will be prompted to enter a password when # running the utility; the BIOS will ask for the same password on # reboot. mokutil --import ./mokutil.der # This command shows whether or not mokutil was able to stage the # new certificate for import into the BIOS. If the process is # unsuccessful, you may have to enter the BIOS and import the key # manually from its interface, perhaps from a USB stick. If this # command returns your certificate, you should reboot. The BIOS # will prompt you to take action and enter in the password you # input in the previous step. mokutil -N # This command shows which certificates are trusted by the BIOS. # There will be one installed by the manufacturer and if mokutil --list-enrolled
-
Se tudo correu bem, sua máquina deveria ter carregado os novos módulos. Você pode verificar com
lsmod |grep nvidia
-
Você terá que assinar os módulos novamente quando um novo kernel for instalado.
Encontrei a maioria dessas informações aqui , mas o utilitário de assinatura não precisa ser chamado com perl. Também assinei todos os quatro módulos gerados pelo processo de compilação kmod-nvidia.