Dlaczego wyłączenie „Bezpiecznego rozruchu” jest wymuszone przez zasady podczas instalowania modułów innych firm

46

Podczas instalacji 16.04 zostałem poproszony o wyłączenie „ Bezpiecznego rozruchu ”, jeśli chcę zainstalować moduły / sterowniki innych firm .

Nie zastosowałem się

A kiedy ręcznie zainstalowałem jedyne sterowniki innych firm, których używam ( bcmwl-kernel-source ), ponownie zostałem poproszony (podczas instalacji pakietu) o wyłączenie „Bezpiecznego rozruchu”.

Używanie bcmwl-kernel-source było w porządku z Secure Boot w 15.10 . Nie wydaje mi się to związane z błędem.

Wygląda to na to, że Ubuntu odmawia podpisywania sterowników / modułów innych firm, aby działało (??) z „Bezpiecznym uruchomieniem”. A może wydaje się, że uważa moduły innych firm za niebezpieczne i przerywające „Bezpieczny rozruch”, dlatego też jest nieskuteczne, aby je wyłączyć, aby było jasne? Czy mam rację ?

przesilenie dnia z nocą
źródło
6
Cóż, IMO jest tak, ponieważ ludzie (fałszywie) zakładają, że bezpieczny rozruch spowoduje uszkodzenie modułów innych firm podczas udzielania porad. Informacje techniczne na temat bezpiecznego rozruchu znajdują się tutaj - wiki.ubuntu.com/SecurityTeam/SecureBoot . Osobiście nie zgadzam się z pozornie wszechobecną radą, aby obciąć bezpieczny rozruch, działa dobrze na moim sprzęcie z włączonym bezpiecznym uruchomieniem. IMO pozostawia włączony bezpieczny rozruch, chyba że masz z tym problem, nie ma powodu, aby ślepo wyłączać funkcje bezpieczeństwa.
Panther
8
Nie zagłębiłem się w to dogłębnie, ale jak rozumiem, 16.04 przechodzi do bardziej rygorystycznego wymuszania Bezpiecznego rozruchu niż 15.10 i wcześniejsze wersje. W szczególności w wersji 15.10 i wcześniejszej, gdy Shim uruchomi GRUB, GRUB uruchomi dowolne jądro Linuksa; zabezpieczenia Secure Boot kończą się GRUB. Rozumiem, że w wersji 16.04 wymuszanie zasad bezpiecznego rozruchu obejmuje jądro, więc GRUB Ubuntu nie będzie już uruchamiał niepodpisanych jąder. Jeśli wykracza poza to, wpłynie to również na niepodpisane moduły jądra, jeśli nie były wcześniej. Znów jednak nie zbadałem tego dogłębnie.
Rod Smith,
1
Ponieważ ludzie mają problemy ze swoimi systemami, próbując zainstalować moduły stron trzecich, zastanawiam się, czy ta funkcja nie przyniesie więcej szkody niż pożytku.
Daniel
Czy istnieje możliwość ponownego włączenia go po wyłączeniu?
shaunakde

Odpowiedzi:

38

To nie jest błąd, to funkcja.

Jak mówi Anthony Wong, kiedy instalujesz pakiet DKMS, sam go kompilujesz, dlatego Canonical nie może podpisać modułu za ciebie.

Jednak zdecydowanie możesz użyć Bezpiecznego rozruchu, ale jest to dokładnie przypadek, w którym Bezpieczny rozruch próbuje Cię chronić, ponieważ nie może wiedzieć, czy ufasz modułowi, czy nie.

Domyślnie na komputerze UEFI znajduje się klucz platformy (PK), który jest ostatecznie zaufanym urzędem certyfikacji do ładowania kodu do procesora.

GRUB, shim lub inne mechanizmy rozruchowe mogą być podpisane cyfrowo przez KEK, któremu ufa główny urząd certyfikacji (PK), a zatem komputer może, bez żadnej konfiguracji, uruchamiać oprogramowanie, takie jak Ubuntu Live USB / DVD.

W Ubuntu 16.04 jądro jest zbudowane z CONFIG_MODULE_SIG_FORCE = 1, co oznacza, że jądro wymusi podpisanie modułów przez zaufany klucz na platformie. Weź pod uwagę, że platforma UEFI domyślnie zawiera PK, nad którym nie masz kontroli, a zatem nie możesz podpisywać plików binarnych za pomocą klucza rozpoznawanego przez własny komputer.

Niektórzy walczą przeciwko temu, ale tak naprawdę nie ma lepszego sposobu (z punktu widzenia bezpieczeństwa) niż to, że sam zapisujesz nowy klucz.

Jeśli twój system rozruchowy używa shim, możesz użyć czegoś, co nazywa się bazą danych kluczy właściciela maszyny i zapisać swój klucz jako MOK (możesz to zrobić za pomocą mokutil). Jeśli tego nie zrobisz, możesz również zarejestrować swój klucz w bazie danych UEFI jako klucz podpisujący.

Po zarejestrowaniu klucza możesz podpisać swój pakiet DKMS przy pomocy MOK (powinien istnieć skrypt perla /usr/src/kernels/$(uname -r)/scripts/sign-file), a po podpisaniu możesz załadować go do jądra .

To prawda, że ​​ktoś powinien zrobić więcej wizualnych instrukcji na ten temat, a może nawet stworzyć kreatora lub lepszy standard DKMS, aby pozwolić na uwzględnienie kluczy, ale teraz to właśnie mamy.

Możesz zapoznać się z tym wyjaśnieniem, jak podpisywać własne moduły jądra: https://askubuntu.com/a/768310/12049

ssice
źródło
1
Wyłączyłem go, a teraz pojawia się irytujący komunikat „bootowanie w trybie niepewnym”. Czy można to cofnąć? Nie mogę nawet wyjaśnić tego problemu na forach tutaj. @ssice - Używam UBUNTU 14.04, więc nie sądzę, żeby to miało dla mnie znaczenie. [
shaunakde
20

Krótko mówiąc, nie jest to błąd, ale nowa zmiana wprowadzona w 16.04.

Ponieważ instalujesz pakiet dkms. Moduły DKMS są kompilowane na Twoim komputerze, więc firma Canonical nie może podpisać modułu za Ciebie. Jeśli Canonical nie może go podpisać, nie ma możliwości jego cyfrowej weryfikacji. Jeśli masz włączony bezpieczny rozruch, oznacza to, że moduł nie może być używany, a aby z niego skorzystać, musisz wyłączyć bezpieczny rozruch, dlatego pojawia się pytanie.

Dlatego, że dzieje się to dopiero w 16.04, ale nie w poprzednich wydaniach, Rod Smith udzielił dobrej odpowiedzi. W Ubuntu 16.04 Ubuntu zaczyna wymuszać bezpieczny rozruch do poziomu jądra. Przed 16.04 Ubuntu tak naprawdę nie wymusza używania podpisanego jądra i podpisanych modułów jądra, nawet jeśli masz włączony bezpieczny rozruch. Ale tak już nie jest w 16.04.

Jest to powiązany błąd: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1401532

Jest to powiązany plan: https://blueprints.launchpad.net/ubuntu/+spec/foundations-x-installing-unsigned-secureboot

Anthony Wong
źródło
Nadal mogłem załadować moduł WL 16.04 beta2 i po aktualizacji. Ale teraz wraz z wydaniem
pojawia
Czy możesz spróbować uruchomić: sudo apt install mokutil; sudo mokutil --disable-validation
Anthony Wong
1

Przyjęta odpowiedź jest bardzo kompletna, ale chciałbym dodać tę prostą informację, pobraną stąd:

https://askubuntu.com/a/843678/664391

Zasadniczo bezpieczny rozruch może uniemożliwić załadowanie zainstalowanego sterownika, co może być dość frustrujące. Sam przez to przeszedłem: sterownik poprawnie zainstalowany, wszystko wydawało się być w porządku, ale po prostu nie działało. Zajęło mi trochę czasu, aby stwierdzić, że bezpieczny rozruch uniemożliwia załadowanie go przez system operacyjny.

Dhiego Magalhães
źródło