Ich habe gerade mein System von 15.10 auf 16.04 über aktualisiert sudo do-release-upgrade
. Während dieses Vorgangs wurde ein Bildschirm mit der folgenden Meldung angezeigt:
Auf Ihrem System ist UEFI Secure Boot aktiviert. UEFI Secure Boot ist nicht mit der Verwendung von Treibern von Drittanbietern kompatibel.
(...) Ubuntu kann weiterhin auf Ihrem System booten, aber diese Treiber von Drittanbietern sind für Ihre Hardware nicht verfügbar.
UEFI Secure Boot deaktivieren? (ja | nein)
Da die einzigen Treiber von Drittanbietern, die ich verwende, die NVIDIA-Grafiktreiber sind und sie mit Ubuntu 15.10 und aktiviertem Secure Boot einwandfrei funktionieren, habe ich hier die Option "Nein" gewählt. Ich verstehe nicht, warum ich dies ohne guten Grund deaktivieren sollte, und ich nahm an, dass ich den Treiber eines Drittanbieters nach dem Update einfach über die GUI der Systemeinstellungen neu installieren kann.
Ach nein. Beim Neustart wurde mein Anmeldebildschirm in sehr niedriger Auflösung angezeigt. Beim Versuch, mich anzumelden, kehre ich sofort zum Anmeldebildschirm zurück.
Ich habe Folgendes versucht, um die Situation zu beheben:
sudo apt-get purge nvidia*
sudo reboot
Dies führt zu einem violetten Bildschirm und keiner Reaktion auf Strg-Alt-F1. Als ich mich über SSH anmeldete, tat ich Folgendes:
sudo apt-get install nvidia-current
sudo reboot
Das bringt mich wieder zu dem früheren Szenario mit einem sehr niedrig aufgelösten Anmeldebildschirm und keiner Möglichkeit, mich anzumelden.
Dies ist eine ziemlich schlechte Upgrade-Erfahrung. Hatte jemand anderes dies und was kann ich tun, um dies zu beheben? (während UEFI Secure Boot aktiviert bleibt) Danke.
Antworten:
Durch Ubuntu 15.10 wurde Ubuntus Umgang mit Secure Boot bei GRUB gestoppt - das heißt, Ubuntus Version von Shim würde Ubuntus Version von GRUB starten, die jeden Linux-Kernel starten würde , unabhängig davon, ob er signiert war oder nicht. Dies war eine sehr niedrige Unterstützungsquote für Secure Boot. Zum Vergleich: Fedoras GRUB würde nur signierte Linux-Kernel starten, und Fedoras Kernel würden, wenn sie feststellen würden, dass Secure Boot aktiv ist, nur signierte Kernel-Binärdateien laden. Die Absicht der robusteren Secure Boot-Unterstützung von Fedora bestand darin, das System vor "betrügerischen" Kernelmodulen zu schützen, die theoretisch den Computer auf sehr niedrigem Niveau übernehmen könnten. Ubuntu 15.10 und früher fehlte ein solcher Schutz.
Ab 16.04 folgt Ubuntu einem strengeren Secure Boot-Modul, das eher dem entspricht, was Fedora seit einiger Zeit tut. Dies hat Sicherheitsvorteile, aber wie Sie gesehen haben, hat es auch Probleme. Wenn ein Treiber eines Drittanbieters nicht mit einem kryptografischen Schlüssel signiert ist, den die Ubuntu-Version des Linux-Kernels als gültig erkennt, wird er nicht geladen. Dies betrifft hauptsächlich die Closed-Source-Videotreiber Nvidia und AMD / ATI, aber es gibt auch andere Treiber, die davon betroffen sein können.
Es gibt (oder könnte) mehrere Problemumgehungen für dieses Problem:
Beachten Sie, dass die einzigen zwei dieser Optionen, von denen ich zu 100% sicher bin, dass sie funktionieren, das Deaktivieren von Secure Boot oder das Vermeiden von Kernelmodulen von Drittanbietern sind. Ich vermeide Kernelmodule von Drittanbietern wie die Pest, daher habe ich keine persönlichen Erfahrungen mit deren Verwendung in einer Secure Boot-Umgebung. Abgesehen von der Deaktivierung von Secure Boot funktioniert das Erstellen eines eigenen Kernels möglicherweise am wahrscheinlichsten, gefolgt von der Verwendung eines älteren GRUB oder eines Bootloaders, der Secure Boot nicht berücksichtigt. Früher war es üblich, einen eigenen Kernel zu erstellen, aber nur wenige Leute tun dies mehr. Bei modernen Kerneln kann der Zeitaufwand für das Erlernen der Konfiguration eines Kernels erheblich sein, ganz zu schweigen davon, dass dies tatsächlich der Fall ist. Die Verwendung eines älteren GRUB oder eines anderen Bootloaders ist möglicherweise einfacher, aber Sie müssen genug wissen, um dies einrichten zu können.
quelle
/lib/modules/x.y.z/updates/dkms/nvidia*.ko
kmodsign
die relevanten Module: manuell signieren mit (auch nach jedem Treiberupdate) oder automatisch mitapt install shim-signed
.