Logowanie zepsute po aktualizacji 15.10 - 16.04 LTS, związane ze sterownikiem NVIDIA

10

Właśnie zaktualizowałem swój system z 15.10 na 16.04 przez sudo do-release-upgrade . Podczas tego procesu wyświetlił się ekran z następującym komunikatem:

  

Twój system ma włączoną opcję Bezpieczne uruchamianie UEFI. Program UEFI Secure Boot nie jest zgodny ze sterownikami innych firm.

     

(...) Ubuntu nadal będzie w stanie uruchomić system, ale te sterowniki innych firm nie będą dostępne dla twojego sprzętu.

     

Wyłączyć bezpieczne uruchamianie UEFI? (tak | nie)

Ponieważ jedynymi sterownikami innych firm, z których korzystam, są sterowniki graficzne NVIDIA, a ponieważ działały dobrze z systemem Ubuntu 15.10 i Bezpiecznym uruchomieniem, wybrałem opcję "nie" tutaj. Nie widzę powodu, dla którego powinienem wyłączyć to bez ważnego powodu i założyłem, że mogę po prostu ponownie zainstalować sterownik innej firmy za pośrednictwem GUI ustawień systemowych po aktualizacji.

Niestety, nie. Po ponownym uruchomieniu mój ekran logowania pojawił się w bardzo niskiej rozdzielczości. Kiedy próbuję się zalogować, natychmiast wyrzuca mnie z powrotem na ekran logowania.

Próbowałem wykonać następujące czynności:

sudo apt-get purge nvidia*
sudo reboot

Prowadzi to do fioletowego ekranu i braku reakcji na Ctrl-Alt-F1. Logując się przez SSH, zrobiłem:

sudo apt-get install nvidia-current
sudo reboot

co przynosi mi poprzedni scenariusz z ekranem logowania o niskiej rozdzielczości i niemożnością zalogowania się.

To jest bardzo złe doświadczenie aktualizacji. Czy ktoś jeszcze to ma i co mogę zrobić, aby to naprawić? (przy jednoczesnym utrzymaniu włączonego bezpiecznego rozruchu UEFI) Dzięki.

    
zadawane kmhofmann 30.04.2016, 18:46
źródło

1 odpowiedź

8

Poprzez Ubuntu 15.10, obsługa Bezpiecznego rozruchu przez Ubuntu zatrzymała się na GRUB-ie, wersja Ubuntu Shima uruchomi wersję GRUB-a Ubuntu, która uruchomi dowolne jądro Linux, niezależnie od tego, czy było podpisany. To był bardzo niski poziom wsparcia dla Bezpiecznego rozruchu. Dla porównania GRUB Fedory uruchamiałby tylko podpisane jądra Linuksa, a jądra Fedory, gdy wykryją, że Secure Boot był aktywny, ładowałyby tylko podpisane pliki binarne jądra. Intencją bardziej niezawodnej obsługi Secure Boot była ochrona systemu przed "nieuczciwymi" modułami jądra, które teoretycznie mogłyby przejąć komputer na bardzo niskim poziomie. Ubuntu 15.10 i wcześniejsze nie miały takiej ochrony.

Począwszy od 16.04, Ubuntu stosuje bardziej rygorystyczny moduł Secure Boot, bardziej podobny do tego, co Fedora robiła od dłuższego czasu. Ma to zalety bezpieczeństwa, ale jak widzieliście, ma również problemy. Jeśli sterownik innej firmy nie jest podpisany kluczem kryptograficznym, który zostanie rozpoznany jako wersja jądra systemu Linux, nie zostanie załadowany. Ma to przeważnie wpływ na sterowniki wideo Nvidia i AMD / ATI o zamkniętym kodzie źródłowym, ale są też inne sterowniki, na które można wpływać.

Jest kilka (lub może być) kilka obejść tego problemu:

  • Wyłącz Bezpieczne uruchamianie - jest to najprostsze rozwiązanie. Możesz to zrobić, pozbywając się ustawień oprogramowania układowego lub (myślę), dostosowując ustawienia Shim. (Nie jestem pewien, jak to zrobić, modyfikując ustawienia Shima, ale jestem prawie pewien, że to możliwe.)
  • Nie używaj modułów jądra firm trzecich - jeśli ograniczysz się do sterowników open source zawartych w standardowym jądrze systemu Linux Ubuntu, powinieneś być w porządku, ponieważ Canonical podpisuje wszystkie takie sterowniki (AFAIK). Zauważ, że powinna istnieć całkiem dobra obsługa Nvidii przy użyciu takich sterowników; Twój system prawdopodobnie wrócił do nieoptymalnych sterowników, ponieważ uważał, że dostępne są sterowniki z zamkniętym kodem źródłowym. Nie wiem od zera, jak przejść z jednego do drugiego, ale to pytanie dotyczy tego w przypadku sterowników AMD / ATI, więc może być pomocnym punktem wyjścia.
  • Podpisywanie odpowiednich modułów - teoretycznie podpisywanie modułów komercyjnych powinno sprawić, że będą działać. Niestety, nie mam wskazówki, jak to zrobić, a właściwie nie jestem do końca pewien, czy można to zrobić za pomocą jądra systemu Ubuntu; takie jądro może honorować tylko moduły podpisane kluczem Canonical, którego oczywiście nie posiadasz.
  • Skompiluj własne jądro - Jeśli skompilujesz własne jądro, możesz ustawić jego opcje według własnego uznania, w tym rozluźnić restrykcje dotyczące ładowania niepodpisanych modułów. Następnie musisz podpisać jądro własnym kluczem EFI i dodać publiczną wersję tego klucza do swojej listy MOK. Oto pytanie i odpowiedzi dotyczące kompilowania własnego jądra.
  • Przełącz na starszego GRUBA - ponieważ starszy GRUB uruchomi niepodpisane jądra, możesz zainstalować taki GRUB (z Ubuntu 15.10 lub wcześniej) i uruchomić go bez podpisu. Zauważ, że utrzymywanie tego starszego GRUB-a może być bardzo trudne.
  • Przełącz na program ładujący, który nie honoruje Bezpiecznego rozruchu - Jeśli chcesz podpisać moduł ładujący, taki jak SYSLINUX lub ELILO, za pomocą własnego klucza i dodać publiczną wersję tego klucza do swojej listy MOK, ten program rozruchowy zignorowałby ustawienia Bezpiecznego rozruchu, tak jak starszą wersję GRUB-a. Następnie możesz uruchomić niepodpisane jądro.

Zauważ, że jedynymi dwiema opcjami, w których jestem w 100% pewna, będą działać, aby wyłączyć Bezpieczne uruchamianie lub aby uniknąć modułów jądra innych firm. Unikam modułów jądra innych firm, takich jak dżuma, więc nie mam osobistego doświadczenia w korzystaniu z nich w środowisku bezpiecznego rozruchu. Oprócz wyłączenia opcji Bezpiecznego rozruchu, budowanie własnego jądra może być następnym najprawdopodobniej dobrym rozwiązaniem, a następnie użycie starszego GRUB-a lub programu ładującego, który nie honoruje Bezpiecznego rozruchu. Budowanie własnego jądra było kiedyś powszechne, ale niewielu ludzi to robi, a przy współczesnych jądrach czas inwestowania, aby nauczyć się konfigurować jądro, nie wspominając o tym, że faktycznie to robi, może być znaczący. Używanie starszego GRUB-a lub innego programu ładującego może być łatwiejsze, ale musisz wiedzieć wystarczająco dużo, aby móc to ustawić. Najłatwiejszym sposobem jest podwójne uruchamianie ze starszym Ubuntu, który instalujesz na drugim miejscu - ale pamiętaj, że Ubuntu 16.04 prawdopodobnie przywróci GRUB-a w pewnym momencie, po czym będziesz musiał ponownie zainstalować starszą wersję GRUB-a Ubuntu .

    
odpowiedział Rod Smith 30.04.2016, 22:48
źródło

Przeczytaj inne pytania na temat tagów