2 votes

Pourquoi mon firmware uefi ignore-t-il l'ordre de démarrage ?

Mon Toshiba Tecra R950 supporte UEFI, en grande partie. Il dispose d'un bon vieux système de paramètres de microprogrammes bleus en texte qu'il appelle "BIOS", plutôt que de la configuration graphique fantaisiste dont disposent la plupart des systèmes UEFI. Le menu d'ordre de démarrage (que ce soit dans la configuration ou lorsque je l'affiche au moment du démarrage en appuyant sur F12) ne permet pas de sélectionner les systèmes d'exploitation, seulement les périphériques. Le système semble être incapable de démarrer à moins que la partition efi ne contienne un chargeur de repli à /efi/boot/bootx64.efi - bien que d'après ce que j'ai lu, cela ne devrait être nécessaire que pour les volumes amovibles.

Le système Linux efibootmgr peut être utilisé pour accéder ou modifier la priorité de démarrage efi (en termes de système d'exploitation à charger en premier) mais le firmware ignore ce que vous avez défini ici lorsqu'il démarre et s'appuie sur la priorité matérielle définie dans la configuration du BIOS/firmware et utilise le chargeur de secours trouvé sur le premier volume accessible. La seule exception à cette règle semble être lors de la reprise depuis S4 (hibernation), il regarde soudainement cette liste et démarre le premier chargeur là plutôt que le chargeur de secours.

S'agit-il simplement d'une mauvaise implémentation de l'UEFI ? Est-il possible d'avoir un BIOS hybride/UEFI avec seulement un support limité des fonctionnalités UEFI ? Puisque mon système semble savoir comment gérer la priorité de démarrage lors de la reprise à partir de S4, y a-t-il un moyen de le faire fonctionner en général ?

2voto

Rod Smith Points 20483

Réponse courte : D'après votre description, je pense que votre micrologiciel est défectueux.

Réponse longue : Tout d'abord, la spécification EFI (ou UEFI, qui n'est qu'EFI 2.x) dit que NOTHING sur les interfaces utilisateurs. Ainsi, vous pouvez construire une interface utilisateur EFI en mode texte qui est toujours 100% conforme à la spécification EFI/UEFI. Le BIOS n'a pas de spécification officielle, mais il y a eu des tentatives d'utilitaires de configuration graphique pour les BIOS. Ainsi, vous ne devriez pas utiliser un utilitaire de configuration graphique, ou son absence, comme un indicateur pour savoir si quelque chose est un EFI ou un BIOS, ou de la façon dont une implémentation est "complète". Le plaisir des yeux n'est absolument pas pertinent pour le sujet et pour votre question.

À titre d'information, de nombreux fabricants appellent leurs EFI des BIOS. À mon avis, il s'agit d'une mauvaise pratique, car elle crée une confusion dans l'esprit des utilisateurs quant à la distinction entre le BIOS traditionnel de 16 bits et les EFI modernes de 32 ou 64 bits, qui sont des systèmes de gestion de l'information. très différents dans les détails les plus importants.

Cela dit, la spécification EFI est assez claire sur le fait que les variables de l'ordre de démarrage (qui sont définies via la fonction efibootmgr dans Linux) devrait être honoré. Si votre firmware ignore ces variables, alors il est en violation de la spécification. Malheureusement, ces violations restent affreusement courantes, même si elles étaient plus courantes il y a quelques années. Une recherche rapide sur Google suggère que votre modèle pourrait avoir été introduit en 2012, il n'est donc pas surprenant qu'il dispose d'un EFI ancien et défectueux. Vous pourriez vouloir vérifier le site Web de Toshiba pour voir s'il y a une mise à jour du micrologiciel disponible. Cela pourrait ou non réparer quelque chose, mais cela vaut vraiment la peine de vérifier.

Vous pouvez également essayer d'utiliser un autre outil que efibootmgr comme EasyUEFI dans Windows ou bcfg dans un EFI Shell. En théorie, n'importe lequel de ces outils devrait faire l'affaire. En pratique, j'ai observé que efibootmgr échoue parfois lorsque d'autres outils fonctionnent.

Quant aux "BIOS/UEFI hybrides", ils existent bel et bien. J'en connais deux grandes catégories :

  • EFI au sommet du BIOS -- La spécification EFI ne couvre pas certaines des fonctions d'initialisation matérielle de plus bas niveau. Pour gérer cette tâche, certaines des premières EFI pour x86/x86-64, telles que L'EFI hybride de Gigabyte, utilisait un BIOS traditionnel, plaçant l'EFI "au-dessus" de celui-ci. Ma seule expérience avec cela (décrite dans le lien) a été douloureuse, mais cela peut avoir plus à voir avec l'implémentation qu'avec l'approche générale. AFAIK, cette approche a été abandonnée en faveur d'un autre code d'initialisation du matériel qui s'interface mieux avec l'EFI au-dessus.
  • EFI verrouillé dans le CSM -- Le Compatibility Support Module (CSM) est une fonction EFI optionnelle qui permet à l'EFI de démarrer les anciens chargeurs de démarrage en mode BIOS. J'ai entendu des affirmations selon lesquelles certains "BIOS" des dernières années d'ordinateurs basés sur des BIOS utilisaient en fait des EFI avec leur CSM activé en permanence. De tels ordinateurs ne pouvaient pas démarrer de la manière normale de l'EFI, et ils ressemblaient exactement à des ordinateurs ordinaires basés sur le BIOS. Je ne sais pas à quel point cette pratique était courante, cependant, et en fait je n'ai jamais vérifié si cette affirmation était vraie -- cela pourrait être une légende urbaine. Une telle configuration est certainement théoriquement possible, qu'un tel micrologiciel ait été écrit ou non.

Aucune de ces approches n'expliquerait votre problème, qui semble être mieux décrit comme un EFI mal fichu.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X