U-Boot

Fiche logiciel à valider
  • Création ou MAJ importante : 21/09/12
  • Correction mineure : 21/09/12
  • Rédacteur de la fiche : Denis Coupvent-Desgraviers - Laboratoire de Physique de la Matière Condensée (CNRS, Ecole Polytechnique)
  • Responsable thématique : Dirk Hoffmann (Centre de Physique des Particules de Marseille (CPPM-IN2P3))
Mots-clés
Pour aller plus loin
  • Fiches logiciel PLUME connexes : BusyBox
Fiche en recherche de relecteurs
Cette fiche est en recherche de relecteurs. Si vous êtes intéressé(e)s, contactez-nous !

U-Boot : BIOS et chargeur de démarrage noyau pour système embarqué

Ce logiciel est en cours d'évaluation par la communauté PLUME. Si vous utilisez ce logiciel en production dans notre communauté, merci de déposer un commentaire.
Description
Fonctionnalités générales

U-Boot pour Universal Bootloader est un projet mené par l'entreprise allemande DENX Software.

U-Boot est à la fois un BIOS et un chargeur de démarrage noyau Linux pour cartes électroniques capables d'embarquer une distribution GNU/Linux. U-Boot comprend également un ensemble de commandes et de variables permettant une grande souplesse de la configuration initiale des cartes électroniques.

La partie BIOS de U-Boot permet de configurer le nom de la carte, les adresses IP de la carte, du DNS et de la passerelle, le masque réseau (netmask), l'adresse MAC du port Ethernet, l'initialisation du contrôleur mémoire, etc.

La partie chargeur de démarrage permet de configurer la façon la plus appropriée pour démarrer le système d'exploitation GNU/Linux embarqué. Par exemple, en phase de développement, il est coutumier de charger sur la carte le noyau Linux par TFTP puis de lancer son exécution afin de le tester en condition réelle. U-Boot va permettre également de communiquer au noyau un ensemble d'informations pour que celui-ci puisse, par exemple, monter son système de fichiers par NFS après la phase de démarrage.

Pour résumer, U-Boot est capable d'initialiser une carte électronique et de démarrer le système d'exploitation GNU/Linux depuis n'importe quel support : mémoire FLASH (NAND/NOR), mémoire RAM, carte SD, clé USB, réseau.

Autres fonctionnalités

U-Boot contient un certain nombre de variables pré-définies. Il est possible de définir des variables contenant une suite d'instructions. Il suffit alors de faire appel à la commande run "le-nom-de-la-variable" pour exécuter les instructions. Certaines commandes peuvent être abrégées.

U-Boot permet de lire et d'écrire dans différentes zones mémoire. Il peut aussi copier des images binaires de la RAM vers la mémoire FLASH.

Interopérabilité

U-Boot entre dans le cadre de la conception d'un système embarqué. C'est un élément indispensable pour pré-configurer et démarrer le système d'exploitation GNU/Linux. Il est possible de tester et de se familiariser avec le fonctionnement de U-Boot en l'émulant dans QEMU.

Contexte d'utilisation dans mon laboratoire/service

Mon laboratoire utilise une carte électronique embarquée pour piloter à distance un oscilloscope numérique sur une expérience scientifique de type RMN (Résonance Magnétique Nucléaire). Le chargeur de démarrage, le noyau Linux et l'ensemble du système de fichiers de la carte électronique ont été complètement ré-installés et personnalisés pour l'expérience scientifique. U-Boot est pleinement fonctionnel sur cette carte embarquée.

Limitations, difficultés, fonctionnalités importantes non couvertes

U-Boot s'installe sur des cartes électroniques pourvues de processeur PowerPC, ARM, MIPS, SH4, x86, etc...

Cependant, malgré le fait que U-Boot supporte un grand nombre de cartes embarquées, il est possible que celle avec laquelle vous travaillez ne puisse accueillir U-Boot.

Après téléchargement et décompression de l'archive contenant les sources de ce dernier, il convient de vérifier dans le répertoire /bord si la carte en votre possession possède déjà les fichiers de configuration pour accueillir U-Boot. Dans la négative, il faudra soit vous adresser à votre fabriquant/revendeur de carte soit de développer ou de télécharger sur Internet le fichier de configuration propre à votre carte.

Environnement du logiciel
Distributions dans lesquelles ce logiciel est intégré

U-Boot est le chargeur de démarrage de référence dans le monde de Linux embarqué. Bien sûr, il en existe bien d'autres. U-Boot est conçu pour fonctionner sur un grand nombre d'architectures différentes (x86, ARM, SH4, MIPS, ...). Il est aisément installable et configurable. Il est spécialisé dans le chargement et l'exécution du noyau Linux.

Plates-formes

U-Boot peut théoriquement fonctionner dans n'importe quelle carte électronique dotée de processeur ARM, x86, SH4, MIPS...

Autres logiciels aux fonctionnalités équivalentes
  • Grub - chargeur de démarrage Linux pour processeur x86
  • RedBoot - chargeur de démarrage Linux pour processeur ARM, PowerPC, SH4, MIPS...
  • ARMboot - chargeur de démarrage Linux pour processeur ARM
  • ppcboot - chargeur de démarrage Linux pour processeur PowerPC
  • YAMON - chargeur de démarrage Linux pour processeur MIPS
  • EtherBoot/gPXE - chargeur de démarrage Linux par le réseau Ethernet pour processeur x86
  • PXELinux - chargeur de démarrage Linux par le réseau Ethernet pour processeur x86
Environnement de développement
Type de structure associée au développement

Le projet est mené et développé par l'entreprise allemande DENX Software engineering. Toutes les sources sont sous licence GPLv2 ce qui les rend pleinement accessibles et modifiables.

Eléments de pérennité

Le projet existe depuis 2002. La communauté et le support sont réactifs.

Références d'utilisateurs institutionnels

En général, les revendeurs ou concepteurs de cartes électroniques embarquées installent U-Boot par défaut. Si ce n'est pas le cas, il y a fort à parier qu'un développeur a déjà adapté U-Boot pour la carte. En fouillant un peu sur Internet, il sera alors possible de dénicher le fichier de configuration indispensable au moment de lancer la compilation de U-Boot.

Voici ci-dessous une liste non-exhaustive de concepteurs/revendeurs français et étranger vendant leurs cartes avec U-Boot déjà installé.

  • France :

http://www.armadeus.com/francais/
http://www.pragmatec.net/Produits/produit_fr.htm
http://www.eukrea.com/
http://www.lextronic.fr/

  • Étranger :

http://www.acmesystems.it/
http://www.embeddedarm.com/index.php
http://www.friendlyarm.net/

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums

Il existe également une Foire Aux Questions (F.A.Q.) : http://www.denx.de/wiki/DULG/Faq

Documentation utilisateur

Toute la documentation est dans la langue de Shakespeare : http://www.denx.de/wiki/U-Boot/Documentation

Divers (astuces, actualités, sécurité)

Le chargeur de démarrage peut fonctionner sans lancer l'exécution du noyau Linux. Mais cela représente peu d'intérêt au vu de la finalité de sa fonction.

Contributions

Ce lien explique le processus de contribution : http://www.denx.de/wiki/U-Boot/DevelopmentProcess

Commentaires

Infos complémentaires

Il existe aussi Barebox, un dérivé de Uboot. Ces 2 bootloaders sont proposés dans le constructeur de distribution Buildroot.

J'utilise Uboot au CENBG sur le projet ALEA (Acquisition Linux Embarquée & Autonome).

J'ai recompilé ce bootloader pour certaines cartes afin d'augmenter leur fréquence de fonctionnement et d'intégrer les options de démarrage.

Merci pour la remarque

Si nous pouvons identifier un autre ("tiers") site qui utilise le logiciel, alors la fiche pourrait être relue et passer formellement en "logiciel validé par la communauté".
Toute indication et tout volontaire sont les bienvenus.