Login interrompido após 15.10 -> atualização 16.04 LTS, relacionado ao driver NVIDIA


10

Acabei de atualizar meu sistema de 15.10 a 16.04 via sudo do-release-upgrade. Durante esse processo, ele exibiu uma tela com a seguinte mensagem:

Seu sistema possui o UEFI Secure Boot ativado. O UEFI Secure Boot não é compatível com o uso de drivers de terceiros.

(...) O Ubuntu ainda poderá inicializar no seu sistema, mas esses drivers de terceiros não estarão disponíveis para o seu hardware.

Desativar UEFI Secure Boot? (sim | não)

Como os únicos drivers de terceiros que estou usando são os drivers gráficos da NVIDIA, e como eles estão funcionando bem com o Ubuntu 15.10 e o Secure Boot ativado, escolhi a opção "não" aqui. Não vejo por que devo desabilitar isso sem um bom motivo e presumi que posso reinstalar o driver de terceiros por meio da GUI de configurações do sistema após a atualização.

Infelizmente, não. Após a reinicialização, minha tela de login apareceu em uma resolução muito baixa. Ao tentar fazer login, ele imediatamente me lança de volta à tela de login.

Eu tentei o seguinte para corrigir a situação:

sudo apt-get purge nvidia*
sudo reboot

Isso leva a uma tela roxa e nenhuma reação ao Ctrl-Alt-F1. Ao fazer o login via SSH, fiz:

sudo apt-get install nvidia-current
sudo reboot

o que novamente me traz o cenário anterior, com uma tela de login de baixa resolução e sem maneira de fazer logon.

Esta é uma experiência de atualização muito ruim. Alguém mais teve isso, e o que posso fazer para corrigir isso? (enquanto mantém o UEFI Secure Boot ativado) Obrigado.


5
Dê uma olhada aqui
Videonauth

Uau, isso é ruim. Até agora, tive que: instalar a nvidia-364 via PPA e desativar o Secure Boot. Agora as coisas parecem funcionar, mas nem o auto-atualização de driver (se não me engano), nem posso reativar seguro Bota ...
kmhofmann

Sim, infelizmente, não há outra escolha no momento. Você não se importa que eu marque esta pergunta como duplicada.
Videonauth

Não me importo.
kmhofmann

Não é uma duplicata - pelo menos não totalmente. Essa pergunta adiciona a nova versão do Secure Boot, que não faz parte da pergunta "duplicada" (embora seja mencionada em alguns comentários e respostas), e isso merece mais atenção.
Rod Smith

Respostas:


8

Por meio do Ubuntu 15.10, o manuseio do Secure Boot pelo Ubuntu foi interrompido no GRUB - ou seja, a versão do Shim do Ubuntu lançaria a versão do GRUB do Ubuntu, que lançaria qualquer kernel do Linux, independentemente de ter sido assinado ou não. Essa era uma barra de suporte muito baixa para o Secure Boot. Para comparação, o GRUB do Fedora lançaria apenas kernels Linux assinados, e quando detectassem que o Secure Boot estava ativo, carregaria apenas binários assinados do kernel. A intenção do suporte de inicialização segura mais robusto do Fedora era proteger o sistema contra módulos de kernel "desonestos", que poderiam, em teoria, dominar o computador em um nível muito baixo. O Ubuntu 15.10 e versões anteriores não tinham essa proteção.

A partir do 16.04, o Ubuntu segue um módulo mais seguro de Inicialização Segura, mais parecido com o que o Fedora faz há algum tempo. Isso tem benefícios de segurança, mas, como você viu, também tem problemas. Se um driver de terceiros não for assinado com uma chave criptográfica que a versão Ubuntu do kernel Linux reconheça como válida, ele não será carregado. Isso afeta principalmente os drivers de vídeo Nvidia e AMD / ATI de código fechado, mas há outros drivers que também podem ser afetados.

Existem (ou podem existir) várias soluções alternativas para esse problema:

  • Desativar inicialização segura - Esta é a solução mais fácil. Você pode fazer isso alterando as configurações do firmware ou (eu acho) ajustando as configurações do Shim. (Não sei como fazê-lo, alterando as configurações do Shim, mas tenho certeza de que isso é possível.)
  • Não use módulos de kernel de terceiros - Se você se restringir aos drivers de código aberto incluídos no kernel Linux padrão do Ubuntu, deverá ficar bem, pois a Canonical assina todos esses drivers (AFAIK). Observe que deve haver um suporte muito bom à Nvidia usando esses drivers; seu sistema provavelmente voltou a drivers abaixo do ideal, porque achou que os drivers de código fechado estavam disponíveis. Não sei de imediato como alternar de um para o outro, mas essa pergunta é sobre como fazer isso com os drivers AMD / ATI, portanto, pode ser um ponto de partida útil.
  • Assine os módulos relevantes - Em teoria, assinar os módulos comerciais você mesmo deve fazê-los funcionar. Infelizmente, não tenho um ponteiro para obter instruções sobre como fazer isso e, na verdade, nem tenho certeza de que seja possível fazer isso com um kernel do Ubuntu; esse kernel pode honrar apenas os módulos assinados com a chave da Canonical, que é claro que você não possui.
  • Compile seu próprio kernel - Se você compilar seu próprio kernel, poderá definir suas opções como achar melhor, incluindo as restrições ao carregamento de módulos não assinados. Você precisaria assinar o kernel com sua própria chave EFI e adicionar a versão pública dessa chave à sua lista MOK. Aqui está uma pergunta e respostas sobre como compilar seu próprio kernel.
  • Mudar para um GRUB mais antigo - Como um GRUB mais antigo iniciará kernels não assinados, você poderá instalar um GRUB (a partir do Ubuntu 15.10 ou anterior) e fazer com que ele inicie um kernel não assinado. Observe que manter esse GRUB mais antigo provavelmente será uma dor.
  • Alterne para um carregador de inicialização que não atenda ao Secure Boot - Se você assinar um carregador de inicialização como SYSLINUX ou ELILO com sua própria chave e adicionar a versão pública dessa chave à sua lista MOK, esse carregador de inicialização ignorará o Secure Secure Boot Boot. Configurações de inicialização, assim como uma versão mais antiga do GRUB. Você pode então iniciar um kernel não assinado.

Observe que as duas únicas opções que tenho 100% de certeza que funcionariam são desabilitar a Inicialização segura ou evitar módulos de kernel de terceiros. Como evito módulos de kernel de terceiros como a praga, não tenho experiência pessoal em usá-los em um ambiente de inicialização segura. Além de desabilitar o Secure Boot, criar seu próprio kernel pode ser o próximo mais provável de funcionar, seguido pelo uso de um GRUB mais antigo ou por um carregador de inicialização que não atenda ao Secure Boot. Construir o seu próprio kernel já foi comum, mas poucas pessoas fazem isso mais, e com os kernels modernos, o investimento em tempo para aprender a configurar um kernel, para não mencionar de fato, pode ser significativo. Usar um GRUB mais antigo ou outro carregador de inicialização pode ser mais fácil, mas você precisará saber o suficiente para poder configurá-lo.


2
* Use o Ubuntu 14.04 até que esse problema seja solucionado. Existem muitas razões pelas quais o Linux na área de trabalho ainda não está à vista. Esse tipo de coisa realmente torna mais doloroso para as pessoas adotar o Linux.
Underverse

Assine os módulos relevantes: assine manualmente /lib/modules/x.y.z/updates/dkms/nvidia*.kousandokmodsign (também após cada atualização do driver) ou automaticamente comapt install shim-signed .
Joel Purra
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.