Логін порушено після оновлення 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 та Secure Boot, тут я вибрав варіант "ні". Я не бачу, чому мені слід відключити це без поважних причин, і я припустив, що після оновлення я можу просто перевстановити сторонній драйвер через графічний інтерфейс налаштувань системи.

На жаль, ні. Після перезавантаження мій екран входу з’явився в дуже низькій роздільній здатності. При спробі входу в систему вона негайно повертає мене на екран входу.

Я спробував виправити наступне:

sudo apt-get purge nvidia*
sudo reboot

Це призводить до появи фіолетового екрану і немає реакції на Ctrl-Alt-F1. Після входу через SSH я зробив:

sudo apt-get install nvidia-current
sudo reboot

що знову приносить мені колишній сценарій, з дуже низьким екраном входу, і жодним способом увійти.

Це досить поганий досвід оновлення. Хтось ще мав це, і що я можу зробити, щоб це виправити? (при цьому увімкнено безпечне завантаження UEFI) Дякую


5
Подивіться тут
Videonauth

Ого, це погано. Поки мені довелося: встановити nvidia-364 через PPA та відключити безпечну завантаження. Зараз, здається, все працює, але ні водій автоматично не оновлює (якщо я не помиляюся), ні я можу повторно ввімкнути безпечну завантажувальну систему ...
kmhofmann

Так, на жаль, немає іншого вибору на даний момент. Ви не заперечуєте, що я позначаю це питання тоді як дублікат.
Videonauth

Ні, я не проти.
kmhofmann

Це не дублікат - принаймні, не цілком. Це питання додає нового повороту Secure Boot, який не є частиною "дублюючого" питання (хоча це згадується в парі коментарів та відповідей), і це заслуговує на подальшу увагу.
Rod Smith

Відповіді:


8

Через Ubuntu 15.10 управління Ubuntu із захищеним завантаженням зупинилося на GRUB - тобто версія Shim Ubuntu запустила б версія GRUB Ubuntu, яка запустила б будь-яке ядро Linux, незалежно від того, підписано воно чи ні. Це була дуже низька планка підтримки для безпечного завантаження. Для порівняння, GRUB Fedora запустив би лише підписані ядра Linux, а ядра Fedora, коли виявили, що Secure Boot активний, завантажуватимуть лише підписані бінарні файли ядра. Наміром більш надійної підтримки захищеного завантаження Fedora було захистити систему від модулів ядра, які, в теорії, могли захопити комп'ютер на дуже низькому рівні. Ubuntu 15.10 і раніше не вистачало такого захисту.

Починаючи з 16.04, Ubuntu слідує за більш суворим модулем захищеного завантаження, більше схожим на те, що Fedora робив досить давно. Це має переваги для безпеки, але, як ви вже бачили, це також має проблеми. Якщо сторонній драйвер не підписаний криптографічним ключем, який версія Ubuntu ядра Linux визнає дійсною, він не завантажується. Це в основному впливає на відеовідра Nvidia та AMD / ATI із закритим кодом, але на них можуть вплинути й інші драйвери.

Існує (або може бути) кілька вирішень цієї проблеми:

  • Вимкнути безпечне завантаження - це найпростіше рішення. Це можна зробити, скориставшись налаштуваннями вбудованого програмного забезпечення або (я думаю), скоригувавши параметри Shim. (Я не впевнений, як це зробити, змінивши налаштування Shim, але я впевнений, що це можливо.)
  • Не використовуйте сторонні модулі ядра - Якщо ви обмежуєте себе драйверами з відкритим кодом, що входять до стандартного ядра Ubuntu Linux, вам слід добре, оскільки Canonical підписує всі такі драйвери (AFAIK). Зауважте, що для таких драйверів має бути досить хороша підтримка Nvidia; ваша система, ймовірно, повернулася до неоптимальних драйверів, оскільки вона вважала, що драйвери із закритим кодом доступні. Я не знаю напевно, як переключитися з одного на інший, але це питання стосується цього з драйверами AMD / ATI, тому це може бути корисною відправною точкою.
  • Підпишіть відповідні модулі - теоретично, підписування комерційних модулів повинно змусити їх працювати. На жаль, у мене немає вказівника щодо інструкцій, як це зробити, і насправді я навіть не зовсім впевнений, що це можливо зробити з запасом ядра Ubuntu; таке ядро ​​може шанувати лише модулі, підписані ключем Canonical, якими ви, звичайно, не володієте.
  • Скомпілюйте власне ядро - якщо ви збираєте власне ядро, ви можете встановити його параметри, як вважаєте за потрібне, включаючи послаблення обмежень щодо завантаження неподписаних модулів. Потім вам потрібно буде підписати ядро ​​за допомогою власного ключа EFI та додати відкриту версію цього ключа до списку MOK. Ось питання та відповіді щодо складання власного ядра.
  • Перехід на старіший GRUB - Оскільки старіший GRUB запускає непідписані ядра, ви можете встановити такий GRUB (від Ubuntu 15.10 або раніше) і змусити його запустити непідписане ядро. Зауважте, що підтримка цього старшого GRUB, ймовірно, буде болем.
  • Перехід на завантажувач, який не шанує захищене завантаження - Якщо ви повинні підписати завантажувач типу SYSLINUX або ELILO власним ключем і додати публічну версію цього ключа до свого списку MOK, цей завантажувач ігнорував би безпечний Налаштування завантаження, як і старіша версія GRUB. Потім можна запустити непідписане ядро.

Зауважте, що єдині два з цих варіантів, на які я впевнений на 100%, би спрацювали, - це відключити захищене завантаження або уникати сторонніх модулів ядра. Я уникаю сторонніх модулів ядра, як чума, тому у мене немає особистого досвіду використання їх у безпечному завантаженні. Окрім відключення захищеного завантаження, наступним, швидше за все, може працювати побудова власного ядра з подальшим використанням старого GRUB або використанням завантажувача, який не шанує Secure Boot. Створення власного ядра колись було звичайним явищем, але мало хто робить це вже більше, і за допомогою сучасних ядер час інвестування часу, щоб дізнатися, як налаштувати ядро, не кажучи вже про це, може бути значним. Використовувати старіший GRUB або інший завантажувач може бути простішим, але вам потрібно знати достатньо, щоб мати можливість це налаштувати.


2
* Використовуйте Ubuntu 14.04, поки ця проблема не буде усунена. Є так багато причин, чому Linux на робочому столі все ще не видно. Такі речі справді просто болючіше сприймають Linux.
Підземний

Підпишіть відповідні модулі: підпишіть вручну, /lib/modules/x.y.z/updates/dkms/nvidia*.koвикористовуючиkmodsign (також після кожного оновлення драйвера) або автоматично за допомогоюapt install shim-signed .
Джоел Пурра
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.