3. parti çekirdek modüllerini kurarken veya bir çekirdek güncellemesinden sonra neden “Gerekli anahtar kullanılamıyor” alıyorum?


79

Bu sorun yalnızca Güvenli Önyükleme etkin olan UEFI sistemlerinde gerçekleşir.

VirtualBox, Nvidia veya Broadcom sürücüleri gibi DKMS modüllerini kurmaya çalıştığımda kurulum yapmıyorlar ve Required key not availabledenediğimde alıyorum modprobe.

VirtualBox vboxdrvyüklenmediğinden şikayet ediyor .

Broadcom wlsürücüsü lspci -kbir çekirdek modülü olarak gösteriliyor ancak kullanılmıyor. sudo modprobe wlatar Required key not available.

Ayrıca, bu durum git kaynaklardan bazı çekirdek modülleri kurduğumda ortaya çıkabilir.

Bu sorun bir çekirdek güncellemesinden sonra devre dışı bırakılmış kablosuz adaptör, yeniden başlatmanın ardından siyah ekran gibi görünebilir.

Nasıl düzeltebilirim?


Yanıtlar:


85

Ubuntu çekirdeği 4.4.0-20'den beri, EFI_SECURE_BOOT_SIG_ENFORCEçekirdek config etkinleştirildi. Bu, UEFI Secure Boot etkin olduğunda imzasız üçüncü taraf modülleri yüklemeyi önler.

Bu sorunu çözmenin en kolay yolu UEFI (BIOS) ayarlarında Güvenli Önyüklemeyi devre dışı bırakmaktır .

Çoğu durumda grub menüsünü kullanarak UEFI ayarlarına girebilirsiniz. Açılışta ESCdüğmesine basın , grub menüsüne girin ve Sistem Kurulumu'nu seçin. Güvenli Önyükleme seçeneği, UEFI'nin "Güvenlik" veya "Önyükleme" bölümünde olmalıdır.

Doğrudan UEFI'ye girebilirsiniz, ancak bu donanımınıza bağlıdır. Oraya nasıl gidileceğini görmek için bilgisayar kılavuzunuzu okuyun. Bu olabilir Del, ya da F2çizme, ya da başka bir şey.

Alternatif bir yol kullanarak Güvenli Önyüklemeyi devre dışı bırakmaktır mokutil.

Ubuntu çekirdeği 4.4.0-21.37 oluşturduğundan bu, çalıştırılarak düzeltilebilir

sudo apt install mokutil
sudo mokutil --disable-validation

Bir şifre oluşturmak gerekecektir. Şifre en az 8 karakter uzunluğunda olmalıdır. Yeniden başlattıktan sonra UEFI, güvenlik ayarlarını değiştirmek isteyip istemediğinizi soracak. "Evet" i seçin.

Ardından, daha önce oluşturulmuş şifreyi girmeniz istenecektir. Bazı UEFI bellenimi, şifrenin tamamını değil, 1., 3., vb. Gibi bazı karakterleri girmenizi ister. Dikkatli olun. Bazı insanlar bunu anlamıyor. Ben de ilk denemeden alamadım ;-)

Güncelleme: Şimdi bu çekirdek config, desteklenen tüm Ubuntu çekirdeklerinde etkinleştirildi. Ubuntu 16.04, 15.10 ve 14.04 etkilenir.


Bu benim için çalışmıyor. @Sputnik cevap veriyor. Yine de mokutil'in neden bir şifre istediğini ve ne zaman ihtiyacım olduğunu bilmek istiyorum.
Alwin Kesler

8
@AlwinKesler MOK veritabanındaki değişiklikler gerçekten yapılmadan önce, yeniden başlattıktan sonra doğrulayacağı bir şifre ister. Bu olmadan, sahte işlem MOK veritabanındaki anahtarları bir sonraki yeniden başlatmadan sonra etkili olacak şekilde değiştirebilir. Ayrıca, platform, değişikliği talep eden kişinin, yeniden başlatma sonrasında fiziksel olarak mevcut olan kişi olduğunu ve bu nedenle, makineye fiziksel erişime sahip olma ve önyükleme süresi sistem şifresini bilme gibi donanım güvenlik önlemlerini geçtiğini 'biliyor' .
zwets

@ Pilot6: Bazı teknik sorunlar nedeniyle hala Ubuntu 14.04 LTS'deyim. Cevabı güncellediğiniz için teşekkür ederiz.
Ravi Joshi,

3
Benim için Ubuntu 18.04'te çalıştı. Nvidia sürücülerini kurmanın neden hiçbir şekilde, hatta 16.04'e geri dönerek çalışmadığını benim hayatım boyunca çözemedi. Gah! Bu düzeltti. Çok fazla zaman harcandı.
Nate

1
Ubuntu sistemim gerçekten çok çirkindi. Bu yepyeni bir dizüstü bilgisayar olduğundan beri hiçbir anlamı yoktu. Şimdi CPU'nun her şeyi yaptığını ve ekran kartımın sürekli boşta olduğunu fark ettim. Bu bağlantı aynı zamanda yardımcı oldu - linuxbabe.com/ubuntu/install-nvidia-driver-ubuntu-18-04
Peter Drinnan

32

User @zwets tarafından önerildiği gibi , burada (düzenleme ile) bir yanıtı kopyalıyorum :

4.4.0-20 sürümünden beri, imzasız çekirdek modüllerinin Güvenli Önyükleme etkinken çalışmasına izin verilmeyecekti. Güvenli Önyükleme'yi sürdürmek ve ayrıca bu modülleri çalıştırmak istiyorsanız , bir sonraki mantıksal adım bu modülleri imzalamaktır .

Öyleyse deneyelim.

  1. İmzalama anahtarları oluşturun

    openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/"
    
  2. Modülü imzala

    sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 ./MOK.priv ./MOK.der /path/to/module
    

Not 1 : Tek bir sürücü / modül için imzalanacak birden fazla dosya /path/to/moduleolabilir ; bu nedenle $(modinfo -n <modulename>), örneğin$(modinfo -n vboxdrv)

Not 2 : mevcut sudo kmodsign sha512 ./MOK.priv ./MOK.der /path/to/moduledeğilse bir alternatiftir sign-file.

  1. Anahtarları Güvenli Önyükleme'ye kaydedin

    sudo mokutil --import MOK.der
    

    Yeniden başlattıktan sonra kullanmak için bir şifre girin

  2. Rebootve MOK Kaydetme (Makine Sahibi Anahtarı) talimatlarını izleyin. İşte resimlerle bir örnek . Sistem bir kez daha yeniden başlatılacak.

Anahtar doğru bir şekilde kaydedilmişse, altında görünecektir sudo mokutil --list-enrolled.

Modüllerin Ubuntu 16.04'te bu şekilde çalışacaksa lütfen bana bildirin (çekirdeğin 4.4.0-21, sanırım).

Kaynaklar: Modül imzalamanın Fedora ve Ubuntu uygulaması için ayrıntılı web sitesi makalesi . (üzerinde çalışıyorlardı) ;-)

Ek kaynak: Her seferinde kendi kullanımım için bir bash betiği oluşturdum virtualbox-dkmsve böylece imzalı modüllerin üzerine yazdım . Benim göz atın vboxsignGitHub'dan aslen .

Güvenlik için ekstra not (ekstra) bilinçli: ;-)

Yarattığınız özel anahtar ( MOK.privbu örnekte), erişimi olan herkes tarafından kullanılabildiğinden, güvenliğini sağlamak iyi bir uygulamadır. Bunu yapabilir chmod, şifreleyebilir ( gpg) veya güvenli bir yere saklayabilirsiniz (r). Veya bu yorumda belirtildiği gibi , -nodes1 numaralı adımdaki seçeneği kaldırın . Bu, şifreyi bir parola ile şifreleyecektir.


Ubuntu 14.10'da, anahtarın önceden kaydedilmesine ve sürücünün imzalanmasına rağmen, kaynaktan derlenmiş bir broadcom sürücüsü kurmaya çalışırken 'gerekli anahtarın bulunmadığını' görmeye devam ettim . Doğrulamanın devre dışı bırakılması işe yaradı.
Mark,

1
Bu benim için VirtualBox ve Ubuntu 16.04 için çalıştı.
YtvwlD

1
Adım 3'te aşağıdaki hatayı alıyorum: "Bu sistemde EFI değişkenleri desteklenmiyor". "dmesg" efi girdisi yok ("dmesg | grep efi" hiçbir sonucu yok) Başka ne yapabilirim? Thanks
musbach

Bu yolu $ ile değiştirebilirsiniz (modinfo -n modulename)
Shane

Buradaki Ubuntu 18.04'te, talpa_syscallhook.ko modülü için insmod, bu modülü imzaladığım halde, Sophos AV için aynı dizindeki diğer tüm modülleri ve Sophos AV için sadece gerekli olmadıklarını söyleyerek devam ediyor. Tüm mok anahtarlarını listelediğimde görebildiğim için anahtar başarıyla kaydedildi. Nasıl devam edeceğine dair bir fikrin var mı?
Fran Marzoa

6

BIOS'ta Güvenli Önyükleme'yi (UEFI) aşağıdaki adımlarla devre dışı bırakabilirsiniz:

  1. Makinenizi yeniden başlatın ve BIOS Menüsüne girin (Benim durumumda F2'ye basın)

  2. Güvenli Önyükleme'yi arayın ve Eski Olarak değiştirin

Bir ASUS anakartında:

  • Gelişmiş Moda Git (F7)
  • Boot bölümünün altındaki Secure Boot seçeneğine gidin
  • "Diğer işletim sistemi" ile "Windows UEFI modunu" değiştirin
  • Ayarları uygulamak için kaydet ve yeniden başlat (F10)

2
Güvenli Önyükleme ve "Eski" farklı ayarlardır.
Pilot6

Ancak, UEFI yerine "eski önyükleme" etkinse, bu Güvenli Önyüklemenin etkin olmamasını gerektiriyor mu?
Supernormal

@Supernormal, evet, anladığım şey bu.
Sputnik

3

Ayrıca, imzalı çalışan Güvenli Önyüklemeyi Devre Dışı Bırakabilirsiniz sudo update-secureboot-policy. Bu wiki sayfası bu yöntemi açıklar:

  • Bir terminal açın (Ctrl + Alt + T) ve sudo update-secureboot politikasını yürütün ve ardından Evet'i seçin.
  • 8 ila 16 hane arasında geçici bir şifre girin. (Örneğin, 12345678, daha sonra bu şifreyi kullanacağız.
  • Onaylamak için aynı şifreyi tekrar girin.
  • Sistemi yeniden başlatın ve mavi ekranı gördüğünüzde herhangi bir tuşa basın (MOK yönetimi)
  • Güvenli Önyükleme durumunu değiştir
  • 2. Adımda seçtiğiniz şifreyi girin ve Giriş düğmesine basın.
  • Shim imzalı Güvenli Önyükleme'yi devre dışı bırakmak için Evet'i seçin.
  • İşlemin tamamını tamamlamak için Enter tuşuna basın.

Güvenli Önyükleme'yi yine imzalı imzalı olarak etkinleştirebilirsiniz. Sadece yürü

sudo update-secureboot-policy --enable ve sonra yukarıdaki adımları izleyin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.