Через Ubuntu 15.10 обработка защищенной загрузки в Ubuntu остановилась на GRUB, то есть версия Shim для Ubuntu запустила версию GRUB для Ubuntu, которая запускает любое ядро Linux, независимо от того, подписано оно или нет. Это была очень низкая планка поддержки Secure Boot. Для сравнения, GRUB Fedora будет запускать только подписанные ядра Linux, а ядра Fedora, когда они обнаружат, что Secure Boot активна, будут загружать только подписанные двоичные файлы ядра. Цель более надежной поддержки Secure Boot в Fedora состояла в том, чтобы защитить систему от «мошеннических» модулей ядра, которые теоретически могут захватить компьютер на очень низком уровне. В Ubuntu 15.10 и более ранних версиях такой защиты не было.
Начиная с 16.04, Ubuntu следует более строгому модулю Secure Boot, больше похожему на то, что Fedora делает довольно давно. Это имеет преимущества для безопасности, но, как вы видели, оно также имеет проблемы. Если сторонний драйвер не подписан криптографическим ключом, который версия ядра Linux для Ubuntu признает действительным, он не будет загружен. Это в основном влияет на видеодрайверы Nvidia и AMD / ATI с закрытым исходным кодом, но могут быть затронуты и другие драйверы.
Существует (или может быть) несколько способов решения этой проблемы:
- Отключить безопасную загрузку - это самое простое решение. Вы можете сделать это, взглянув на настройки вашей прошивки или (я думаю), отрегулировав настройки Shim. (Я не уверен, как это сделать, изменив настройки Шима, но я уверен, что это возможно.)
- Не используйте сторонние модули ядра - если вы ограничиваете себя драйверами с открытым исходным кодом, включенными в стандартное ядро Ubuntu для Linux, все будет в порядке, поскольку Canonical подписывает все такие драйверы (AFAIK). Обратите внимание, что должна быть довольно хорошая поддержка Nvidia с использованием таких драйверов; ваша система, вероятно, отказалась от неоптимальных драйверов, потому что считала, что драйверы с закрытым исходным кодом были доступны. Я не знаю, как вручную переключаться с одного на другое, но этот вопрос касается того, как это сделать с драйверами AMD / ATI, так что это может быть полезной отправной точкой.
- Подпишите соответствующие модули - Теоретически, подписание коммерческих модулей самостоятельно должно заставить их работать. К сожалению, у меня нет указателя для инструкций о том, как это сделать, и на самом деле я даже не совсем уверен, что это можно сделать с помощью стандартного ядра Ubuntu; такое ядро может использовать только те модули, которые подписаны ключом Canonical, которым, конечно, вы не обладаете.
- Скомпилируйте ваше собственное ядро. Если вы скомпилируете собственное ядро, вы можете установить его параметры по своему усмотрению, включая ослабление ограничений на загрузку неподписанных модулей. Затем вам нужно будет подписать ядро своим собственным ключом EFI и добавить открытую версию этого ключа в свой список MOK. Вот вопрос и ответы о компиляции вашего собственного ядра.
- Переключитесь на более старый GRUB - поскольку более старый GRUB будет запускать неподписанные ядра, вы можете установить такой GRUB (из Ubuntu 15.10 или более ранней версии ) и запустить его без неподписанного ядра. Обратите внимание, что поддержание этого старого GRUB, скорее всего, будет проблемой.
- Переключитесь на загрузчик, который не поддерживает Secure Boot. Если вы подпишете загрузчик, такой как SYSLINUX или ELILO, своим собственным ключом и добавите публичную версию этого ключа в свой список MOK, этот загрузчик проигнорирует Secure Настройки загрузки, как и в более старой версии GRUB. Затем вы можете запустить неподписанное ядро.
Обратите внимание, что только две из этих опций, на которые я на 100% уверен, сработают, это отключить безопасную загрузку или избежать сторонних модулей ядра. Я избегаю сторонних модулей ядра, таких как чума, поэтому у меня нет личного опыта использования их в среде безопасной загрузки. Помимо отключения безопасной загрузки, вероятно, будет работать сборка собственного ядра с последующим использованием более старого GRUB или загрузчика, который не поддерживает безопасную загрузку. Сборка собственного ядра когда-то была обычным делом, но мало кто это делает, и с современными ядрами затраты времени на изучение того, как настроить ядро, не говоря уже о том, чтобы сделать это, могут быть значительными. Использование старого GRUB или другого загрузчика может быть проще, но вам нужно знать достаточно, чтобы его настроить.