web-dev-qa-db-fra.com

Boot UEFI cassé, comment procéder en toute sécurité?

J'ai un ordinateur portable qui démarre Windows 10 (mise à niveau à partir de Windows 8.1) et mon système d'exploitation principal, Ubuntu 14.04. J'avais le système configuré pour le démarrage UEFI et jusqu'à ce matin, tout fonctionnait bien.

J'ai utilisé Windows hier soir pour quelque chose, ce qui est rare sur cette machine. Ce matin, l'ordinateur a démarré directement dans Windows. Comme je soupçonnais Windows de jouer avec les paramètres de démarrage, j'ai utilisé 'escape' au démarrage pour sélectionner manuellement le lecteur sur lequel mon programme d'installation est installé.

La partition par défaut grub/boot que l'ordinateur vérifie d'abord aux points de démarrage directement au démarrage de Windows maintenant - pas de menu grub. Heureusement, j'ai utilisé la réparation de démarrage lors de l'installation initiale et j'ai sélectionné l'option permettant aux autres partitions du premier secteur de pointer vers la partition grub/boot. Lorsque j'ai sélectionné la partition racine, le BIOS m'a informé qu'il n'était pas sécurisé.

Avant de réfléchir, je suis entré dans le BIOS, j'ai désactivé le démarrage sécurisé et essayé de démarrer à partir de la partition racine. GRUB s'est bien passé, j'ai donc choisi Ubuntu et je suis arrivé à l'écran de mot de passe de LUKS.

À ce stade, je pensais que désactiver le démarrage sécurisé et essayer de charger Ubuntu pouvait être une erreur. Après tout, quel est le but de l’UEFI si elle est désactivée, le deuxième problème est lié à un chargeur d’amorçage signé qui fonctionne parfaitement?

Je ne sais pas trop quelle est la bonne façon de procéder en toute sécurité. Est-il possible de restaurer Ubuntu sans démarrer de manière non sécurisée? Suggestions?

-Merci

1
Joe

Je souhaite aborder certaines idées fausses dans votre question avant de passer à une réponse plus directe à votre argument principal. S'il vous plaît supporter avec moi ....

La partition par défaut grub/boot que l'ordinateur vérifie d'abord aux points de démarrage directement au démarrage de Windows maintenant

Sur un ordinateur basé sur EFI, les chargeurs d’amorçage sont stockés sous forme de fichiers ordinaires sur la partition système EFI (ESP). L’ordinateur sait le ou les fichiers à lancer lorsqu’il démarre, à cause des entrées stockées dans la NVRAM, qui identifient la (les) partition (s) et le (s) fichier (s) à exécuter. Il n’existe pas de "partition par défaut ... de démarrage" sous EFI; C’est ainsi que le BIOS démarre, pas EFI.

J'ai utilisé la réparation de démarrage lors de l'installation initiale et j'ai sélectionné l'option permettant aux autres partitions du premier secteur de pointer vers la partition grub/boot.

Sous EFI, les "secteurs de démarrage" n'existent pas. Pour être plus précis, le code de démarrage n'est pas stocké dans les premiers secteurs de disques ou de partitions. Tout est géré par le biais de fichiers et référencé par des entrées dans la NVRAM.

Lorsque j'ai sélectionné la partition racine, le BIOS m'a informé qu'il n'était pas sécurisé.

Vous n'avez pas sélectionné de partition. vous avez sélectionné un fichier de chargeur de démarrage. D'après votre description, je suppose que vous avez sélectionné EFI/ubuntu/grubx64.efi sur votre ESP. Cela commence à arriver au problème, mais je reviendrai sur ce point ...

Je suis entré dans le BIOS

Vous n'avez pas de BIOS; vous avez un EFI. Je sais que beaucoup de personnes, et même les fabricants, qualifient les EFI de BIOS, mais cela crée une confusion, car cela encourage les utilisateurs à faire des suppositions dans le BIOS concernant le processus de démarrage, comme vous l'avez fait.

Je pensais que désactiver le démarrage sécurisé et essayer de charger Ubuntu pouvait être une erreur. Après tout, quel est le but de l’UEFI si elle est désactivée, le deuxième problème est lié à un chargeur d’amorçage signé qui fonctionne parfaitement?

Ne confondez pas EFI (ou UEFI, qui est juste EFI 2.x) et Secure Boot. Le démarrage sécurisé n'est qu'une fonctionnalité optionnelle de UEFI. EFI, à son tour, est un remplacement du BIOS. De nombreux EFI (et même des UEFI) manquent de prise en charge de Secure Boot - mais le démarrage sécurisé nécessite UEFI.

Je ne sais pas trop quelle est la bonne façon de procéder en toute sécurité. Est-il possible de restaurer Ubuntu sans démarrer de manière non sécurisée? Suggestions?

Pour prendre en charge le démarrage sécurisé, Ubuntu utilise un programme appelé Shim. Dans Ubuntu, son nom de fichier est shimx64.efi. Shim est codé en dur pour lancer GRUB (grubx64.efi), qui peut ensuite appeler Shim pour authentifier les noyaux Linux.

Notez que j'ai écrit précédemment que vous avez probablement lancé grubx64.efi. Cela fonctionnera correctement avec le démarrage sécurisé désactivé. Toutefois, si vous activez le démarrage sécurisé, il est probable que grubx64.efi ne corresponde pas aux exigences par défaut de Secure Boot. Il échouera donc. shimx64.efi, OTOH, est signé par Microsoft (dont les clés sont présentes sur à peu près tous les ordinateurs) et fonctionnera donc. C’est la clé (solution non souhaitée, mais c’est le meilleur mot) pour la solution: Reconfigurez votre système pour démarrer via Shim. Vous pouvez le faire dans Ubuntu en utilisant l'utilitaire efibootmgr. Tout d’abord, affichez les options disponibles à l’aide de Sudo efibootmgr -v:

$ Sudo efibootmgr -v
BootCurrent: 0000
Timeout: 0 seconds
BootOrder: 0000,0007,0003,2003,0001,2001,2002
Boot0000* ubuntu    HD(2,1f4800,82000,5f6b4992-fcfe-4a2c-9e67-98b0a30dfe7d)File(\EFI\ubuntu\shimx64.efi)
Boot0001* Lenovo Recovery System    HD(3,276800,1f4000,de3b7563-97f5-48c6-ab7f-2f5d6d57c644)File(\EFI\Microsoft\Boot\LrsBootMgr.efi)RC
Boot0002* EFI Network 0 for IPv4 (08-9E-01-FF-CA-4D)    ACPI(a0341d0,0)PCI(1c,0)PCI(0,0)MAC(089e01ffca4d,0)IPv4(0.0.0.0:0<->0.0.0.0:0,0, 0RC
Boot0003* ubuntu    HD(2,1f4800,82000,5f6b4992-fcfe-4a2c-9e67-98b0a30dfe7d)File(\EFI\ubuntu\grubx64.efi)RC
Boot0004* EFI Network 0 for IPv6 (08-9E-01-FF-CA-4D)    ACPI(a0341d0,0)PCI(1c,0)PCI(0,0)MAC(089e01ffca4d,0)030d3c000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000RC
Boot0007* Windows Boot Manager  HD(2,1f4800,82000,5f6b4992-fcfe-4a2c-9e67-98b0a30dfe7d)File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................

Ce n’est qu’un exemple, et le vôtre sera probablement très différent. Notez cependant qu'il existe deux entrées ubuntu, l'une faisant référence à shimx64.efi et l'autre à grubx64.efi. Il est probable que vous démarrez via l'entrée grubx64.efi, comme indiqué sur la ligne BootCurrent. L'entrée grubx64.efi figure probablement en premier sur la ligne BootOrder. Pour changer cela, vous devez créer une nouvelle BootOrder en utilisant l'option -o sur efibootmgr, comme dans:

Sudo efibootmgr -o 0000,0007

Vous pouvez également ajouter d'autres options que l'ordinateur utilisera en cas d'échec des deux premières. Bien sûr, vous devez spécifier les numéros associés à vos entrées Shim et GRUB, et non à 0000,0007 (sauf s’il s’agit de chiffres). Notez également que j'ai d'abord spécifié l'entrée Shim avec l'entrée GRUB comme solution de repli en cas d'échec; en théorie, spécifier seulement l'entrée Shim devrait fonctionner correctement. Il est préférable d’inclure votre valeur actuelle BootCurrent en tant que seconde option (ou ultérieure), car vous savez que cela fonctionne avec le démarrage sécurisé désactivé. De cette façon, si vous faites une erreur ou si votre binaire Shim est cassé, vous devriez toujours pouvoir désactiver Secure Boot et revenir à votre système de travail en utilisant le gestionnaire de démarrage intégré à l'ordinateur ou en ajustant l'ordre de démarrage dans un autre façon.

Ceci fait, redémarrez votre firmware et réactivez Secure Boot. Cela devrait fonctionner correctement à partir de ce moment.

7
Rod Smith