Вход в систему после 15.10 - 16.04 Обновление LTS, связанное с драйвером NVIDIA

10

Я только что обновил свою систему с 15.10 по 16.04 через sudo do-release-upgrade . Во время этого процесса он отобразил экран со следующим сообщением:

  

В вашей системе включена защищенная загрузка UEFI. UEFI Secure Boot несовместим с использованием сторонних драйверов.

     

(...) Ubuntu все равно сможет загрузиться в вашей системе, но эти сторонние драйверы не будут доступны для вашего оборудования.

     

Отключить безопасную загрузку UEFI? (да | нет)

Поскольку единственными драйверами сторонних производителей, которые я использую, являются графические драйверы NVIDIA, и поскольку они отлично работают с Ubuntu 15.10 и защищенной загрузкой, я выбрал здесь вариант «нет». Я не понимаю, почему я должен отключить это без уважительной причины, и я предположил, что я могу просто переустановить драйвер сторонних разработчиков через графический интерфейс системных настроек после обновления.

Увы, нет. После перезагрузки мой экран входа в систему появился с очень низким разрешением. При попытке войти в систему сразу же бросает меня обратно на экран входа в систему.

Я испробовал следующее, чтобы исправить ситуацию:

sudo apt-get purge nvidia*
sudo reboot

Это приводит к фиолетовому экрану и никакой реакции на Ctrl-Alt-F1. Вход через SSH, я тогда сделал:

sudo apt-get install nvidia-current
sudo reboot

, который снова приносит мне прежний сценарий с очень низким логином входа и не может войти в систему.

Это довольно плохой опыт обновления. У кого-нибудь еще есть это, и что я могу сделать, чтобы исправить это? (сохраняя при этом защищенную загрузку UEFI). Спасибо.

    
задан kmhofmann 30.04.2016 в 16:46
источник

1 ответ

8

Через Ubuntu 15.10 обработка Ubuntu с защищенной загрузкой остановилась в GRUB, то есть версия Ubuntu Shim запустит версию URUUUTU GRUB, которая запустит ядро ​​Linux any , независимо от того, было ли это подписан. Это был очень низкий уровень поддержки Secure Boot. Для сравнения, GRUB от Fedora будет запускать только подписанные ядра Linux, а ядра Fedora, когда они обнаружат, что Secure Boot активны, будут загружать только подписанные двоичные файлы ядра. Целью более надежной поддержки Secure Boot для Fedora было защитить систему от "мошеннических" модулей ядра, которые теоретически могли бы взять на себя компьютер на очень низком уровне. Ubuntu 15.10 и ранее не имели такой защиты.

Начиная с 16.04, Ubuntu следует за более строгим модулем Secure Boot, больше похожим на то, что Fedora делала довольно долго. Это имеет преимущества безопасности, но, как вы видели, у него также есть проблемы. Если сторонний драйвер не подписан с криптографическим ключом, который версия Ubuntu ядра Linux признает действительной, она не будет загружена. Это в основном влияет на видеодрайверы Nvidia и AMD / ATI с закрытым исходным кодом, но есть и другие драйверы, которые могут быть затронуты.

Существует (или может быть) несколько обходных решений этой проблемы:

  • Отключить безопасную загрузку . Это самое простое решение. Вы можете сделать это, установив настройки прошивки или (я думаю), настроив настройки Shim. (Я не уверен, как это сделать, изменив настройки Shim, но я уверен, что это возможно.)
  • Не используйте сторонние модули ядра . Если вы ограничиваете себя драйверами с открытым исходным кодом, входящими в стандартное ядро ​​Linux Ubuntu, все должно быть хорошо, поскольку Canonical подписывает все такие драйверы (AFAIK). Обратите внимание, что должна быть очень хорошая поддержка Nvidia с использованием таких драйверов; ваша система, вероятно, вернулась к неоптимальным драйверам, потому что считала, что драйверы с закрытым исходным кодом доступны. Я не знаю, как переключаться с одного на другой, но Вот вопрос и ответы о компиляции собственного ядра.
  • Переключиться на более старый GRUB . Поскольку более старый GRUB запускает неподписанные ядра, вы можете установить такой GRUB (от Ubuntu 15.10 или ранее) и запустить его беззнаковое ядро. Обратите внимание, что сохранение того, что старший GRUB, вероятно, будет больно.
  • Переключиться на загрузчик, который не соблюдает Secure Boot . Если вы должны были подписать загрузчик, например SYSLINUX или ELILO, своим собственным ключом и добавить общедоступную версию этого ключа в свой список MOK, что загрузчик будет игнорировать параметры безопасной загрузки, как и более старая версия GRUB. Затем вы можете запустить ядро ​​без знака.

Обратите внимание, что только две из этих опций, на которых я на 100% уверен, будут работать, - это отключить Безопасную загрузку или избежать использования модулей ядра сторонних разработчиков. Я избегаю сторонних модулей ядра, таких как чума, поэтому у меня нет личного опыта использования их в среде Secure Boot. Помимо отключения Secure Boot, создание собственного ядра может быть наиболее вероятным для работы, а затем использовать более старый GRUB или использовать загрузчик, который не соблюдает Secure Boot. Когда-то было создано ваше собственное ядро, но мало кто это делает, и с современными ядрами время инвестиций, чтобы узнать, как настроить ядро, не говоря уже об этом, может быть значительным. Использование старого GRUB или другого загрузчика может быть проще, но вам нужно знать достаточно, чтобы это можно было установить. Более простой способ, вероятно, состоит в двойной загрузке с более старым Ubuntu, который вы устанавливаете вторым, но имейте в виду, что Ubuntu 16.04, скорее всего, восстановит свой GRUB в какой-то момент, после чего вам потребуется переустановить более старый URUuntu GRUB .     

ответ дан Rod Smith 30.04.2016 в 20:48
источник