Connexion rompue après la mise à niveau 15.10 -> 16.04 LTS, liée au pilote NVIDIA

10

Je viens de mettre à jour mon système du 15.10 au 16.04 via sudo do-release-upgrade. Au cours de ce processus, il a affiché un écran avec le message suivant:

UEFI Secure Boot est activé sur votre système. UEFI Secure Boot n'est pas compatible avec l'utilisation de pilotes tiers.

(...) Ubuntu pourra toujours démarrer sur votre système mais ces pilotes tiers ne seront pas disponibles pour votre matériel.

Désactiver le démarrage sécurisé UEFI? (oui | non)

Étant donné que les seuls pilotes tiers que j'utilise sont les pilotes graphiques NVIDIA et qu'ils fonctionnent correctement avec Ubuntu 15.10 et Secure Boot activé, j'ai choisi l'option "non" ici. Je ne vois pas pourquoi je devrais désactiver cela sans raison valable, et j'ai supposé que je peux simplement réinstaller le pilote tiers via l'interface graphique des paramètres système après la mise à jour.

Hélas non. Au redémarrage, mon écran de connexion est apparu en très basse résolution. Lorsque vous essayez de vous connecter, cela me renvoie immédiatement à l'écran de connexion.

J'ai essayé ce qui suit pour corriger la situation:

sudo apt-get purge nvidia*
sudo reboot

Cela conduit à un écran violet et aucune réaction à Ctrl-Alt-F1. En me connectant via SSH, j'ai ensuite fait:

sudo apt-get install nvidia-current
sudo reboot

ce qui m'amène à nouveau à l'ancien scénario, avec un écran de connexion très basse résolution, et aucun moyen de se connecter.

C'est une très mauvaise expérience de mise à niveau. Quelqu'un d'autre avait-il cela et que puis-je faire pour y remédier? (tout en gardant UEFI Secure Boot activé) Merci.

kmhofmann
la source
5
Jetez un oeil ici
Videonauth
Wow, c'est mauvais. Jusqu'à présent, j'ai dû: installer nvidia-364 via PPA et désactiver Secure Boot. Maintenant, les choses semblent fonctionner, mais ni la mise à jour automatique du pilote (si je ne me trompe), ni la
réactivation du
Oui malheureusement pas d'autre choix pour le moment. Cela ne vous dérange pas que je marque cette question en double.
Videonauth
Non, ça ne me dérange pas.
kmhofmann
Ce n'est pas un doublon - du moins, pas entièrement. Cette question ajoute la nouvelle tournure de Secure Boot, qui ne fait pas partie de la question "en double" (bien qu'elle soit mentionnée dans quelques commentaires et réponses), et qui mérite une attention particulière.
Rod Smith

Réponses:

8

Grâce à Ubuntu 15.10, la gestion par Ubuntu du démarrage sécurisé s'est arrêtée à GRUB - c'est-à-dire que la version d'Ubuntu de Shim lancerait la version d'Ubuntu de GRUB, qui lancerait n'importe quel noyau Linux, qu'il soit signé ou non. Il s'agissait d'une barre de support très faible pour Secure Boot. À titre de comparaison, le GRUB de Fedora ne lancerait que les noyaux Linux signés et les noyaux de Fedora, lorsqu'ils détecteraient que le démarrage sécurisé était actif, chargeraient uniquement les binaires du noyau signés. L'intention de la prise en charge de Secure Boot plus robuste de Fedora était de protéger le système contre les modules du noyau "voyous", qui pourraient, en théorie, prendre le contrôle de l'ordinateur à un niveau très bas. Ubuntu 15.10 et les versions antérieures n'avaient pas cette protection.

À partir de la version 16.04, Ubuntu suit un module de démarrage sécurisé plus strict, plus semblable à ce que Fedora fait depuis un certain temps. Cela présente des avantages en termes de sécurité, mais comme vous l'avez vu, il présente également des problèmes. Si un pilote tiers n'est pas signé avec une clé cryptographique que la version Ubuntu du noyau Linux reconnaît comme valide, il ne sera pas chargé. Cela affecte principalement les pilotes vidéo Nvidia et AMD / ATI à source fermée, mais d'autres pilotes peuvent également être affectés.

Il existe (ou peut exister) plusieurs solutions à ce problème:

  • Désactiver le démarrage sécurisé - Il s'agit de la solution la plus simple. Vous pouvez le faire en nettoyant avec les paramètres de votre firmware ou (je pense) en ajustant les paramètres de Shim. (Je ne sais pas comment le faire en modifiant les paramètres de Shim, mais je suis presque sûr que c'est possible.)
  • N'utilisez pas de modules de noyau tiers - Si vous vous limitez aux pilotes open source inclus dans le noyau Linux standard d'Ubuntu, cela devrait aller, car Canonical signe tous ces pilotes (AFAIK). Notez qu'il devrait y avoir une assez bonne prise en charge Nvidia utilisant de tels pilotes; votre système est probablement revenu à des pilotes sous-optimaux car il pensait que les pilotes à source fermée étaient disponibles. Je ne sais pas par hasard comment passer de l'un à l'autre, mais cette question concerne le faire avec les pilotes AMD / ATI, donc cela peut être un point de départ utile.
  • Signer les modules pertinents - En théorie, signer vous-même les modules commerciaux devrait les faire fonctionner. Malheureusement, je n'ai pas de pointeur pour obtenir des instructions sur la façon de procéder, et en fait, je ne suis même pas entièrement sûr qu'il soit possible de le faire avec un noyau Ubuntu standard; un tel noyau peut n'honorer que les modules signés avec la clé de Canonical, que vous ne possédez bien sûr pas.
  • Compilez votre propre noyau - Si vous compilez votre propre noyau, vous pouvez définir ses options comme bon vous semble, notamment en assouplissant les restrictions de chargement des modules non signés. Vous devrez ensuite signer le noyau avec votre propre clé EFI et ajouter la version publique de cette clé à votre liste MOK. Voici une question et des réponses sur la compilation de votre propre noyau.
  • Passer à un GRUB plus ancien - Parce qu'un GRUB plus ancien lancera des noyaux non signés, vous pouvez installer un tel GRUB (à partir d'Ubuntu 15.10 ou avant) et lui faire lancer un noyau non signé. Notez que le maintien d'un GRUB plus ancien serait susceptible d'être une douleur.
  • Basculer vers un chargeur de démarrage qui n'honore pas le démarrage sécurisé - Si vous signiez un chargeur de démarrage comme SYSLINUX ou ELILO avec votre propre clé et ajoutez la version publique de cette clé à votre liste MOK, ce chargeur de démarrage ignorerait le Secure Paramètres de démarrage, tout comme une ancienne version de GRUB. Vous pouvez ensuite lancer un noyau non signé.

Notez que les deux seules de ces options dont je suis sûr à 100% fonctionneraient sont de désactiver le démarrage sécurisé ou d'éviter les modules de noyau tiers. J'évite les modules de noyau tiers comme la peste, donc je n'ai aucune expérience personnelle de leur utilisation dans un environnement Secure Boot. Outre la désactivation du démarrage sécurisé, la construction de votre propre noyau pourrait être la prochaine méthode la plus susceptible de fonctionner, suivie de l'utilisation d'un GRUB plus ancien ou d'un chargeur de démarrage qui n'honore pas le démarrage sécurisé. Construire son propre noyau était autrefois courant, mais peu de gens le font plus, et avec les noyaux modernes, le temps investi pour apprendre à configurer un noyau, sans parler de le faire, peut être important. L'utilisation d'un GRUB plus ancien ou d'un autre chargeur de démarrage pourrait être plus facile, mais vous devrez en savoir suffisamment pour pouvoir le configurer.

Rod Smith
la source
2
* Utilisez Ubuntu 14.04 jusqu'à ce que ce problème soit résolu Il y a tellement de raisons pour lesquelles Linux sur le bureau n'est toujours pas en vue. Ce genre de chose rend vraiment plus difficile pour les gens d'adopter Linux.
Underverse
Signez les modules concernés: signez manuellement /lib/modules/x.y.z/updates/dkms/nvidia*.koaveckmodsign (également après chaque mise à jour du pilote) ou automatiquement avecapt install shim-signed .
Joel Purra