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:
- Anda sendiri yang menandatangani kernel.
- Anda menggunakan kernel generik bertanda tangan yang sudah ditandatangani.
- 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.
- 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.
- 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"
- Konversikan kunci juga ke format PEM (mokutil membutuhkan DER, sbsign membutuhkan PEM):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
- 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.
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.
Verifikasi kunci Anda terdaftar melalui:
sudo mokutil --list-enrolled
- 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
- 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}
- Perbarui grub-config Anda
sudo update-grub
- 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).