Session 4: Android Bootloader LO52 - Automne 2014 Fabien BRISSET 2 mai 2014 fabien.brisset@utbm.fr www.utbm.fr
Droits de reproduction Copyright 2013-2014, Fabien Brisset, Copyright 2004-2014, Free Electrons (Maxime Ripard) License : Creative Commons Attribution - Share Alike 3.0 http://creativecommons.org/licenses/by-sa/3.0/fr Document original : Android System Development Vous êtes libre de : Partager : reproduire, distribuer et communiquer l oeuvre Remixer : adapter l oeuvre D utiliser cette oeuvre à des fins commerciales Selon les conditions suivantes : Attribution : vous devez attribuer l oeuvre de la manière indiquée par l auteur de l oeuvre ou le titulaire des droits. Partage dans les mêmes conditions : si vous modifiez, transformez ou adaptez cette oeuvre, vous n avez le droit de distribuer votre création que sous une licence identique ou similaire à celle-ci. N importe laquelle de ces conditions peut être levée si vous avez l autorisation du titulaire des droits. Votre utilisation équitable et autres droits ne sont en aucune manière affectés par ce qui a été cité ci-dessus. 2/16 www.utbm.fr
Sommaire 1 Définition d un bootloader 2 Fonctionnement d un bootloader sur une plateforme embarquée 3 Fastboot 4 Questions? 3/16 www.utbm.fr
Sommaire 1 Définition d un bootloader 2 Fonctionnement d un bootloader sur une plateforme embarquée 3 Fastboot 4 Questions? 4/16 www.utbm.fr
Principes généraux Un chargeur d amorçage (ou bootloader) est un logiciel permettant de lancer un ou plusieurs systèmes d exploitation (multi-boot), c est à dire qu il permet d utiliser plusieurs systèmes, à des moments différents, sur la même machine. Source : Wikipédia 5/16 www.utbm.fr
Principes généraux (2) Globalement, le bootloader est responsable de : L initialisation du matériel Démarrage du Kernel avant l initialisation de l OS Le chargement et l exécution du Kernel Certains bootloaders (Uboot, UEFI, Grub2...) offrent aussi un Shell : Possibilité d initialiser des variables. Exemple : les bootargs pour Uboot Possibilité d exécuter des commandes spécifiques 6/16 www.utbm.fr
Sommaire 1 Définition d un bootloader 2 Fonctionnement d un bootloader sur une plateforme embarquée 3 Fastboot 4 Questions? 7/16 www.utbm.fr
Bootloader sur plateforme embarquée Séquence de démarrage de type 1 A l alimentation, le CPU exécute du code à une adresse fixe Nécessite une mémoire flash NOR accessible à l adresse où le CPU commence à exécuter des instructions Bootloader programmé dans la NOR à cette adresse NOR nécessaire car elle permet les accès aléatoires pas comme la NAND Peu utilisée sur les smartphones actuels mais très utilisé sur d autres types de périphériques 8/16 www.utbm.fr
Bootloader sur plateforme embarquée Séquence de démarrage de type 2 Le processeur a un code de boot intégré dans la ROM Ce boot code charge un premier bootloader d un espace de stockage dans une SRAM interne Ce premier bootloader : Est limité en taille pour des contraintes matérielles Est fourni soit par le vendeur du processeur ou des projets externes Le premier bootloader initialise la DRAM et les autres périphériques matériels et charge un second bootloader en RAM Couramment utilisée notamment avec les SoC OMAP N.B : il existe aussi la possibilité de booter directement sur SD/UART/USB en lieu et place de la NOR/NAND 9/16 www.utbm.fr
Sommaire 1 Définition d un bootloader 2 Fonctionnement d un bootloader sur une plateforme embarquée 3 Fastboot 4 Questions? 10/16 www.utbm.fr
Fastboot Protocole défini par Google pour Android pour communiquer avec les bootloaders par USB Utilisation de la commande fastboot Nécessaire pour la certification Google et l accès aux Google Apps Protocole restreint avec seulement 10 commandes Protocole synchrone et piloté par la machine hôte Permet : Transfert de données Le flashage des différentes partitions du système Récupérer des variables du bootloader Contrôler la séquence de démarrage 11/16 www.utbm.fr
Fastboot (2) 12/16 www.utbm.fr
Fastboot (3) Exemples de commandes update <filename> : update le device avec l archive passée an paramètre flashall : flashe les partitions boot, recovery et system flash <partition> [<filename>] : flasher la partition passée en premier paramètre avec l image passée en second erase <partition> : effacer une partition flash format <partition> : formater une partition flash getvar <variable> : afficher la valeur de la variable passée en argument boot <kernel> [<ramdisk>] : télécharger et démarrer sur le kernel (et ramdisk) passé(s) en argument(s) flash:raw boot <kernel> [<ramdisk>] : créer une image de démarrage à partir du kernel (et ramdisk) passé(s) en argument(s) et la flasher sur la partition boot devices : lister tous les périphériques connectés en fastboot 13/16 www.utbm.fr
Fastboot (4) Exemples de commandes continue : continuer avec le boot du device reboot : rebooter le device normalement reboot-bootloader : rebooter le device en bootloader help : afficher l aide Exemples de variables fastboot version : version de fastboot utilisé version-bootloader : version du bootloader product : nom du produit serialno : numéro de série du produit 14/16 www.utbm.fr
Sommaire 1 Définition d un bootloader 2 Fonctionnement d un bootloader sur une plateforme embarquée 3 Fastboot 4 Questions? 15/16 www.utbm.fr
Références Android System Development Maxime Ripard (Free Electrons) Embedded Android Karim Yaghmour chez O Reilly A la découverte d Android série d articles écrits par Benjamin Zores pour GNU/Linux Magazine France Android Device Porting Walkthrough présentation de Benjamin Zores à l Android Builder Summit 2012 Dive Into Android Networking - présentation de Benjamin Zores à l Embedded Linux Conference Europe 2012 16/16 www.utbm.fr