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.