Я только что обновил свою систему с 15.10 до 16.04 через sudo do-release-upgrade
. Во время этого процесса отображался экран со следующим сообщением:
В вашей системе включена безопасная загрузка UEFI. UEFI Secure Boot не совместима с использованием сторонних драйверов.
(...) Ubuntu по-прежнему сможет загружаться в вашей системе, но эти сторонние драйверы не будут доступны для вашего оборудования.
Отключить безопасную загрузку UEFI? (да | нет)
Поскольку единственными драйверами сторонних производителей, которые я использую, являются графические драйверы NVIDIA, и, поскольку они работают нормально с включенной Ubuntu 15.10 и Secure Boot, я выбрал здесь вариант «нет». Я не понимаю, почему я должен отключить это без уважительной причины, и я предположил, что я могу просто переустановить сторонний драйвер через графический интерфейс настройки системы после обновления.
Увы нет. После перезагрузки мой экран входа в систему отображался в очень низком разрешении. При попытке войти в систему сразу выкидывает меня обратно на экран входа в систему.
Я попытался сделать следующее, чтобы исправить ситуацию:
sudo apt-get purge nvidia*
sudo reboot
Это приводит к фиолетовому экрану и никакой реакции на Ctrl-Alt-F1. Зайдя в систему через SSH, я сделал:
sudo apt-get install nvidia-current
sudo reboot
что снова приводит меня к прежнему сценарию, с очень низким разрешением экрана входа и без возможности входа в систему.
Это довольно плохой опыт обновления. У кого-нибудь еще было это, и что я могу сделать, чтобы это исправить? (при сохранении безопасной загрузки UEFI) Спасибо.
Ответы:
Через 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 с закрытым исходным кодом, но могут быть затронуты и другие драйверы.
Существует (или может быть) несколько способов решения этой проблемы:
Обратите внимание, что только две из этих опций, на которые я на 100% уверен, сработают, это отключить безопасную загрузку или избежать сторонних модулей ядра. Я избегаю сторонних модулей ядра, таких как чума, поэтому у меня нет личного опыта использования их в среде безопасной загрузки. Помимо отключения безопасной загрузки, вероятно, будет работать сборка собственного ядра с последующим использованием более старого GRUB или загрузчика, который не поддерживает безопасную загрузку. Сборка собственного ядра когда-то была обычным делом, но мало кто это делает, и с современными ядрами затраты времени на изучение того, как настроить ядро, не говоря уже о том, чтобы сделать это, могут быть значительными. Использование старого GRUB или другого загрузчика может быть проще, но вам нужно знать достаточно, чтобы его настроить.
источник
/lib/modules/x.y.z/updates/dkms/nvidia*.ko
используяkmodsign
(также после каждого обновления драйвера) или автоматически сapt install shim-signed
.