vmlinuz-4.18.12-041812-generic memiliki tanda tangan tidak valid

15

Saya meningkatkan kernel hari ini dengan ukuu, dan sejak itu saya tidak bisa boot karena saya mendapatkan kesalahan ini:

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

Saya memiliki dual boot dengan windows 10 dan ubuntu 18.10 (Di-upgrade hari ini)

Pembaruan: Saya berhasil boot ke kernel lama yang saya pilih dari "Opsi lanjutan untuk Ubuntu" di grub

Tetapi saya perlu memutakhirkan kernel saya dan jika saya melakukannya saya masih mendapatkan masalah yang sama ...

Nadav Shabtai
sumber
Saya mengalami masalah yang sama sekarang setelah memperbarui firmware Lenovo T480 saya dan saya tidak mengerti mengapa kernel lama masih berfungsi.
user205301

Jawaban:

5

Alih-alih menandatangani kernel yang dimaksud, saya hanya mematikan Boot Aman di menu BIOS / UEFI laptop saya.

Anda biasanya dapat masuk ke menu dengan menekan tombol khusus saat boot , Anda dapat google yang spesifik untuk perangkat Anda atau bahkan mungkin ditampilkan di layar saat boot.

xjcl
sumber
Terima kasih! Saya baru saja memperbarui BIOS saya dan lupa menonaktifkannya!
Lucas Bustamante
5

https://github.com/jakeday/linux-surface/blob/master/SIGNING.md memiliki instruksi yang lebih spesifik tentang penandatanganan kernel (diadaptasi dari tutorial yang sama yang ditautkan dalam jawaban yang diterima). Instruksi direproduksi secara lengkap sebagai berikut:

Menandatangani kernel khusus untuk Boot Aman

Instruksi untuk ubuntu, tetapi harus bekerja serupa untuk distro lain, jika mereka menggunakan shim dan grub sebagai bootloader. Jika distro Anda tidak menggunakan shim (mis. Linux Foundation Preloader), harus ada langkah-langkah serupa untuk menyelesaikan penandatanganan (mis. HashTool alih-alih MokUtil untuk LF Preloader) atau Anda dapat menginstal shim untuk digunakan sebagai gantinya. Paket ubuntu untuk shim dipanggil shim-signed, tetapi tolong informasikan diri Anda tentang cara menginstalnya dengan benar, sehingga Anda tidak mengacaukan bootloader Anda.

Karena pembaruan GRUB2 terbaru (2.02 + dfsg1-5ubuntu1) di Ubuntu, GRUB2 tidak memuat kernel yang tidak ditandatangani lagi, asalkan Boot Aman diaktifkan. Pengguna Ubuntu 18.04 akan diberi tahu selama pemutakhiran paket grub-efi, bahwa kernel ini tidak ditandatangani dan pemutakhiran akan dibatalkan.

Dengan demikian, Anda memiliki tiga opsi untuk menyelesaikan masalah ini:

  1. Anda sendiri yang menandatangani kernel.
  2. Anda menggunakan kernel generik bertanda tangan yang sudah ditandatangani.
  3. Anda menonaktifkan Boot Aman.

Karena opsi dua dan tiga tidak benar-benar layak, ini adalah langkah-langkah untuk menandatangani kernel sendiri.

Petunjuk diadaptasi dari Blog Ubuntu . Sebelum mengikuti, harap cadangkan direktori / boot / EFI Anda, sehingga Anda dapat memulihkan semuanya. Ikuti langkah-langkah ini dengan risiko Anda sendiri.

  1. Buat konfigurasi untuk membuat kunci penandatanganan, simpan sebagai 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"

Sesuaikan semua bagian dengan detail Anda.

  1. Buat kunci publik dan pribadi untuk menandatangani kernel:
openssl req -config ./mokconfig.cnf \
        -new -x509 -newkey rsa:2048 \
        -nodes -days 36500 -outform DER \
        -keyout "MOK.priv" \
        -out "MOK.der"
  1. Konversikan kunci juga ke format PEM (mokutil membutuhkan DER, sbsign membutuhkan PEM):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
  1. Daftarkan kunci untuk instalasi shim Anda:
sudo mokutil --import MOK.der

Anda akan diminta kata sandi, Anda hanya akan menggunakannya untuk mengonfirmasi pilihan kunci Anda pada langkah berikutnya, jadi pilih saja.

  1. Mulai ulang sistem Anda. Anda akan menemukan layar biru alat yang disebut MOKManager. Pilih "Daftarkan MOK" dan kemudian "Lihat kunci". Pastikan itu adalah kunci Anda yang Anda buat pada langkah 2. Setelah itu lanjutkan proses dan Anda harus memasukkan kata sandi yang Anda berikan pada langkah 4. Lanjutkan dengan mem-boot sistem Anda.

  2. Verifikasi kunci Anda terdaftar melalui:

sudo mokutil --list-enrolled
  1. Tandatangani kernel Anda yang terinstal (itu harus di / 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. Salin initram dari kernel yang tidak ditandatangani, jadi kami juga memiliki initram untuk kernel yang ditandatangani.
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
  1. Perbarui grub-config Anda
sudo update-grub
  1. Reboot sistem Anda dan pilih kernel yang ditandatangani. Jika proses booting berhasil, Anda dapat menghapus kernel yang tidak ditandai:
sudo mv /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo mv /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo update-grub

Sekarang sistem Anda harus berjalan di bawah kernel yang ditandatangani dan memutakhirkan GRUB2 berfungsi lagi. Jika Anda ingin memutakhirkan kernel khusus, Anda dapat masuk versi baru dengan mudah dengan mengikuti langkah-langkah di atas lagi dari langkah tujuh pada. Dengan demikian CADANGAN tombol MOK (MOK.der, MOK.pem, MOK.priv).

Prusswan
sumber
Tanggapan Ecxellent, saya tidak bisa sampai di sana dengan instruksi ubuntu saja
User632716
Pintasan hebat untuk mengganti nama dan menimpa file dengan postfix.
Tom
1

Saya memecahkan masalah saya setelah tutorial ini untuk menandatangani / boot / file vmlinuz untuk boot aman, cukup perhatikan bagian terakhir tutorial

Nadav Shabtai
sumber
6
Bisakah Anda memberikan beberapa informasi terperinci tentang penyelesaian masalah ini? Saya benar-benar memiliki kesalahan yang sama, tetapi saya tidak mengerti apa yang harus saya lakukan sesuai dengan tutorial yang disebutkan.
Slon
Saya tidak ingat sekarang, saya akan mencoba membantu Anda hari ini jika masih relevan
Nadav Shabtai
Itu juga relevan bagi saya. Saya memiliki masalah yang sama
Vitalii Diravka
Baru saja menemukan ini, saya juga membutuhkannya
Mitch Talmadge
1
Tampaknya ini "jawaban hanya tautan". Harap edit pertanyaan dan berikan beberapa detail untuk membantu pengguna lain yang memiliki masalah yang sama. Terima kasih!
mchid