Secure Boot + drivers NVIDIA no Fedora Silverblue
Após a instalação do Fedora Silverblue, antes da primeira inicialização, desative o Secure Boot temporariamente.
Instale os repositórios RPM Fusion:
sudo rpm-ostree install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm➜ Reinicie o sistema
Substitua os pacotes instalados por pacotes independentes da versão:
sudo rpm-ostree update --uninstall $(rpm -q rpmfusion-free-release) --uninstall $(rpm -q rpmfusion-nonfree-release) --install rpmfusion-free-release --install rpmfusion-nonfree-release➜ Reinicie o sistema
Remova o Firefox pré-instalado (ele não vem com codecs) e o gnome-tour:
sudo rpm-ostree override remove gnome-tour firefox firefox-langpacks➜ Reinicie o sistema
Reinstale o Firefox ou o Google Chrome pelo Flathub (ambos vêm com codecs):
flatpak install flathub org.mozilla.firefoxou
flatpak install flathub com.google.ChromeNa Loja de Aplicativos do GNOME, procure por "codec" e instale todos. Instale a plataforma Freedesktop de ambas as fontes disponíveis. Instale também todas as extensões oferecidas lá, de ambas as fontes.
➜ Reinicie o sistema
2. Configuração da NVIDIA
Certifique-se de que seu sistema reconhece sua NVIDIA:
Execute:
lspci -nn | grep -E "VGA|3D" Isso deve gerar algo como:
08:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA106 [GeForce RTX 3060 Lite Hash Rate] [10de:2504] (rev a1)Instale as dependências do sistema:
sudo rpm-ostree install akmods dkms kernel-devel kernel-headers kmodtool sqlite| Pacote | Função Principal |
|---|---|
akmods |
Framework para reconstruir módulos automaticamente |
dkms |
Suporte genérico para recompilar módulos de kernel |
kernel-devel |
Código e cabeçalhos necessários para compilar módulos |
kernel-headers |
Cabeçalhos do kernel (interface de compilação) |
kmodtool |
Criação e empacotamento de módulos do kernel |
sqlite |
Armazena informações sobre módulos compilados |
➜ Reinicie o sistema
Crie um par de chaves pública/privada para assinar o módulo NVIDIA:
sudo kmodgenca -aInscreva a chave recém-criada para que o firmware UEFI confie nela:
sudo mokutil --import /etc/pki/akmods/certs/public_key.derUse uma senha simples, como "abcd", para isso.
➜ Reinicie o sistema
Ao iniciar, aparecerá a tela do MOK (Machine Owner Key) para inscrever a chave. Siga os menus, escolha "Enroll MOK" e confirme o registro. Digite a senha definida anteriormente.
➜ Reinicie o sistema
Verifique novamente se a chave foi inscrita:
mokutil --list-enrolledopenssl x509 -in /etc/pki/akmods/certs/public_key.der -inform DER -noout -fingerprintCompare a impressão digital das chaves nas saídas acima; se corresponderem, tudo certo.
Agora você tem uma chave de proprietário da máquina inscrita para assinar módulos do kernel. O problema é que essa chave não pode ser acessada porque a distro é imutável.
Por precaução, guarde este clone do repositório em algum lugar importante. Você terá que reinstalar essas chaves manualmente quando o Fedora for atualizado. Isso não quebra o sistema; apenas impede que os apps que a usam como dependência sejam atualizados automaticamente até você reinstalá-las.
Clone o repositório:
git clone https://github.com/CheariX/silverblue-akmods-keysNavegue até o diretório clonado:
cd silverblue-akmods-keysExecute o script de configuração:
sudo bash setup.shIsso criará o pacote RPM necessário para que o assinador de módulos acesse a chave.
rpm-ostree install akmods-keys-0.0.2-8.fc$(rpm -E %fedora).noarch.rpm➜ Reinicie o sistema
Agora verifique com:
sudo rpm-ostree statusEm LocalPackages, confirme se o akmods-keys está instalado:
LocalPackages: akmods-keys-0.0.2-8.fc43.noarchAgora o assinador realmente poderá acessá-la.
Em seguida, ative o initramfs:
sudo rpm-ostree initramfs --enable➜ Reinicie o sistema
Agora vamos instalar os drivers NVIDIA, mesmo que seu sistema ainda não os use:
sudo rpm-ostree install akmod-nvidia xorg-x11-drv-nvidia xorg-x11-drv-nvidia-cuda xorg-x11-drv-nvidia-libs| Pacote | Função Principal |
|---|---|
akmod-nvidia |
Compila o módulo NVIDIA automaticamente para o kernel atual |
xorg-x11-drv-nvidia |
Driver proprietário NVIDIA (núcleo do driver) |
xorg-x11-drv-nvidia-cuda |
Suporte CUDA (computação via GPU) |
xorg-x11-drv-nvidia-libs |
Bibliotecas gráficas e de tempo de execução |
Isso levará mais tempo, pois ele compilará e assinará o módulo.
➜ Reinicie o sistema
Os drivers agora devem estar instalados, mas ainda não estão em uso.
Verifique se o driver foi compilado:
modinfo -F version nvidia Se isso retornar um número de versão, o módulo foi compilado.
modinfo nvidia | grep signer Se isso retornar sua chave MOK, o módulo foi assinado corretamente.
sudo dmesg | grep nvidia Se isso retornar mensagens como:
NVRM: obtained ownership of the NVIDIA device(s).Estamos no caminho certo!
lspci -nnk | grep -iA3 'vga\|3d\|display'Aqui deve dizer:
Kernel driver in use: nouveau
Kernel modules: nouveau, nvidia_drm, nvidiaIsso significa que os módulos do kernel da NVIDIA foram carregados, mas o Nouveau (ou nova_core) vinculou-se à GPU antes mesmo de a NVIDIA ter a chance de fazê-lo.
Para poder realmente usar os drivers NVIDIA, você precisa instruir o kernel a suprimir os drivers de fallback Nouveau e nova_core. Para isso, crie um arquivo de blacklist que será incluído no initramfs gerado.
sudo nano /etc/modprobe.d/blacklist-nouveau-nova.confe adicione o seguinte conteúdo:
blacklist nouveau
blacklist nova_coreSalve e saia.
Agora adicione argumentos do kernel à blacklist:
sudo rpm-ostree kargs --append=rd.driver.blacklist=nova_core --append=modprobe.blacklist=nova_core --append=rd.driver.blacklist=nouveau --append=modprobe.blacklist=nouveauEm seguida, reinicie.
Agora você deve ter os drivers NVIDIA ativados. Confirme com:
lspci -nnk | grep -iA3 'vga\|3d\|display'Aqui deve dizer: Kernel driver in use: nvidia
nvidia-smiSe isso gerar as estatísticas da GPU, seu Fedora está pronto!
Quando o sistema for atualizado (por exemplo, do Fedora 42 para o Fedora 43), você precisará reinstalar as chaves para que o sistema possa atualizar os pacotes que as usam como dependência.
sudo rpm-ostree uninstall akmods-keysVolte para o diretório clonado:
rpm-ostree install akmods-keys-0.0.2-8.fc$(rpm -E %fedora).noarch.rpm➜ Reinicie o sistema
Pronto, as atualizações automáticas voltarão a funcionar.
Meu post é um backup do guia original feito no Reddit, disponível aqui:
Fedora Silverblue as DualBoot (with Windows) with Secure Boot + NVIDIA drivers install guide