Właśnie zaktualizowałem swój system z 15.10 na 16.04 za pośrednictwem sudo do-release-upgrade
. Podczas tego procesu wyświetlił się ekran z następującym komunikatem:
Twój system ma włączony Bezpieczny rozruch UEFI. UEFI Secure Boot nie jest kompatybilny z użyciem sterowników innych firm.
(...) Ubuntu nadal będzie mógł się uruchomić w twoim systemie, ale te sterowniki innych producentów nie będą dostępne dla twojego sprzętu.
Wyłączyć bezpieczny rozruch UEFI? (tak | nie)
Ponieważ jedynymi sterownikami innych firm, których używam, są sterowniki graficzne NVIDIA, a ponieważ działają one dobrze z Ubuntu 15.10 i włączonym Bezpiecznym uruchomieniem, wybrałem tutaj opcję „nie”. Nie rozumiem, dlaczego powinienem to wyłączyć bez powodu i założyłem, że po aktualizacji mogę po prostu ponownie zainstalować sterownik innej firmy za pomocą graficznego interfejsu użytkownika ustawień systemowych.
Niestety nie. Po ponownym uruchomieniu mój ekran logowania pojawił się w bardzo niskiej rozdzielczości. Próbując się zalogować, natychmiast odsyła mnie z powrotem do ekranu logowania.
Próbowałem rozwiązać ten problem:
sudo apt-get purge nvidia*
sudo reboot
Prowadzi to do purpurowego ekranu i braku reakcji na Ctrl-Alt-F1. Logując się przez SSH, zrobiłem:
sudo apt-get install nvidia-current
sudo reboot
co ponownie przynosi mi poprzedni scenariusz, z ekranem logowania o bardzo niskiej rozdzielczości i bez możliwości logowania.
Jest to dość złe doświadczenie aktualizacji. Czy ktoś jeszcze to miał i co mogę zrobić, aby to naprawić? (zachowując włączony bezpieczny rozruch UEFI) Dzięki.
Odpowiedzi:
Dzięki Ubuntu 15.10, obsługa Bezpiecznego rozruchu przez Ubuntu zatrzymała się w GRUB - to znaczy, że wersja Shim Ubuntu uruchomiłaby wersję GRUB Ubuntu, która uruchomiłaby dowolne jądro Linuksa, niezależnie od tego, czy zostało podpisane. To był bardzo niski pasek wsparcia dla bezpiecznego rozruchu. Dla porównania GRUB Fedory uruchomiłby tylko podpisane jądra Linuksa, a jądra Fedory, gdy wykryły, że Bezpieczny rozruch jest aktywny, załadowałyby tylko podpisane pliki binarne jądra. Bardziej niezawodna obsługa bezpiecznego rozruchu Fedory miała na celu ochronę 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ł Bezpiecznego rozruchu, bardziej podobny do tego, co Fedora robi od dłuższego czasu. Ma to zalety związane z bezpieczeństwem, ale jak widzieliście, ma również problemy. Jeśli sterownik innej firmy nie jest podpisany za pomocą klucza kryptograficznego, który jądro Linuksa w wersji Ubuntu rozpozna jako prawidłowe, nie zostanie załadowane. Wpływa to głównie na sterowniki wideo Nvidia i AMD / ATI o zamkniętym źródle, ale są też inne sterowniki, na które może mieć wpływ.
Istnieje (lub może być) kilka obejść tego problemu:
Zauważ, że jedyne dwie z tych opcji, które jestem w 100% pewien, że zadziałałyby to wyłączenie Bezpiecznego rozruchu lub uniknięcie modułów jądra innych firm. Unikam modułów jądra innych firm, takich jak zaraza, więc nie mam osobistego doświadczenia w korzystaniu z nich w środowisku bezpiecznego rozruchu. Oprócz wyłączenia Bezpiecznego rozruchu, najbardziej prawdopodobne jest zbudowanie własnego jądra, 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 niewiele osób już to robi, a przy nowoczesnych jądrach inwestycja czasu w nauczenie się konfigurowania jądra, nie wspominając o tym, może być znacząca. Korzystanie ze starszego GRUBa lub innego programu ładującego może być łatwiejsze, ale musisz wiedzieć wystarczająco dużo, aby móc to skonfigurować.
źródło
/lib/modules/x.y.z/updates/dkms/nvidia*.ko
za pomocąkmodsign
(także po każdej aktualizacji sterownika) lub automatycznie za pomocąapt install shim-signed
.