https://github.com/jakeday/linux-surface/blob/master/SIGNING.md , çekirdek imzalama hakkında daha spesifik talimatlara sahiptir (kabul edilen cevapta verilen aynı öğreticiden uyarlanmıştır). Talimatlar tam olarak aşağıdaki gibi çoğaltılır:
Güvenli Önyükleme için özel bir çekirdek imzalama
Talimatlar ubuntu içindir, ancak bootloader olarak shim ve grub kullanıyorlarsa diğer dağıtımlar için benzer şekilde çalışmalıdır. Dağıtımınız shim kullanmıyorsa (örn. Linux Foundation Preloader), imzalamayı tamamlamak için benzer adımlar olmalıdır (örneğin, LF Preloader için MokUtil yerine HashTool) veya bunun yerine kullanmak için shim yükleyebilirsiniz. Shim için ubuntu paketi çağrılır shim-signed
, ancak lütfen doğru bir şekilde nasıl kurulacağı konusunda kendinizi bilgilendirin, böylece bootloader'ınızı bozmazsınız.
Ubuntu'daki en son GRUB2 güncellemesi (2.02 + dfsg1-5ubuntu1) olduğundan, GRUB2 Güvenli Önyükleme etkin olduğu sürece artık imzasız çekirdekler yüklemiyor. Ubuntu 18.04 kullanıcıları grub-efi paketinin yükseltilmesi sırasında bu çekirdeğin imzalanmadığı ve yükseltme işleminin iptal edileceği konusunda bilgilendirilir.
Böylece bu sorunu çözmek için üç seçeneğiniz vardır:
- Çekirdeği kendiniz imzalarsınız.
- Dağıtımınızın imzalı, genel bir çekirdeğini kullanıyorsunuz.
- Güvenli Önyükleme'yi devre dışı bıraktınız.
İkinci ve üçüncü seçenek gerçekten uygun olmadığından, bunlar çekirdeği kendiniz imzalama adımlarıdır.
Ubuntu Blogundan uyarlanan talimatlar . Takip etmeden önce, lütfen / boot / EFI dizininizi yedekleyin, böylece her şeyi geri yükleyebilirsiniz. Kendi sorumluluğunuzdadır bu adımları izleyin.
- İmzalama anahtarını oluşturmak için yapılandırmayı oluşturun, mokconfig.cnf olarak kaydedin:
# 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"
Tüm parçaları ayrıntılarınıza göre ayarlayın.
- Çekirdeği imzalamak için genel ve özel anahtarı oluşturun:
openssl req -config ./mokconfig.cnf \
-new -x509 -newkey rsa:2048 \
-nodes -days 36500 -outform DER \
-keyout "MOK.priv" \
-out "MOK.der"
- Anahtarı da PEM formatına dönüştürün (mokutil DER, sbsign PEM gerektirir):
openssl x509 -in MOK.der -inform DER -outform PEM -out MOK.pem
- Anahtarı şim kurulumunuza kaydedin:
sudo mokutil --import MOK.der
Sizden bir şifre istenecektir, sadece bir sonraki adımda anahtar seçiminizi onaylamak için kullanacaksınız, bu yüzden herhangi birini seçin.
Sisteminizi yeniden başlatın. MOKManager adlı bir aracın mavi ekranıyla karşılaşacaksınız. "MOK Kaydet" i ve ardından "Görünüm tuşu" nu seçin. 2. adımda oluşturduğunuz anahtarın olduğundan emin olun. Daha sonra işleme devam edin ve 4. adımda verdiğiniz şifreyi girmeniz gerekir. Sisteminizi önyüklemeye devam edin.
Anahtarınızın şu yolla kaydedildiğini doğrulayın:
sudo mokutil --list-enrolled
- Kurulu çekirdeğinizi imzalayın (/ boot / vmlinuz- [KERNEL-VERSION] -yüzey-linux-yüzeyde olmalıdır):
sudo sbsign --key MOK.priv --cert MOK.pem /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface --output /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface.signed
- İmzasız çekirdeğin initramını kopyalayın, böylece imzalı çekirdek için bir initramımız var.
sudo cp /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{,.signed}
- Grub-config'inizi güncelleyin
sudo update-grub
- Sisteminizi yeniden başlatın ve imzalı çekirdeği seçin. Önyükleme çalışıyorsa, imzasız çekirdeği kaldırabilirsiniz:
sudo mv /boot/vmlinuz-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo mv /boot/initrd.img-[KERNEL-VERSION]-surface-linux-surface{.signed,}
sudo update-grub
Şimdi sisteminiz imzalı bir çekirdek altında çalışmalı ve GRUB2 yükseltmesi tekrar çalışıyor. Özel çekirdeği yükseltmek istiyorsanız, yedinci adımdan itibaren yukarıdaki adımları izleyerek yeni sürümü kolayca imzalayabilirsiniz. Böylece MOK tuşlarını YEDEKLEME (MOK.der, MOK.pem, MOK.priv).