Anmeldung nach 15.10 unterbrochen -> 16.04 LTS-Upgrade, bezogen auf NVIDIA-Treiber

10

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.

kmhofmann
quelle
5
Schauen Sie hier
Videonauth
Wow, das ist schlecht. Bisher musste ich: nvidia-364 über PPA installieren und Secure Boot deaktivieren. Jetzt scheinen die Dinge zu funktionieren, aber weder wird der Treiber automatisch aktualisiert (wenn ich mich nicht irre), noch kann ich Secure Boot wieder aktivieren ...
kmhofmann
Ja, im Moment leider keine andere Wahl. Es macht Ihnen nichts aus, dass ich diese Frage dann als Duplikat markiere.
Videonauth
Nein, das macht mir nichts aus.
kmhofmann
Es ist kein Duplikat - zumindest nicht ganz. Diese Frage fügt die neue Variante von Secure Boot hinzu, die nicht Teil der "doppelten" Frage ist (obwohl sie in einigen Kommentaren und Antworten erwähnt wird), und die weitere Aufmerksamkeit verdient.
Rod Smith

Antworten:

8

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:

  • Secure Boot deaktivieren - Dies ist die einfachste Lösung. Sie können dies tun, indem Sie Ihre Firmware-Einstellungen ändern oder (glaube ich) die Shim-Einstellungen anpassen. (Ich bin mir nicht sicher, wie ich das tun soll, indem ich Shims Einstellungen ändere, aber ich bin mir ziemlich sicher, dass das möglich ist.)
  • Verwenden Sie keine Kernelmodule von Drittanbietern - Wenn Sie sich auf Open Source-Treiber beschränken, die im Standard-Linux-Kernel von Ubuntu enthalten sind, sollten Sie in Ordnung sein, da Canonical alle diese Treiber (AFAIK) signiert. Beachten Sie, dass es mit solchen Treibern eine ziemlich gute Nvidia-Unterstützung geben sollte. Ihr System ist wahrscheinlich auf suboptimale Treiber zurückgefallen, weil es dachte, dass die Closed-Source-Treiber verfügbar sind. Ich weiß nicht ohne weiteres, wie ich von einem zum anderen wechseln soll, aber bei dieser Frage geht es darum, dies mit AMD / ATI-Treibern zu tun. Daher kann dies ein hilfreicher Ausgangspunkt sein.
  • Signieren Sie die relevanten Module - Wenn Sie die kommerziellen Module selbst signieren, sollten sie theoretisch funktionieren. Leider habe ich keinen Zeiger für Anweisungen dazu, und tatsächlich bin ich mir nicht einmal ganz sicher, ob dies mit einem Standard-Ubuntu-Kernel möglich ist. Ein solcher Kernel berücksichtigt möglicherweise nur Module, die mit dem Canonical-Schlüssel signiert sind und die Sie natürlich nicht besitzen.
  • Kompilieren Sie Ihren eigenen Kernel - Wenn Sie Ihren eigenen Kernel kompilieren, können Sie die Optionen nach Belieben festlegen, einschließlich der Lockerung der Einschränkungen beim Laden nicht signierter Module. Sie müssten dann den Kernel mit Ihrem eigenen EFI-Schlüssel signieren und die öffentliche Version dieses Schlüssels zu Ihrer MOK-Liste hinzufügen. Hier finden Sie eine Frage und Antworten zum Kompilieren Ihres eigenen Kernels.
  • Zu einem älteren GRUB wechseln - Da ein älterer GRUB nicht signierte Kernel startet, können Sie einen solchen GRUB (ab Ubuntu 15.10 oder früher) installieren und einen nicht signierten Kernel starten lassen. Beachten Sie, dass die Aufrechterhaltung dieses älteren GRUB wahrscheinlich ein Schmerz ist.
  • Wechseln Sie zu einem Bootloader, der Secure Boot nicht berücksichtigt - Wenn Sie einen Bootloader wie SYSLINUX oder ELILO mit Ihrem eigenen Schlüssel signieren und die öffentliche Version dieses Schlüssels zu Ihrer MOK-Liste hinzufügen, ignoriert dieser Bootloader den Secure Starteinstellungen, genau wie bei einer älteren Version von GRUB. Sie können dann einen nicht signierten Kernel starten.

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.

Rod Smith
quelle
2
* Verwenden Sie Ubuntu 14.04, bis dieses Problem behoben ist. Es gibt so viele Gründe, warum Linux auf dem Desktop immer noch nicht in Sicht ist. Diese Art von Dingen macht es für die Leute wirklich schmerzhafter, Linux zu übernehmen.
Underverse