Session 8: Android File System 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/25 www.utbm.fr
Sommaire 1 Rappels sur les systèmes de fichiers 2 Android File System 3 Les fichiers spéciaux 4 Les systèmes de fichiers virtuels 5 Le système de fichiers minimal 6 Questions? 3/25 www.utbm.fr
Sommaire 1 Rappels sur les systèmes de fichiers 2 Android File System 3 Les fichiers spéciaux 4 Les systèmes de fichiers virtuels 5 Le système de fichiers minimal 6 Questions? 4/25 www.utbm.fr
Rappels Les systèmes de fichiers permettent d organiser ses données à l aide de fichiers ou de répertoires Sur les sytèmes UNIX, ils se présentent sous forme d une hiérarchie avec la racine étant / Un système de fichiers est monté à un emplacement spécifique Si celui-ci est monté dans un répertoire, son contenu reflète le contenu du média Si démonté, le point de montage (le répertoire) est vide Ce mécanisme assure l accès facile aux données quelque soit leur média 5/25 www.utbm.fr
Rappels (2) Après création du point de montage, on utilise la commande mount/umount pour monter/démonter le système de fichiers La commande mount Permet de monter un système de fichiers mount -t <type> <device> <point de montage> <type> représente le type de système de fichiers : ext2, ext3... <device> représente le média dont on veut accéder au contenu. Cela peut être un média physique où un emplacement réseau <point de montage> représente le répertoire dans lequel on souhaite monter (voir) les fichiers/répertoires du média La commande lancée sans argument liste les différents systèmes de fichiers montés 6/25 www.utbm.fr
Rappels (3) Pour démonter un système de fichier, on utilise la commande umount umount <point de montage> Utilisée lors du reboot ou avant de débrancher un média, elle permet de finaliser les écritures de données sur le média / correspond au système de fichiers root au niveau le plus haut de l arborescence de fichiers Le système de fichiers root est le premier monté et nécessite une commande spéciale Il est monté par le kernel via l option root=%s Sans système de fichiers root ou ramdisk, on assiste à un Kernel Panic 7/25 www.utbm.fr
Rappels (4) Le système de fichiers root peut être monté à partir : D un disque dur ou d une clé USB : root=/dev/sdxy, X étant la lettre attribuée au device et Y l identifiant numérique de la partition D une carte SD : root=/dev/mmcblkxpy, X étant l identifiant du device et Y le numéro de la partition D une partition de NAND Flash ou d un péiphérique similaire : root=/dev/mtdblockx où X est le numéro de partition Depuis le réseau à travers le protocole NFS : root=/dev/nfs Depuis la mémoire en utilisant un système de fichiers préchargé (initramfs) : root=/dev/ram0 Seul l installateur/administrateur décide de la meilleure stratégie à adopter dans le choix du système de fichiers root 8/25 www.utbm.fr
Sommaire 1 Rappels sur les systèmes de fichiers 2 Android File System 3 Les fichiers spéciaux 4 Les systèmes de fichiers virtuels 5 Le système de fichiers minimal 6 Questions? 9/25 www.utbm.fr
Le système de fichiers Android La plupart des distributions GNU/Linux actuelles respecte une norme appelée Filesystem Hierarchy Standard ou FHS http://fr.wikipedia.org/wiki/filesystem_hierarchy_ Standard Définit les principaux répertoires et leur contenu : /bin pour les binaires /boot pour tout ce qui est relatif au boot... Android de son côté fonctionne de la manière suivante : De base, il stocke ses données dans des répertoires non mentionnés par la FHS Si un répertoire cité dans la FHS doit être utilisé, Android va respecter ce que la norme indique en terme de contenu pour ce répertoire 10/25 www.utbm.fr
Le système de fichiers Android (2) Deux répertoires principaux dans le système de fichiers Android /system qui contient tous les binaires natifs, les librairies Java... En gros, il contient l intégralité du système, des données figées. Celui-ci est en read-only (incorruptible en cas de problème d alimentation) /data qui va contenir toutes les données liées aux applications et au périphérique. Ces données peuvent être amenées à changer durant la vie du périphérique. Ce répertoire est accessible en read-write Ils sont montés dans deux points de montage (partitions) séparés Cela n empêche pas Android d utiliser quelques répertoires définis dans la FHS : /proc /dev /mnt... Le contenu de ces répertoires respectant ce qui est défini dans la FHS 11/25 www.utbm.fr
Contenu de /system./app : les applications préinstallées du système./bin : les binaires du système./etc : fichiers de configuration./fonts : fontes pour les polices./framework : ensemble des fichiers Jar du framework Java Android./lib : les librairies du système./modules : les modules du noyau./xbin : les binaires externes 12/25 www.utbm.fr
Divers Android respecte de manière générale la FHS Cependant, quelques exceptions existent /etc /sbin Même dans le cas de ces exceptions, Android essaye de respecter la norme au mieux permettant ainsi d avoir une distribution Linux tournant à côté avec quelques modifications mineures android filesystem config.h Contient la configuration complète (UID/GID, permissions...) du système de fichiers En-tête C localisé sous system/core/include/private Traité au moment de la compilation Utilisé à différents endroits. Exemple : ADB 13/25 www.utbm.fr
Sommaire 1 Rappels sur les systèmes de fichiers 2 Android File System 3 Les fichiers spéciaux 4 Les systèmes de fichiers virtuels 5 Le système de fichiers minimal 6 Questions? 14/25 www.utbm.fr
Les fichiers spéciaux Un des buts du noyau est de permettre l accès au matériel aux applications Dans Linux, utilisation des fichiers spéciaux ( Device Files ) au niveau user space de deux types : Character Block Au niveau du noyau, ils sont identifiés par un triplet d informations Type (character ou block) Major (la catégorie du matériel) Minor (son identifiant) /dev permet l interface kernel/user space via les IOCTL (contrôles des entrées/sorties) 15/25 www.utbm.fr
Les fichiers spéciaux (2) Block devices Représente des devices de blocs de taille fixe qui peuvent être lus et écrits bloc par bloc (bdev) : clé USB, disque dur... Character devices Représente des devices de taille non définie qui peuvent être lus caractère par caractère (cdev) : une console série Un device qui n est pas un block device est représenté par un character device au niveau noyau Dans Linux, tout étant fichier, pour représenter ces différentes notions, on utilise les fichiers spéciaux Stocké sous /dev avec l information sur le type, le major et le minor Le major/minor permettent au Kernel de faire le lien entre un nom de fichier (/dev/ttys0) et le driver qui l implémente Accessible en utilisant l API normale de manipulations de fichiers 16/25 www.utbm.fr
Les fichiers spéciaux (3) Exemple sur un système Linux $ l s l / dev / t t y S 0 / dev / t t y 1 / dev / sda1 / dev / sda2 / dev / z e r o brw rw 1 r o o t d i s k 8, 1 2011 05 27 0 8 : 5 6 / dev / sda1 brw rw 1 r o o t d i s k 8, 2 2011 05 27 0 8 : 5 6 / dev / sda2 crw 1 r o o t r o o t 4, 1 2011 05 27 0 8 : 5 7 / dev / t t y 1 crw rw 1 r o o t d i a l o u t 4, 64 2011 05 27 0 8 : 5 6 / dev / t t y S 0 crw rw rw 1 r o o t r o o t 1, 5 2011 05 27 0 8 : 5 6 / dev / z e r o Exemple de code accédant à un fichier spécial (ici une console série) // s e r i a l p o r t i n t f d ; f d = open ( / dev / t t y S 0, O RDWR) ; w r i t e ( fd, H e l l o, 5) ; c l o s e ( f d ) ; 17/25 www.utbm.fr
Les fichiers spéciaux (4) Sous un Linux basique, ces fichiers nécessitent d être créés mknod /dev/<device> [c/b] major minor Besoin des droits super utilisateur. La cohérence entre la création manuelle et le noyau est à la charge du développeur système Sur les distributions plus avancées, il existe des mécanismes plus élaborés devtmpfs udev (aujourd hui fusionné et intégré à systemd) mdev Sous Android, sont utilisés init ueventd 18/25 www.utbm.fr
Sommaire 1 Rappels sur les systèmes de fichiers 2 Android File System 3 Les fichiers spéciaux 4 Les systèmes de fichiers virtuels 5 Le système de fichiers minimal 6 Questions? 19/25 www.utbm.fr
Les systèmes de fichiers virtuels Correspond à /proc Existe depuis les débuts de Linux Contient : Des statistiques sur les process en cours que le noyau renseigne. Très utile pour ps et top Certains paramètres du système que l utilisateur peut ajuster durant l exécution comme par exemple la gestion de l énergie mount -t proc nodev /proc Documentation disponible : Documentation/filesystems/proc.txt au niveau du noyau man proc :) 20/25 www.utbm.fr
Les systèmes de fichiers virtuels (2) Quelques exemples sous /proc /proc/ pid du process pour des détails sur un processus /proc/interrupts, /proc/ioports pour des informations générales sur les devices /proc/cmdline pour la command line du kernel (très utile) /proc/sys pour ajuster les paramètres du noyau Un autre exemple de système de fichiers virtuel : sysfs Permet d exposer aux applications la vision du kernel par rapport aux périphériques du système Très utile pour leur détection et utilisation par d autres applications/démons comme udev par exemple Monté dans /sysfs : mount -t sysfs nodev /sys Remplace de plus en plus /proc 21/25 www.utbm.fr
Sommaire 1 Rappels sur les systèmes de fichiers 2 Android File System 3 Les fichiers spéciaux 4 Les systèmes de fichiers virtuels 5 Le système de fichiers minimal 6 Questions? 22/25 www.utbm.fr
Le système de fichiers minimal Un minimum d applications sont requises pour qu un système Linux puisse démarrer correctement Une application init qui va être appelée par le kernel juste après le montage du système de fichiers root. Un Kernel Panic se produit si non trouvée. init va démarrer le reste des services et applications Un shell pour permettre l interaction avec l utilisateur Des applications basiques de gestion/manipulations des fichiers Tous ces composants doivent être intégrés au système de fichiers root pour permettre l usage du système 23/25 www.utbm.fr
Sommaire 1 Rappels sur les systèmes de fichiers 2 Android File System 3 Les fichiers spéciaux 4 Les systèmes de fichiers virtuels 5 Le système de fichiers minimal 6 Questions? 24/25 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 25/25 www.utbm.fr