Cela est dû au fait que le microprogramme Lenovo ne prend pas en charge EFI_VARIABLE_APPEND_WRITE. L'un des développeurs de shim a déjà réécrit MokManager.efi pour qu'il fonctionne sur les machines Lenovo concernées, mais on ne sait pas combien de temps cela prendra pour fusionner et tirer vers le bas par Ubuntu. Vous pouvez suivre le problème sur le suiveur de problème github de shim here.
Si vous ne pouvez pas attendre (coupable selon la charge), vous pouvez compiler et tester vous-même.
Si vous n'avez pas git
, gnu-efi
, libnss3-tools
et pesign
vous aurez besoin de les installer en premier (plus d'informations sur la mise en place d'un environnement de développement EFI se trouvent here, j'utilise une assez nouvelle installation d'Ubuntu 16,04, mais il est possible que je l'ai installé requis autres bibliothèques/outils et oublié à leur sujet - il suffit de regarder les erreurs lors de la compilation et installer les paquets manquants comme neccesary):
sudo apt-get install git gnu-efi libnss3-tools pesign
Ensuite, clone la branche du dépôt git avec le patch:
cd /src
git clone -b fix-lenovo-write https://github.com/lcp/shim.git
cd shim
Ensuite, vous devrez modifier le Makefile (les développeurs shim n'utilisent pas Ubuntu)
gedit Makefile
Effectuez les modifications suivantes (crédit à cette post):
-OBJCOPY_GTE224 = $(shell expr `$(OBJCOPY) --version |grep ^"GNU objcopy" | sed 's/^.version //g' | cut -f1-2 -d.` \>= 2.24)
+#OBJCOPY_GTE224 = $(shell expr `$(OBJCOPY) --version |grep ^"GNU objcopy" | sed 's/^.version //g' | cut -f1-2 -d.` \>= 2.24)
+OBJCOPY_GTE224 = 1
-LIB_PATH = /usr/lib64
+LIB_PATH = /usr/lib
-EFI_PATH := /usr/lib64/gnuefi
+EFI_PATH := /usr/lib
Ensuite, vous » ll faut commenter une variable inutilisée dans shim.c:
gedit shim.c
Faites le changement suivant à la ligne 1118:
@@ -1118,7 +1118,7 @@ static EFI_STATUS handle_image (void *data, unsigned int datasize,
EFI_STATUS efi_status;
char *buffer;
int i;
- unsigned int size;
+ //unsigned int size;
EFI_IMAGE_SECTION_HEADER *Section;
char *base, *end;
PE_COFF_LOADER_IMAGE_CONTEXT context;
cale Compile:
make
Désactiver démarrage sécurisé temporairement:
sudo mokutil --disable-validation
Définissez votre mot de passe , redémarrez et suivez les instructions tions pour désactiver le démarrage sécurisé (le mot de passe est difficile, il vous demande d'entrer certains caractères du mot de passe plutôt que le tout).
sauvegarde MokManager.efi et vérifiez qu'il est sauvegardé:
sudo mv /boot/efi/EFI/ubuntu/MokManager.efi /boot/efi/EFI/ubuntu/MokManager.efi.bak
sudo ls /boot/efi/EFI/ubuntu/
Déplacez votre version patchée de MokManager à la partition EFI.
sudo mv ./MokManager.efi.signed /boot/efi/EFI/ubuntu/MokManager.efi
Inscrivez votre clé (modifier si nécessaire en fonction de l'endroit où vous saisissez est et ce qu'il porte le nom):
sudo mokutil --import MOK.der
Définir mot de passe, redémarrez et suivez les instructions pour s'inscrire MOK. Il devrait réussir sur les machines Lenovo maintenant.
Revert à la version originale de sécurité-boot MokManager et renable:
sudo mv /boot/efi/EFI/ubuntu/MokManager.efi ./MokManager.efi.signed
sudo mv /boot/efi/EFI/ubuntu/MokManager.efi.bak /boot/efi/EFI/ubuntu/MokManager.efi
sudo mokutil --enable-validation
Définir mot de passe, redémarrage, suivez les instructions.
Signer vos modules, les charger avec modprobe et profitez-en!
Note: J'espère que cela sera officiellement corrigé dans la plupart des dépôts de la distribution assez bientôt. Cette réponse est une option pour les personnes exceptionnellement impatientes qui sont à l'aise de construire le patch depuis la source et de le tester. Cela a marché sur ma machine (Lenovo P50) mais cela ne veut pas dire que ça marchera pour tout le monde. Si vous n'êtes pas à l'aise avec la création d'applications efi à partir de la source, attendez que la version patché atteigne les repos (à quel moment je mettrai à jour cette réponse).
J'ai déposé un bug contre 'mokutil' ici: https://bugs.launchpad.net/ubuntu/+source/mokutil/+bug/1600452 et contre' shim' ici https://github.com/rhinstaller/ shim/issues/55 – adempewolff
Cela a déjà été corrigé par un développeur shim (je l'ai testé et ça marche). J'ai mis à jour ma réponse en conséquence. – adempewolff