Il y a quelque mois je vous ai présenté l’association ED4free qui distribue des nano-serveurs éducatifs off-line EDbox basés sur Raspberry Pi. Aujourd’hui, ils proposent le même environnement logiciel et contenus, mais le support est un smartphone. Ce n’est pas très étonnant dans la mesure où à la base, le Raspberry Pi a été conçu à partir de composants de smartphone assemblés sur une carte de circuit imprimé (PCB).
Au sommaire :
- 1 ed4free : Des outils numériques éducatifs pour les pays en développement
- 2 EDphone
- 2.1 En synthèse
- 2.2 Présentation détaillée
- 3 Sources
ed4free : Des outils numériques éducatifs pour les pays en développement
EDphone
Cet article est la reproduction d’un article paru sur le blog ed4free, avec l’accord de l’auteur
En synthèse
Un EDphone est exactement la même chose qu’une EDbox mais sur smartphone durci (étanche, antichoc, batterie longue durée) et non pas sur Raspberry PI. On y retrouve le même environnement logiciel (Kiwix, Nextcloud, Moodle) et les mêmes contenus. Nous utilisons à ce jour une base Blackview.
L’utilisation d’un smartphone comme support matériel présente de nombreux avantages :
- L’intégration écran / serveur / batterie le rends bien plus maniable.
- L’OS Android et les connectivités natives (wifi, GSM) rendent son utilisation bien plus simple, notamment pour les fonctionnalités d’administrations comme l’ajout de contenus.
- Destiné à équiper des individus plutôt que des lieux, il peut devenir l’équipement professionnel d’un formateur, d’un référent numérique, d’un professeur, etc. Un cas d’usage est typiquement un professeur mettant ses supports de cours en téléchargement libre par wifi pendant son cours. Ainsi ses élèves repartent chez eux avec le cours et autres supports sur leurs smartphones.
- Son caractère a priori nomade et sa simplicité de connexion à internet faciliteront ultérieurement la remontée de logs d’usage qui permettront d’éditer des statistiques et tableaux de bord (prévu en 2022).
ED4free recherche des partenaires pour mener des pilotes d’EDphone sur quelques dizaines d’unité en environnement réel.
Présentation détaillée
1 Concept du Nano serveur éducatif sur Android
1.1 Les nano serveurs éducatifs
De nombreuses structures impliquées dans le domaine de l’éducation (entreprises, fondations, ONG, etc.) font appel à des Nano serveurs éducatifs, notamment dans les pays en développement où l’accès à internet n’est pas toujours possible. Ces Nano serveurs éducatifs sont des boitiers faisant fonction à la fois de point d’accès wifi et de serveur informatique hébergeant des services et contenus utiles pour l’éducation et la formation. Ainsi les utilisateurs (enseignants, élèves, étudiants, parents) s’y connectent en wifi avec un terminal (smartphone, PC, tablette) et accèdent aux services et contenus embarqués dans le nano serveur, sans avoir besoin d’internet.
D’un point de vue matériel, de nombreux nano serveurs éducatifs se basent sur des Raspberry PI, mais certains se basent sur d’autres matériels moins répandus.
Quasiment tous les nano serveurs éducatifs tournent sur système d’exploitation Linux.
Les services et contenus qu’on y trouve sont notamment :
- L’environnement logiciel de l’association suisse Kiwix et les nombreux contenus associés : Wikipédia, Vikidia, Bibliothèque Projet Gutenberg, etc.
- L’environnement logiciel de Learning Equality et les contenus associés, notamment Kalite (contenus Khan Academy).
- Le learning management system Moodle permettant de gérer des formations scénarisées.
- Un gestionnaire de fichier de fichier de type Nextcloud permettant d’ajouter très facilement des contenus sous forme de fichiers (PDF, vidéo, images, sons, livre epub, etc.).
Au-delà de cette liste non exhaustive, le fait que les nano serveurs se basent sur un système d’exploitation Linux leur permet d’héberger un grand nombre d’autres services, notamment tous ceux qui s’appuient sur Php, Mysql et Python.
Néanmoins, l’utilisation de ces nano serveurs se heurte à des difficultés que nous développerons dans le paragraphe « Avantages d’un nano serveur éducatif sur Android ».
1.2 Les nano serveurs éducatifs sur Android
Les nano serveurs éducatifs sur Android sont des nano serveurs hébergés, non plus sur Raspberry PI ni autres matériels spécifiques, mais sur un smartphone ou une tablette sous Android, lesquels conservent par ailleurs toutes leurs fonctionnalités.
S’appuyant sur une distribution Linux, précisément Debian 10 dans les modèles qui ont été réalisés, ils couvrent l’ensemble du périmètre fonctionnel des nano serveurs éducatifs décrits plus hauts, tout en présentant un grand nombre d’avantages.
2 Avantages du Nano serveur éducatif sur Android versus autre Nano serveur
2.1 Avantages en termes d’utilisation
Tout d’abord, notons qu’il est propice à l’équipement d’un individu (enseignant, formateur, directeur d’école, etc.) ce qui garantit un accompagnement de son utilisation. Un enseignant ou un formateur qui l’aura en permanence sur lui pourra par exemple inviter ses élèves à y télécharger ses supports de cours sur leurs smartphones. A l’inverse, l’expérience montre qu’un nano serveur équipant une salle n’est pas toujours très utilisé. Nous pourrions dire que nous avons une intégration « équipement + support humain pour son usage ».
L’intégration en un seul objet d’un serveur + écran + une batterie + connexion wifi + connexion à internet régulière (via 3G/4G ou wifi) renforce considérablement son utilisabilité :
*/ La fonction serveur peut être activée en quelques secondes en cliquant simplement sur une icône du smartphone.
*/ S’il est connecté en wifi à un réseau local, une autre icone du smartphone permet de connaitre l’adresse IP avec laquelle on peut accéder aux services. Ce mode d’accès, via réseau local sur lequel le smartphone est connecté, est a priori plus performant qu’un hotspot sur Raspberry PI.
*/ Non connecté à un réseau wifi, le smartphone sera facilement mis en « Point d’accès wifi » via le menu d’administration Android. La même icône que précédemment indiquera alors l’adresse IP pour s’y connecter.
*/ D’autres icônes pourront faciliter la mise à jour en contenus ou la remonté de logs d’usage (par exemple produites par le serveur Http). Elles pourront être fréquentes sur un smartphone personnel souvent connecté à internet.
*/ Le support aux utilisateurs du smartphone peut se faire par Whatsapp.
2.2 Avantages en termes de déploiement
C’est au niveau du déploiement que les avantages sont les plus importants. La principale raison en est que le Nano serveur éducatif Android n’est pas dépendant de matériels très spécifiques qu’il faut acheter, approvisionner, stocker, expédier, dédouaner, etc. ce qui peut prendre beaucoup de temps et s’avérer en final dissuasif.
Pour illustrer ces avantages, mentionnons divers modes de déploiement possibles :
=> La procédure d’installation de la foncion Nano serveur sur un smartphone peut être mise à disposition en téléchargement depuis un serveur en ligne. Les personnes intéressées pourront la télécharger puis l’exécuter sur leur PC après y avoir connecté leur terminal.
=> Des cartes SD peuvent être commercialisées en ligne depuis un site. Elles contiendront la procédure d’installation et des contenus statiques préinstallés (Wikipédia, Khan Academy, Bibliothèques de livres). A leur réception les utilisateurs les inséreront dans leur terminal et exécuteront la procédure d’installation.
=> Des partenaires peuvent distribuer des cartes SD personnalisées, embarquant leurs contenus, notamment des Moocs au format Moodle, et un mini site à leur charte graphique sous WordPress. Exemple de partenaires : universités virtuelles africaines, universités numériques françaises, ministères de l’éducation ou de l’enseignement supérieur, ONG, etc.
=> Les universités et centres de formations peuvent équiper leurs collaborateurs de smartphones de fonction intégrant un Nano serveur éducatif. La remonté de logs d’usage et la production de statistique permettra de s’assurer que les smartphones ont été confiés aux bonnes personnes.
=> Des ministères de l’éducation ou ONG peuvent équiper des écoles avec des Nano serveurs éducatifs sur tablette.
=> Des plans de collecte de smartphones usagés peuvent être organisés, idéalement en associant les opérateurs de télécommunication, afin de les recycler en Nano serveurs éducatifs pour les écoles, universités, centres de formation, etc. Des circuits courts et locaux rendront possibles des délais rapides et une autonomie des bénéficiaires locaux. Par exemple :
- Un opérateur de Telecom collecte des smartphones usagés auprès de ses clients CSP+ qui souhaitent acheter les tous derniers modèles. Ils proposent à ces clients d’offrir leur ancien smartphone à une école ou université où il deviendra un serveur éducatif.
Ils les fournissent aux ministères de l’éducation et de l’enseignement supérieur, aux organismes de formation, aux associations. - Les services techniques des ministères et autres entités y implémentent leur configuration Nano serveur et en équipent les cadres des universités, établissements scolaires, etc.
2.3 Cout
Les Nano serveurs éducatifs Android présentent également un avantage financier non négligeable par rapport aux Nano serveurs sur matériel spécifique.
Concernant le cout matériel :
- Le cout d’un Raspberry PI 4 2Go (50€ hors période de pénurie qui illustre le problème de s’appuyer sur un matériel unique) + un boitier de bonne qualité (25€) + une carte SD de 128 GO (25 €) est de l’ordre de 100 €.
- Le cout de son équivalent sur smartphone neuf low cost est du même ordre mais en incluant la fonction terminale avec batterie.
- Le cout du matériel sur smartphone personnel existant est évidemment bien plus faible puisqu’il se limite à la carte SD additionnelle.
Les couts en gestion (achats, logistique, configuration, maintenance) est très inférieur sur smartphone puisqu’il s’agit de matériel courant.
3 Implémentation technique d’un nano serveur éducatif sur un terminal Android
3.1 Principe
Rappelons quelques points favorisant le succès de l’opération :
- Android est lui-même un système Linux.
- Plusieurs applications permettent d’installer un environnement Debian sur Android.
- De nombreux smartphones se basent sur des processeurs ayant la même architecture ARM que les Raspberry PI. Les exécutables binaires prévus pour Raspberry PI seront donc directement exécutables sur ces smartphones.
Diverses modalités de réalisation d’un nano serveur éducatif sur Android ont été explorées.
Deux méthodes, s’appuyant sur deux applications différentes, ont permis d’atteindre l’objectif recherché de façon très satisfaisante : l’ensemble du périmètre fonctionnel cible est couvert, les performances sont bonnes.
Dans les deux cas cela consiste techniquement à :
- installer dans Android un environnement Debian 10.
- lancer des process s’exécutant directement sur le système natif Android mais dans l’environnement Debian. Ceci est possible grâce aux commandes Linux Chroot et Proot.
Pour cela nous utilisons une application qui crée l’environnement Debian puis exécute des process s’appuyant sur cet environnement.
Une fois ceci réalisé, l’intégration des logiciels et contenus permettant d’obtenir un Nano serveur éducatif se fait exactement de la même façon que sur Rasbperry PI.
Dans les deux cas, il ne s’agit donc pas d’émuler un environnement Debian via un interpréteur de commande qui traduirait des directives Debian en directive Android, ce qui dégraderait considérablement les performances.
3.2 Première méthode se basant sur l’application Linux Deploy et la commande Chroot
La première méthode nécessite terminal rooté. Notons qu’une alternative au rootage du terminal est l’installation d’une nouvelle ROM déjà rootée. Les tests ont été fait sur une ROM AOSP de Pierre-Hugues Husson avec laquelle un grand nombre de smartphones sont compatibles (les smartphones compatibles Treble).
Elle s’appuie sur une Busybox et sur l’application Linux Deploy. La Busybox ajoute des exécutables binaires qui complètent ceux d’Android et y ajoutent des commandes standard Linux qui ne sont pas nativement sur Adnroid. L’application Linux Déploy crée un environnement Debian et lance un process qui démarre sur cet environnement via la commande linux Chroot. Les process lancés sous Debian accèdent à l’ensemble des ressources du smartphone (stockage, mémoire, etc.).
3.3 Seconde méthode se basant sur l’application Termux et la commande Proot
La seconde méthode fonctionne sur un terminal non rooté.
Elle s’appuie sur l’application Termux qui crée un environnement Debian puis lance des process s’appuyant sur cet environnement via la commande Linux Proot. Ces process n’ont pas accès à toutes les ressources du terminal (stockage, mémoire, etc.), mais cette limitation n’empêche pas d’atteindre l’objectif fonctionnel et ne pénalise pas les performances de façon rédhibitoire.
Astuces :
- Pour nos tests nous avons mis les contenus ( data de Nextcloud, data de Moodle, zim de Kiwix) sur la carte SD externe tandis que l’image Debian étaient sur la carte SD interne.
- Pour une raison inexpliquée le process Mariadbd tombe en Segmentation Violation lorsqu’il est exécuté dans Proot-Distro, nous l’avons donc lancé directement dans Termux.
- Les performances de Nextcloud s’améliorent considérablement en supprimant l’application Theming.
3.4 Comparaison des deux méthodes
=> La méthode s’appuyant sur Termux est recommandée pour des smartphones personnels pour lesquels la nécessité de rooter un terminal constituerait une contrainte forte qui complexifierait le déploiement. Elle permet une installation simple, compatible avec un très grand nombre de terminaux, et pouvant être installée sur un smartphone personnel par l’utilisateur lui-même.
Par ailleurs l’application Termux Widget permet de créer des icones sur l’écran du smartphone permettant d’exécuter des taches dans Termux ou dans Debian. Par exemple :
- une icone permet de lancer les services dans Debian.
- une icone permet d’arrêté les services dans Debian
- une icone permet d’afficher l’état du system et des paramètres, notamment l’adresse IP avec laquelle ont peut se connecter aux services.
=> La méthode s’appuyant sur Linux Deloy est recommandée pour des projets impliquant un grand nombre de Nano serveurs se basant sur des smartphones neufs et non des smartphones personnels existants. Elle présente quelques avantages :
- Elle est globalement plus performante, car le système Debian n’est pas cloisonné mais accède à l’ensemble des ressources logicielles et matérielle sans restriction.
- Elle peut notamment monter des partition ext4 sur la carte SD externe, plus performantes et autorisant de fichiers de tailles supérieurs par rapport à Fat32.
- En mode point d’accès wifi, elle permet un accès depuis le navigateur par url (par exemple “edphone.fr”) complémentaire à l’accès par adresse IP. Pour cela nous relançons le process gérant le point d’accès wifi (dnsmasq) après avoir spécifié le nom de domaine dans /etc/hosts.
- Elle permet d’améliorer les performances en créant un cache PHP (via Opcache), voire un cache Moodle, en RAM et non plus sur carte SD comme dans l’implémentation sur terminal non rooté.
- Le fait qu’ils soient rootés, ou mieux dotés d’une ROM spécifique, permet de désactiver des services android en vue de les rendre plus performants et de rendre leur vol sans intérêt (ex : désactivation de la fonction téléphone).
3.5 Performances
Les tests ont été menés sur des smartphones bas de gamme, achetés neufs moins de 90 € en grande distribution, sous Android 9 et 10, dotés de 4 cœurs MediaTek MT6739 1,50 GHz, architecture armv7l, de 1 GO et 3 GO de RAM.
Il n’a pas été mené d’analyse de performance approfondies, mais d’un point de vue théorique on conçoit que les performances devraient être au moins similaires à celle d’un Raspberry PI 3B+ ou Raspberry PI 4 2GO. En effet :
- Les processeurs sont sensiblement de même puissance.
- La mémoire RAM y est supérieure
- Les entrées sorties peuvent être réparties sur deux carte SD, la carte SD interne et une carte SD externe.
- L’interface wifi semble plus performante que l’interface wifi native du Raspberry.
Par ailleurs les process lancés pour assurer les services, bien que s’appuyant dans un répertoire qui n’est pas le système natif Android, s’exécutent directement dans le système, ce qui peut aisément se vérifier avec la commande « ps -ef » lancée sur ADB shell. C’est notamment le cas : du serveur http nginx, du serveur php-fpm et de mariadbd.
Les temps de réponses sont très acceptables lors de l’utilisation des services Kiwix (Wikipédia, etc.), WordPress, Moodle, Nextcloud.
L’accès à Moodle et Nextcloud induit une latence de l’ordre de 0,5 seconde lors de la première connexion, ce qui est lié au chargement d’un grand nombre de fichiers PHP et à un grand nombre de requêtes MySQL. Ce point n’est pas bloquant car l’accès aux médias est quant à lui très rapide et les temps de réponse s’améliorent ensuite du fait que certains fichiers sont mis en cache, notamment les fichiers PHP.
L’environnement Nano serveur peut être maintenu actif sur le smartphone sans que cela augmente la consommation de la batterie de façon sensible. Les deux applications, Termux et Linux Deploy, permettent d’ailleurs de faire tourner l’environnement en tache de fond. S’agissant d’application PHP, seul le serveur http Nginx est en réalité actif à l’écoute d’une connexion entrante. C’est lui qui en cas de connexion activera PHP, lequel activera Mysql. D’où la faible consommation électrique en absence d’activité.
4 Méthode de réplication d’un environnement Nano serveur éducatif
Ce paragraphe présente la méthode de réplication sur plusieurs terminaux d’un environnement Nano serveur éducatif créé sur un terminal de référence.
=> Dans la méthode s’appuyant sur Termux, l’implémentation de la fonction Nano serveur éducatif sur un smartphone est assez simple. Les étapes sont les suivantes :
- Installation des applications Termux (sur la carte SD interne)
- Copie des fichiers de données relatifs à ces applications. Il s’agit essentiellement de l’image Debian qui aura été créée sur un smartphone de référence (sur SD interne, dans l’espace Termux) et des fichiers de données (a priori sur une carte SD externe).
Ces opérations peuvent aisément être automatisées par une procédure à exécuter sur PC après que le smartphone y ait été connecté. Les commandes sont alors envoyées par ADB.
Si on considère qu’une carte SD externe est quasi indispensable pour, d’une part disposer d’un espace de stockage de taille suffisante, d’autre part répartir les entrées / sorties sur 2 cartes SD, il est recommandé de créer des carte SD qui contiendront à la fois la procédure d’installation, les fichiers APK des applications, et les contenus. Ces cartes SD seront produites en amont. Pour implémenter la fonction Nano serveur éducatif sur un smartphone il suffira d’y insérer la carte SD er de lancer l’installateur qui est dessus.
=> Dans la méthode s’appuyant sur Linux Deploy il faut au préalable rooter le terminal ou le reflasher, puis effectuer quelques modifications sur Android via ADB Shell, notamment
- ajouter dans /etc/init un script qui s’exécutera en fin de boot, et positionne setenforce à 0, effectue un mount des partitions de la SD externe formaté ext4, exécute « mount -o remount,rw / » pour autoriser la partition / en écriture,
- ajouter dans /etc/init un script qui s’exécutera lorsque le terminal passe en mode point d’accès, et définit dans /etc/hosts un nom de host associé à l’adresse IP du point d’accès puis relance dnsmasq pour qu’on puisse accéder au serveur par ce nom de host et pas seulement adresse IP.
Comme dans l’autre méthode il faut ensuite installer les applications et les données.
Ces opérations sont également automatisable dans un script appelant ADB.