A partir do 16.04, o Ubuntu segue um módulo Secure Boot mais estrito, mais parecido com o que o Fedora vem fazendo há um bom 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 do Ubuntu do kernel Linux reconhece como válida, ela não será carregada. Isso afeta principalmente os drivers de vídeo Nvidia e AMD / ATI de código fechado, mas há outros drivers que podem ser afetados também.
Existem (ou podem haver) várias soluções alternativas para esse problema:
- Desativar inicialização segura - essa é a solução mais fácil. Você pode fazer isso usando as configurações do firmware ou (eu acho) ajustando as configurações do Shim. (Não sei como fazer isso ajustando as configurações de Shim, mas tenho certeza de que isso é possível.)
- Não use módulos de kernel de terceiros - Se você se restringir a drivers de código aberto incluídos no kernel Linux padrão do Ubuntu, você deve estar bem, já que a Canonical assina todos esses drivers (AFAIK). Note que deve haver muito bom suporte da Nvidia usando esses drivers; seu sistema provavelmente caiu para drivers abaixo do ideal porque achava que os drivers de código fechado estavam disponíveis. Eu não sei de improviso como mudar de um para o outro, mas esta questão é sobre fazê-lo com drivers AMD / ATI, então pode ser um ponto de partida útil.
- Assinar os módulos relevantes - Em teoria, assinar os módulos comerciais deve fazê-los funcionar. Infelizmente, eu não tenho um ponteiro para instruções sobre como fazer isso, e na verdade não tenho certeza se é possível fazer isso com um kernel Ubuntu padrão; esse kernel pode honrar apenas os módulos assinados com a chave da Canonical, o que obviamente você não possui.
- Compile seu próprio kernel - Se você compilar seu próprio kernel, você pode definir suas opções como quiser, incluindo o afrouxamento das restrições de 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.
- Mude para um GRUB mais antigo - Como um GRUB mais antigo lança kernels não assinados, você pode instalar um GRUB desse tipo (do Ubuntu 15.10 ou anterior) e fazer com que ele inicie um kernel não assinado. Observe que manter o GRUB mais antigo provavelmente seria uma dor.
- Mude para um gerenciador de inicialização que não honra Boot Seguro - Se você tivesse que 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 gerenciador de boot ignoraria as configurações do Secure Boot, assim como uma versão mais antiga do GRUB. Você poderia então lançar um kernel não assinado.
Observe que as duas únicas opções que tenho 100% de certeza funcionariam são desativar o Secure Boot ou evitar módulos do kernel de terceiros. Evito módulos do kernel de terceiros como a praga, por isso não tenho experiência pessoal com o uso deles em um ambiente de inicialização segura. Além de desabilitar o Secure Boot, construir seu próprio kernel pode ser o mais provável de funcionar, seguido pelo uso de um GRUB mais antigo ou por um gerenciador de inicialização que não respeita o Secure Boot. Construir seu próprio kernel já foi comum, mas poucas pessoas fazem mais isso, e com os kernels modernos, o investimento de tempo para aprender como configurar um kernel, sem mencionar o fato de fazê-lo, pode ser significativo. Usar um GRUB mais antigo ou outro gerenciador de inicialização pode ser mais fácil, mas você precisará saber o suficiente para configurá-lo. A maneira mais fácil é a dual-boot com um Ubuntu antigo que você instala em segundo lugar - mas esteja ciente de que o Ubuntu 16.04 provavelmente restaurará seu GRUB em algum momento, e então você precisará reinstalar o GRUB do Ubuntu mais antigo. .