vmlinuz-4.18.12-041812-generic ma nieprawidłowy podpis

15

Zaktualizowałem dzisiaj swoje jądro za pomocą ukuu i od tego czasu nie mogę się uruchomić, ponieważ dostaję te błędy:

error: /boot/vmlinuz-4.18.12-041812-generic has invalid signature
error: you need to load the kernel first

Mam podwójny rozruch z Windows 10 i Ubuntu 18.10 (dzisiaj uaktualniony)

Aktualizacja: Udało mi się uruchomić do starszego jądra, które wybrałem z „Zaawansowane opcje dla Ubuntu” w Grub

Ale muszę zaktualizować swoje jądro i jeśli to zrobię, nadal mam ten sam problem ...

Nadav Shabtai
źródło
Ten sam problem występuje teraz po aktualizacji oprogramowania układowego mojego Lenovo T480 i nie rozumiem, dlaczego starsze jądra nadal działają.
user205301,

Odpowiedzi:

5

Zamiast podpisywania jądra, o którym mowa, właśnie wyłączyłem Bezpieczny rozruch w menu BIOS / UEFI mojego laptopa.

Zazwyczaj możesz wejść do menu, naciskając specjalny klawisz podczas rozruchu , możesz google dla konkretnego urządzenia lub może być nawet wyświetlany na ekranie podczas rozruchu.

xjcl
źródło
Dzięki! Właśnie zaktualizowałem BIOS i zapomniałem go wyłączyć!
Lucas Bustamante
To działa dla mnie!
Jonathan
5

https://github.com/jakeday/linux-surface/blob/master/SIGNING.md zawiera bardziej szczegółowe instrukcje dotyczące podpisywania jądra (dostosowane z tego samego samouczka połączonego z zaakceptowaną odpowiedzią). Instrukcje zostały odtworzone w następujący sposób:

Podpisywanie niestandardowego jądra dla bezpiecznego rozruchu

Instrukcje dotyczą Ubuntu, ale powinny działać podobnie dla innych dystrybucji, jeśli używają shim i grub jako bootloadera. Jeśli twoja dystrybucja nie używa podkładki dystansowej (np. Linux Foundation Preloader), powinieneś wykonać podobne kroki, aby ukończyć podpisywanie (np. HashTool zamiast MokUtil dla LF Preloader) lub możesz zainstalować podkładkę shim, aby jej użyć. Nazywa się pakiet ubuntu dla shim shim-signed, ale proszę się dowiedzieć, jak go poprawnie zainstalować, aby nie zepsuć programu ładującego.

Od najnowszej aktualizacji GRUB2 (2.02 + dfsg1-5ubuntu1) w Ubuntu, GRUB2 nie ładuje już niepodpisanych jąder, o ile włączony jest Bezpieczny rozruch. Użytkownicy Ubuntu 18.04 zostaną powiadomieni podczas aktualizacji pakietu grub-efi, że to jądro nie jest podpisane i aktualizacja zostanie przerwana.

Zatem masz trzy opcje rozwiązania tego problemu:

  1. Sam podpisujesz jądro.
  2. Używasz podpisanego, ogólnego jądra swojej dystrybucji.
  3. Wyłączasz bezpieczny rozruch.

Ponieważ opcje druga i trzecia nie są tak naprawdę wykonalne, oto kroki do samodzielnego podpisania jądra.

Instrukcje dostosowane z bloga Ubuntu . Przed rozpoczęciem wykonaj kopię zapasową katalogu / boot / EFI, aby móc przywrócić wszystko. Wykonaj te kroki na własne ryzyko.

  1. Utwórz konfigurację, aby utworzyć klucz podpisu, zapisz jako mokconfig.cnf:
# This definition stops the following lines failing if HOME isn't
# defined.
HOME                    = .
RANDFILE                = $ENV::HOME/.rnd 
[ req ]
distinguished_name      = req_distinguished_name
x509_extensions         = v3
string_mask             = utf8only
prompt                  = no

[ req_distinguished_name ]
countryName             = <YOURcountrycode>
stateOrProvinceName     = <YOURstate>
localityName            = <YOURcity>
0.organizationName      = <YOURorganization>
commonName              = Secure Boot Signing Key
emailAddress            = <YOURemail>

[ v3 ]
subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid:always,issuer
basicConstraints        = critical,CA:FALSE
extendedKeyUsage        = codeSigning,1.3.6.1.4.1.311.10.3.6
nsComment               = "OpenSSL Generated Certificate"

Dopasuj wszystkie części do swoich szczegółów.

  1. Utwórz klucz publiczny i prywatny do podpisywania jądra:
openssl req -config ./mokconfig.cnf \
        -new -x509 -newkey rsa:2048 \
        -nodes -days 36500 -outform DER \
        -keyout "MOK.priv" \
        -out "MOK.der"
  1. Konwertuj klucz również na format PEM (mokutil wymaga DER, sbsign potrzebuje PEM):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
  1. Zapisz klucz do instalacji shim:
sudo mokutil --import MOK.der

Zostaniesz poproszony o hasło, użyjesz go tylko do potwierdzenia wyboru klucza w następnym kroku, więc wybierz dowolny.

  1. Uruchom ponownie system. Spotkasz niebieski ekran narzędzia o nazwie MOKManager. Wybierz „Zarejestruj MOK”, a następnie „Wyświetl klucz”. Upewnij się, że to klucz utworzony w kroku 2. Następnie kontynuuj proces i musisz wprowadzić hasło podane w kroku 4. Kontynuuj uruchamianie systemu.

  2. Sprawdź, czy Twój klucz jest zarejestrowany przez:

sudo mokutil --list-enrolled
  1. Podpisz zainstalowane jądro (powinno to być na / boot / vmlinuz- [KERNEL-VERSION] -surface-linux-surface):
sudo sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface --output /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface.signed
  1. Skopiuj initram jądra niepodpisanego, więc mamy również initram dla podpisanego.
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
  1. Zaktualizuj swoją grub-config
sudo update-grub
  1. Uruchom ponownie system i wybierz podpisane jądro. Jeśli bootowanie działa, możesz usunąć niepodpisane jądro:
sudo mv /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo mv /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo update-grub

Teraz twój system powinien działać pod podpisanym jądrem, a aktualizacja GRUB2 działa ponownie. Jeśli chcesz zaktualizować niestandardowe jądro, możesz łatwo podpisać nową wersję, wykonując powyższe kroki od kroku siódmego. W ten sposób ZAPASUJ klucze MOK (MOK.der, MOK.pem, MOK.priv).

prusswan
źródło
Znakomita odpowiedź, nie mogłem tam dotrzeć sam z instrukcjami ubuntu
User632716
Świetny skrót do zmiany nazwy i zastąpienia plików postfiksami.
Tom
1

Rozwiązałem problem po tym samouczku, aby podpisać plik / boot / vmlinuz w celu bezpiecznego rozruchu. Zwróć uwagę na ostatnią część samouczka

Nadav Shabtai
źródło
6
Czy możesz podać szczegółowe informacje na temat rozwiązania tego problemu? Mam absolutnie ten sam błąd, ale nie rozumiem, co muszę zrobić zgodnie ze wspomnianym samouczkiem.
Slon
Nie pamiętam teraz, postaram się wam pomóc później tego dnia, jeśli nadal będzie to istotne
Nadav Shabtai
Jest to również istotne dla mnie. Mam ten sam problem
Vitalii Diravka
Właśnie to znalazłem, ja też tego potrzebuję
Mitch Talmadge
1
To wydaje się być „odpowiedzią tylko na link”. Edytuj pytanie i podaj kilka szczegółów, aby pomóc innym użytkownikom, którzy mają ten sam problem. Dzięki!
mchid