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