Il semble qu’il y ait deux camps, le petit groupe de personnes qui se soucient de l’UEFI et tous les autres qui ne le remarquent pas ou ne s’en soucient pas tant que leur ordinateur fonctionne. Parlons donc de ce qu’est l’UEFI, comment il est né, à quoi il convient et pourquoi vous devriez (ou ne devriez pas) vous en soucier.
Qu’est-ce que l’UEFI ?
UEFI signifie Unified Extensible Firmware Interface, une norme détenue par une organisation connue sous le nom de United EFI Forum. Intel a sorti EFI (Extensible Firmware Interface) et a ensuite rendu la spécification publique sous le nom d’UEFI. En tant que spécification, les détails de mise en œuvre changent entre les fournisseurs et les fabricants, mais l’objectif est de présenter la structure standard et compréhensible d’un chargeur de démarrage de système d’exploitation. Cela rend beaucoup plus facile l’écriture d’un système d’exploitation car vous n’avez plus à vous soucier de toutes les tâches compliquées liées au démarrage du chipset.
Plusieurs IBV (Independent Bios Vendors) proposent leurs implémentations de l’UEFI que les OEM qui produisent des cartes mères peuvent autoriser et utiliser dans leurs produits. Quelques exemples seraient AMI, Phoenix et InSyde. Vous avez probablement vu leur logo ou simplement le texte de leur nom clignoter brièvement à l’écran avant que le système d’exploitation de votre choix ne démarre correctement.
Parlons de la façon dont UEFI démarre. Généralement, il y a quelques phases différentes. Nous disons généralement qu’il existe de nombreuses implémentations et que beaucoup d’entre elles font des choses hors spécifications. Il y a trois phases générales : Sécurité (SEC), initialisation pré-EFI (PEI) et environnement d’exécution de disque (DXE). Chacun est un mini système d’exploitation. Parce qu’Intel est celui qui a lancé EFI et l’a ensuite transformé en UEFI, une grande partie de la conception est basée sur le démarrage des processeurs Intel. D’autres plates-formes comme ARM pourraient ne pas faire grand-chose dans la phase SEC ou PEI.
Une fois les processeurs démarrés, PEI a officiellement commencé. Sur les systèmes Intel, il n’y a pas de RAM système dans la plupart des PEI. En effet, la mémoire doit être entraînée et les liens initialisés avant que le processeur ne puisse les utiliser. La poussée incessante pour une vitesse de plus en plus élevée de la RAM signifie que la RAM doit être testée, calibrée et configurée à chaque démarrage, car les différentes clés de RAM ont d’autres paramètres. De nombreux systèmes mettent en cache ces paramètres pour des temps de démarrage plus rapides, mais ils doivent souvent être invalidés et recyclés à mesure que la RAM vieillit. La PSP gère l’apprentissage de la mémoire et le chargement de l’UEFI sur certains systèmes AMD avant que le processeur x86 principal ne soit retiré de la réinitialisation. Pour les systèmes Intel, ils utilisent une astuce appelée XIP (exécuter sur place) qui transforme les différents caches en RAM temporaire. Il n’y a qu’une petite pile, une petite quantité d’espace de tas et aucune variable statique pour PEI. De nombreuses plates-formes de serveurs Intel s’appuient sur le contrôleur de gestion de carte (BMC) pour former la mémoire, car la formation de grandes quantités de mémoire prend très longtemps.
Après avoir initialisé la RAM et transféré le contenu du cache temporaire, nous passons à DXE. La phase DXE fournit deux types de services : le démarrage et l’exécution. Les services d’exécution sont destinés à être consommés par un système d’exploitation, des services tels que des variables non volatiles. Les services de démarrage sont détruits une fois que ExitBootServices est appelé (généralement par le chargeur du système d’exploitation), mais ce sont des services tels que la saisie au clavier et les pilotes graphiques. BDS (sélection du périphérique de démarrage) s’exécute dans DXE et permet au système de déterminer le lecteur à démarrer (disque dur, USB, etc.).
Cela a été une vue d’ensemble très dense et spécifique à x86. De nombreuses architectures telles que ARM évitent UEFI pour quelque chose comme coreboot, linuxboot ou LK, où il démarre un petit noyau Linux qui est ensuite kexec dans un noyau beaucoup plus grand. Cependant, de nombreuses plates-formes ARM peuvent également tirer parti de l’UEFI. Seul le temps nous dira dans quelle direction évolue l’industrie.
Comment c’est arrivé
En 2005, l’UEFI a entièrement remplacé l’EFI (Extensible Firmware Interface), le standard qu’Intel avait proposé quelques années auparavant. EFI a emprunté beaucoup de choses à Windows de cette période, les formats d’image PECOFF et UEFI, à son tour, a emprunté les pratiques d’EFI. Avant EFI, il y avait le bon vieux BIOS (Basic Input Output System). Le nom provient des systèmes IBM CP/M de 1975. À cette époque, le BIOS était un moyen pour le système de démarrer et de fournir une interface quelque peu uniforme pour les applications en fournissant des appels d’interruption BIOS. Les appels permettaient à un programme d’accéder aux entrées et sorties telles que les ports série, le RTC et le bus PCI. Phoenix et d’autres ont procédé à la rétro-ingénierie de l’interface propriétaire créée par IBM pour fabriquer des machines compatibles IBM, ce qui a finalement abouti à quelque chose de proche d’un standard.
Est-ce mieux que le BIOS ?
La plus grande plainte avec UEFI est qu’il s’agit d’une boîte noire fermée avec un accès inimaginable à votre ordinateur et qui reste résident après le démarrage de l’ordinateur. Le BIOS est attrayant car l’interface est bien connue et généralement non résidente. L’UEFI peut être mis à jour plus facilement, mais a également un besoin beaucoup plus vital de mises à jour. Une mise à jour UEFI peut entièrement bloquer votre système. Il ne démarre pas, et en raison des fusibles grillés sur l’appareil, il est presque physiquement impossible de le réparer, même pour le fabricant. Des quantités importantes de tests sont effectuées dans ces mises à jour, mais la plupart hésitent à pousser de nombreuses mises à jour en raison de la quantité de travail requise.
Pourquoi vous devriez ou ne devriez pas vous en soucier
En fin de compte, vous vous souciez de savoir si vous pouvez utiliser votre ordinateur pour les choses qui sont importantes pour vous. Qu’il s’agisse de jouer à un jeu, d’écrire un e-mail ou de créer un nouvel ordinateur, cela n’a pas d’importance tant que l’ordinateur fait ce que vous voulez. Et le démarrage n’est qu’une étape souvent oubliée pour y arriver. Si vous vous souciez de connaître chaque morceau de code exécuté par votre machine, vous devez vous attacher pour un long trajet. Il existe des sociétés telles que Librem qui se donnent beaucoup de mal pour s’assurer que des problèmes délicats comme l’initialisation de la mémoire s’exécutent dans des blobs non propriétaires. Vous pouvez toujours modifier l’UEFI, [Hales] étant un excellent exemple de peaufiner le BIOS d’un ordinateur portable à l’ancienne. Les outils open source pour inspecter et comprendre ce qui se passe sous le capot s’améliorent.
En fin de compte, c’est à vous de décider si vous vous souciez du processus de démarrage de votre appareil.