web-dev-qa-db-fra.com

Utilisation d'efibootmgr pour faire du lecteur une priorité de démarrage permanente sans réorganiser l'ordre de démarrage complet

J'essaie d'écrire un script qui s'exécute sur initramfs qui utilise efibootmgr pour définir de manière permanente la priorité de démarrage la plus élevée sans avoir à réaffecter l'ordre de démarrage.

efibootmgr -n 000A par exemple est parfait pour cela car il définit le lecteur 000A comme priorité de démarrage mais pour le prochain démarrage uniquement. efibootmgr -o nécessite que nous listions tous les lecteurs et réassignions leur ordre, ce qui complique le script car je devrais récupérer ces valeurs et les analyser à nouveau à la commande efibootmgr pour les réorganiser.

Existe-t-il un moyen de modifier la priorité de démarrage lorsque je n'ai qu'à référencer le lecteur de celui que j'essaie de prioriser plutôt que de réécrire la hiérarchie?

3
Shiri

Réponse courte: Non.

Réponse longue: Tout d'abord, comprenez que EFI ne démarre pas les "lecteurs", sauf dans certains sens limités ou dans des circonstances limitées. Les entrées de démarrage les plus couramment utilisées révélées par efibootmgr sont pour les programmes de chargeur de démarrage EFI, qui sont stockés sous forme de fichiers ordinaires sur l'ESP. Cela peut sembler une distinction subtile, mais essayer de résoudre votre problème sans le comprendre est susceptible d'entraîner un buggy et/ou une solution limitée.

L'analyse de la sortie efibootmgr sera probablement nécessaire pour faire ce que vous voulez faire. Cela ne devrait pas vraiment être très difficile; comprendre quelques commandes courantes utilisées dans les scripts Bash, comme grep et cut, vous prendra beaucoup de temps.

Alternativement, si votre objectif est de restaurer un ordre de démarrage perdu à cause d'un EFI buggé, vous pouvez consulter le fallback.efi programme. AFAIK, il n'est pas disponible dans Ubuntu, mais il est livré avec Fedora. Ce programme restaurera un ensemble de variables de démarrage NVRAM à partir d'un fichier en cas de perte. Il est destiné à être placé dans le EFI/BOOT et lancé depuis Shim (qui le lance automatiquement), de sorte que les entrées de démarrage du firmware seront restaurées en cas de perte. Cette approche a quelques problèmes, comme l'encombrement du ESP avec encore plus de fichiers et la création de nouveaux cerceaux à travers lesquels vous devez sauter si vous voulez changer les entrées de démarrage, mais c'est peut-être ce dont vous avez besoin.

1
Rod Smith