Contexte et objectifs

La série présentée sur kevinboone.me s’adresse aux développeurs Linux expérimentés qui souhaitent écrire des programmes bare‑metal destinés à des ordinateurs équipés d’un firmware UEFI. Aucun prérequis en matière d’UEFI n’est supposé, ce qui implique que le lecteur doit d’abord acquérir les notions de base du modèle d’exécution fourni par le firmware. L’objectif principal est de démontrer, pas à pas, comment transformer un poste de travail Linux en chaîne de production capable de générer un exécutable qui démarre directement sur le matériel, sans système d’exploitation intermédiaire.

Environnement de développement

Le guide indique les outils logiciels indispensables : un compilateur C/C++ disponible sous Linux (généralement gcc), un éditeur de liens (ld) et des utilitaires de conversion d’objets (objcopy) capables de produire le format binaire requis par UEFI, à savoir le PE/COFF. Ces outils sont déjà présents dans la plupart des distributions, ce qui évite d’introduire des dépendances externes. Le choix d’un environnement Linux repose sur la disponibilité de chaînes d’outils robustes et sur la facilité d’automatiser les étapes de compilation via des scripts shell.

Compilation, édition de liens et format binaire

Les articles détaillent la procédure de compilation et d’édition de liens adaptée à un contexte bare‑metal. Le code source est d’abord traduit en objets ELF, puis le linker les regroupe en un unique fichier PE/COFF compatible avec le chargeur UEFI. Cette conversion est cruciale : UEFI attend un exécutable au format PE, contenant les sections .text, .data et les tables d’exportation nécessaires à l’appel des services du firmware. L’absence de système d’exploitation impose que le programme gère lui‑même l’initialisation du processeur, la configuration de la pile et la récupération de la table de configuration UEFI (EFI_SYSTEM_TABLE).

Création du support de démarrage et gestion des fichiers

Une fois le binaire produit, le guide explique comment le placer sur un disque bootable. UEFI requiert un système de fichiers FAT32 contenant le fichier exécutable nommé BOOTX64.EFI (ou l’équivalent selon l’architecture). La création du support passe par le formatage du support en FAT32, la copie du binaire et, le cas échéant, la mise en place d’un répertoire EFI/BOOT. La section « basic file management » montre comment manipuler ces fichiers depuis Linux, en utilisant des outils standards comme mkfs.fat et mount. Enfin, l’avertissement final rappelle que chaque article s’appuie sur les informations du précédent ; la progression linéaire garantit que les concepts de chaîne d’outils, de format PE et de structure de disque sont consolidés avant d’aborder des sujets plus avancés comme la gestion de la mémoire ou les services UEFI supplémentaires.