Tenho um grande problema amanhã no meu computador na minha mesa.
Nvidia: a versão mágica '3.13.0-143-genric SMP mod_unload modversions' deve ser '3.13.0.143-generic SMP mod_unload modversions retpoline'
Eu sei que há problemas semelhantes resolvidos aqui (comoNão é possível fazer login após a instalação do driver Nvidia v 14.04)
Mas não sei bem como alterar o comando para funcionar no meu sistema.
Eu tenho Ubuntu 14.04...
Tentei carregar um kernel mais antigo. Isso funciona bem. Eu verifico as ferramentas de configuração da GUI. Em atualizações e drivers, posso optar por atualizar meus drivers nvidia para o mais recente (384.111). Eu tentei e tudo ainda funciona.
Então voltei para o kernel mais recente.
Agora, verifico o modinfo e a nvidia não estava aqui. Eu tentei "sudo modprobe nvidia" (dkms vê que a nvidia 384.111 está instalada).
Resposta: modprobe: ERRO não foi possível inserir 'nvidia_384': erro de formato Exec
Eu verifiquei nvidiafb.ko em /lib/modules/.../drivers/video/nivdia e este arquivo está no modo -rw-r--r--... Não sei se deveria estar no mod exec? ?
Estou preso agora
Responder1
Isso ocorre porque os kernels mais recentes têm a mitigação retpoline Spectre. Você precisará reconstruir seu módulo do kernel nvidia.ko com uma versão corrigida do gcc de distribuição de estoque.
Aqui está o bug e mais detalhes:https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/1750937
Responder2
Eu resolvi o problema seguindoesta postagemda barra de lançamento de bugs. Resumindo:
Execute o seguinte comando e procure a vermagic
linha:
modinfo nvidia-384 -k 4.4.0-116-generic
Provavelmente dirá:
vermagic: 4.4.0-116-generic SMP mod_unload modversions
. Aqui a string retpoline está faltando. Você pode corrigir isso removendo e reconstruindo o módulo com DKMS
sudo dkms remove nvidia-384/384.111 -k 4.4.0-116-generic
sudo dkms install nvidia-384/384.111 -k 4.4.0-116-generic
Depois disso, o comando modinfo irá mostrar
vermagic: 4.4.0-116-generic SMP mod_unload modversions retpoline
Se você estiver usando uma versão personalizada do gccesta postagemtambém é relevante:
Se você estiver usando uma versão Ubuntu do gcc, então o gcc provavelmente foi atualizado quando você obteve o kernel mais recente. As alterações no gcc necessárias para suportar retpoline deveriam ter sido portadas para a maioria das versões ativas do gcc. No entanto, se você instalou uma versão personalizada do gcc, seu módulo do kernel provavelmente não será compilado corretamente.
Portanto, se o procedimento acima não funcionar, talvez seja necessário verificar qual versão do gcc você está usando.