Motivations
Le projet Météo Climat tremplin pour l'enseignement des sciences s'intéresse aux instruments de mesure des paramètres météorologiques et à l'exploitation des données mesurées ainsi qu'au traitement des données météorologiques et climatologiques fournies par Météofrance. Cet intérêt a croisé :
* d'une part, la volonté institutionnelle d'enseigner le codage,
* d'autre part la mise en place d'un projet de collaboration avec le service Géomatique et données métropolitaines du Grand Lyon.
Cette intersection s'est matérialisée autour des nano-ordinateurs comme les RaspBerry ou les Odroïd qui pour une somme abordable pour un établissement d'enseignement (moins de 100 € ) permet de disposer d'un vrai ordinateur multi-coeurs de la taille d'une grosse boite d'allumettes. Ces nano-machine permettent autant de créer une interface de mesure avec des capteurs, que de traiter et afficher des données, que d'écrire des programmes qui s'exécutent sur un smartphone une tablette ou tout autre ordinateur, que de construire des microserveurs pédagogiques.
Ces outils permettent à l'élève et à son enseignant de changer de statut et de passer de l'état de consommateur passif de technologie à celui d'acteurs et de producteurs d'instruments et de ressources numériques. Toutefois l'accès direct possible au plus bas niveau technique de la machine et le "terrain vierge" qui est fourni requièrent un travail préliminaire d'installation / configuration, avant que chacun puisse exprimer ses compétences techniques technologiques scientifiques ou de design.
C'est cette première étape qui est exposée ici afin d'aider ceux qui "attendent que ça marche" et accompagner ceux qui aiment "savoir comment ça marche".
Sommaire
Téléchargements
1. Préparation de l'installation
Cet article traite en parallèle de l'Odroïd C2 et de l'Odroïd XU4 car la procédure d'installation est identique et quasi-générique m^eme si les deux nano-machines sont fondamentalement différentes : qudri/octo coeur 64/32 bits entre autres.
1.1 Machine hôte et Odroïds
La machine utilisée pour l'installation est une debian stretch 64 bits disposant des outils :
- gparted pour la manipulation des microSD et e-mmc,
- bmaptools pour faciliter et raccourcir le temps des copies des images entre les supports.
Il est aussi nécessaire de disposer d'un espace disque suffisant pour stocker les images qui seront manipulées.
Nous utiliserons un XU4 et un C2. Le XU4 est livré avec une e-mmc contenant un linux préchargé et le C2 a été livré avec une microSD vierge. d'une
1.2 Quelques choix stratégiques
Le problème majeur de l'opensource est l'éventail immense des choix proposés à l'usager. Les logiciels sont en général conçus pour satisfaire la somme de tous les besoins connus (car ils sont considérés comme également légitimes) et non la médiane de la cible marketing du produit commercial, justement parce qu'il n'y a pas de marketing ! En ce qui concerne les odroïds de nombreuses distributions de linux sont proposées par défaut ou par des tierces parties. Pour des raisons de convenance personnelles j'ai choisi d'utiliser une distribution debian et parmi les debian disponibles pour Odroïd. Pour Jessie j'ai choisi odrobian après un examen rapide des commentaires des usagers, pour stretch la seule directement opérationnelle que j'ai trouvée est celle de Memekace choix n'a pas d'influence sur l'installation qui peut être faite.
La distribution odrobian revendique le fait d'être aussi proche que possible de la distribution debian standard, mais il est nécessaire de construire une image non standard qui prenne en compte le matériel non opensource et ses contraintes. Il s'y ajoute quelques modifications de la configuration par défaut proposant une optimisation des ressources matérielles. Memeka propose une debian sans mate avec lxde.
Afin d'explorer au mieux les propriétés des odroïd le XU4 sera installé avec une distribution 32bits sur une e-mmc alors que la C2 sera installée avec une distribution 64 bits sur une micro-SD. Les images ne peuvent pas être échangées mais les supports sont complètement interchangeables, toutefois pour le XU4 il est nécessaire de choisir la position du commutateur en fonction du type de support.
1.3 Téléchargement et préparation des images
Téléchargement
Les images peuvent être téléchargées depuis les pages web odrobian ou via la commande wget.
wget http://oph.mdrjr.net/odrobian/images/5422/ODROBIAN-Jessie-2.0-mate-5422.img.xz
wget http://oph.mdrjr.net/odrobian/images/5422/ODROBIAN-Jessie-2.0-vanilla-5422.img.xz
wget http://oph.mdrjr.net/odrobian/images/s905/ODROBIAN-Jessie-2.0-vanilla-s905.img.xz
wget http://oph.mdrjr.net/odrobian/images/s905/ODROBIAN-Jessie-2.0-vanilla-s905~hybrid.img.xz
wget http://oph.mdrjr.net/memeka/images/stretch-memeka-12062016.img.tar.gz
- La première image fournit un système linux odrobian XU4 et un environnement de travail complet avec une interface graphique et le gestionnaire de fenêtres mate, choisissez cette image si vous souhaitez avoir immédiatement un environnement de travail graphique opérationnel.
- La seconde immage propose un système minimal XU4 sans interface graphique, choisissez cette image si vous souhaitez installer un système Ad-Hoc correspondant à vos besoins ou souhaits.
- La troisième est l'image pour C2 64 bits minimale, choisissez cette image si vous souhaitez installer un système Ad-Hoc correspondant à vos besoins ou souhaits en 64 bits.
- La quatrième est l'image pour C2 64/32 bits hybride minimale,choisissez cette image si vous souhaitez installer un système Ad-Hoc correspondant à vos besoins ou souhaits en 64 bits.
- La cinquième fournit un système linux debian stretch XU4 et un environnement de travail complet avec une interface graphique et le gestionnaire de fenêtres lxde, choisissez cette image si vous souhaitez avoir un environnement de travail graphique immédiatement opérationnel en Stretch (permet la compilation de mraa et upm)
Préparation des images
Les images téléchargées doivent écrites avec des fonctions d'écriture binaire comme dd (device to device de linux par exemple) mais ce type d'écriture peut s'avérer lent pour de gros volumes surtout si la copie prend en compte la totalité du device y compris les espaces vides. L'outil bmaptools permet de réduire les temps d'écriture mais il fonctionne à partir d'une image dite "sparse" et d'un fichier de configuraton spécialement construit pour l'image à recopier nous allons préparer les deux images que nous allons utiliser.
Création d'images "sparse"
Décompresser d'abord l'image à préparer.
7z x ODROBIAN-Jessie-2.0-mate-5422.img.xz
7z x ODROBIAN-Jessie-2.0-vanilla-s905~hybrid.img.xz
tar xvf stretch-memeka-12062016.img.tar.gz
Construire une image convertie en mode "sparse", on utilise pour cela la commande de bas niveau dd.
dd if=ODROBIAN-Jessie-2.0-mate-5422.img of=ODROBIAN-Jessie-2.0-mate-5422Sparse.img conv=sparse
dd if=ODROBIAN-Jessie-2.0-vanilla-s905hybrid.img of=ODROBIAN-Jessie-2.0-vanilla-s905hybridSparse.img conv=sparse
dd if=stretch-memeka-12062016.img of=stretch-memeka-12062016-sparse.img conv=sparse
Il est maintenant possible de créer le fichier de configuration pour la copie :
bmaptool create ODROBIAN-Jessie-2.0-mate-5422Sparse.img > ODROBIAN-Jessie-2.0-mate-5422Sparse.bmp
bmaptool create ODROBIAN-Jessie-2.0-vanilla-s905hybridSparse.img > ODROBIAN-Jessie-2.0-vanilla-s905hybridSparse.bmp
bmaptool create stretch-memeka-12062016-sparse.img > stretch-memeka-12062016-sparse.bmp
2. Procédure d'installation du système d'exploitation
2.1 Installation du système par défaut
Si e_mmc écupérer la carte e-mmc et la placer sur l'adaptateur microSD puis insérer l'adaptateur dans e-mmc->microSD dans un adaptateur microSD->SD. Attention le connecteur e-mmc n'est pas sécurisé et il est très facile de déconnecter la carte soyez prudents.
Si microSD insérer simplement la microSD dans l'adaptateur microSD->SD.
Placer l'adapteur SD dans l'ordinateur hôte et formatter la SD en une seule partition fat32, si vous avez acheté un support avec un système préinstallé et que vous souhaitez le conserver vous devez le recopier AVANT le formattage avec par exemple : dd if=mmcblk0 of=odrobian.img bs=4M
cela peut prendre pas mal de temps si la SD est de grande taille. pour formatter :
sudo gparted
Choisir le device mmcblk0 (ou un autre nom voisin) vous devriez retrouver mmc dans le nom, attention bien vérifier que l'on se trouve sur la ressource que l'on souhaite formatter car les opérations sont irréversibles ! Démonter la ressource, effacer les partitions existantes et créer une nouvelle partition fat32 occupant toute la surface de la SD. Si tout s'est bien passé vous devriez avoir un volume mmcblk0
contenant une partition unique mmcblk0p1
.
Recopier l'image sur la micro-SD, attention la micro-SD ne doit pas être montée sinon on a un message d'erreur.
sudo bmaptool copy --bmap ODROBIAN-Jessie-2.0-mate-5422Sparse.bmp ODROBIAN-Jessie-2.0-mate-5422Sparse.img /dev/mmcblk0
sudo bmaptool copy --bmap stretch-memeka-12062016-sparse.bmp stretch-memeka-12062016-sparse.img /dev/mmcblk0
On obtient une trace du type :
bmaptool: info: block map format version 2.0
bmaptool: info: xxxxx blocks of size 4096 (xxx.x MiB), mapped xxxxxxx blocks (xxx.x MiB or xx.x%)
bmaptool: info: copying image 'ODROBIAN-Jessie-2.0-mate-5422Sparse.img' to block device '/dev/mmcblk0' using bmap file 'ODROBIAN-Jessie-2.0-mate-5422Sparse.bmap'
bmaptool: info: 100% copied
bmaptool: info: synchronizing '/dev/mmcblk0'
bmaptool: info: copying time: ym yy.ys, copying speed z.z MiB/sec
Enlever et réinsérer la SD pour vérifier que 2 partitions ont bien été créées l'une de petite taille en fat16 (peut-être en fat32 dans certains cas) contient les fichiers de boot l'autre en ext4 fait la taille de l'image à peu de chose près. Augmenter la taille de la partition racine pour occuper tout l'espace disque disponible. La solution simple est d'avoir une seule partition pour tous les répertoires du système et les répertoires personnels, c'est une bonne solution stable et robuste. Pour l'image jessie utiliser gparted pour faire de nouvelles modifications des partitions; ATTENTION l'image stretch ne supporte pas le redimensionnement via gparted il faut utiliser la procédure ci-dessous.
sudo gparted
Vérifier les partitions en éjectant réinsérant la SD et en montant toutes les partitions. Vous devez avoir une seule partition au format ext4, elle doit maintenant faire toute la taille de la SD. Le boulot est terminé !
Pour stretch une fois l'Odroïd booté
sudo fdisk /dev/mmcblk0
Supprimer la seconde partition commandes (d, 2)
, la recréer immédiatement en utilisant les paramètres par défaut commandes (n, p, 2, entrée, entrée)
, puis écrire et sortir commande (w)
. Rebooter le système, puis:
sudo resize2fs /dev/mmcblk0p2
Vous devez avoir une seule partition au format ext4, elle doit maintenant faire toute la taille de la SD. Le boulot est terminé !
2.2 Configuration de la taille de l'écran
La taille de l'écran est fixée au boot par un paramètre dans la fichier /usr/share/bootini/boot.ini
et est ensuite recopié dans /media/boot/boot.ini
par défaut la valeur est fixée à 1920x1080, pour changer cette valeur il faut éditer ce fichier (ou ces deux fichiers s'ils existent) sur la microSD commenter la ligne qui ne convient pas :
setenv m "1080p60hz" # Progressive 60Hz
puis décommenter la résolution choisie. L'Odroïd démarrera dans la résolution attendue.
3. Premier démarrage de l'Odroïd sur le système nouvellement installé
3.1 Mise à jour du système
Attention impératif : l'Odroïd doit être connecté en filaire. Pour continuer la procédure si l'Odroïdn'est pas directement connecté à un écran il est donc nécessaire de pouvoir obtenir son adresse IP à distance. branchez le réseau, alimentez l'Odroïd, une led rouge s'allume (témoin d'alimentation puis une bleue qui se met à clignotter quelques secondes plus tard la machine est en ligne et opérationnelle.
- La machine s'appelle odroid64 (odroid32 pour l'hybride)
- Le login de départ est odroid
- Le mot de passe de départ est odroid
``` ssh odroid@192.168.10.102 odroid@192.168.10.102's password: The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
On vérifie que l'on a bien une architecture 64 bits.
odroid@odroid64:~$ uname -a Linux odroid64 3.14.29-14-odrobian+ #2 SMP PREEMPT Wed Mar 16 19:03:55 MDT 2016 aarch64 GNU/Linux ```
Réaliser un update ugrade pour mettre à jour le système.
sudo apt-get update
On vérifie donc dans les traces de la mise à jour que l'image chargée est 64 bits:
.../...
Get:10 http://oph.mdrjr.net odroid/s905 arm64 Packages [2313 B]
.../...
sudo apt-get upgrade
sudo apt-get dist-upgrade
Attention les configurations par défaut sont en anglais et donc le clavier en QWERTY !!!!! Cela fait un petit exercice intellectuel ou un effort de ménage pour dépoussiérer le vieux QWERTY qui est au fond du placard ;-). Comme signalé ci-dessus se connecter à distance facilite bien les choses car on sera évidemment en AZERTY dans la configuration locale de sa machine ;-).
Pour trouver l'adresse de la machine si on n'a pas accès à la table d'attribution des adresses, la façon la plus simple est de se connecter et d'utiliser la commande :
ip address show
Toutefois l'habituel et maintenant déprécié
/sbin/ifconfig
fonctionne parfaitement en jessie sur la RasPI.
Passage en version stretch
La version 64 bits ne permet pas de charger un node correctement. De plus il est souhaitable d'utiliser une version 3.0 de swig et un G++ version 5.0 au moins (pour disposer de l'option C++11 dans les compilations). En passant en version stretch la plupart de ces problèmes sont résolus! Éteindre et rallumer la machine puis changer le nom de la distribution de jessie à stretch dans les fichiers de configuration des paquets
sudo shutdown -r now
cd /etc/apt/
sudo nano sources.list
Puis lancer la montée de version du système, toute la partie debian sera en stretch.
sudo apt-get update
sudo apt-get dist-upgrade
sudo shutdown -r now
3.2 Ajout des outils et utilitaires de base et configuration
Mise à jour des locales, de la console et du clavier. Installer d'abord le paquet manquant :
sudo apt-get install console-setup
Suivant le mode d'installation choisi les configurations du clavier et du langage peuvent ne pas être correctes configurer la locale, la console et le clavier :
sudo dpkg-reconfigure locales
sudo dpkg-reconfigure console-setup
sudo dpkg-reconfigure keyboard-configuration
Installation de quelques éléments de confort d'administration
apt-get install sudo jed usbutils git ntp htop curl cmake make g++
Ajouter les firmwares dont le driver wifi ainsi que le gestionnaire de réseau
apt-get install firmware-linux firmware-linux-nonfree firmware-linux-free firmware-realtek network-manager
Changement du nom de la machine :
Si besoin il est toujours possible de changer le nom de son Odroïd
apt-get update && apt-get install -y dbus
hostname=myname
echo "127.0.0.1 $hostname" >> /etc/hosts
hostnamectl set-hostname "$hostname"
sudo shutdown -r now
ajouter aussi "myhostname" au fichier /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat
group: compat
shadow: compat
gshadow: files
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Mise en place du confort graphique de base
La commande suivante entraîne l'installation automatique de nombreux paquets du fait des dépendances qui existent sur le serveur X (ce qui permet d'afficher) et cela prend un certain temps. Au prochain reboot la Raspberry-Pi lance automatiquement le lightdm ce qui donne un bel affichage sur l'écran. B-)
apt-get install lightdm lxde
service lightdm start
Ajout des utilisateurs et configuration de leurs droits
Pour ajouter des usagers utiliser la commande :
sudo adduser newuser
et suivre les instructions.Modifier ensuite les droits des usagers en les affectant aux groupes portant ces droits dans le fichier de configuration /etc/group
prendre modèle éventuellement sur l'utilisateur privilégié odroïd
3.3 Redémarrage et ajout du pilotage à distance
Installer le logiciel terminal server:
sudo apt-get install vnc4server
Mise en place d'un broadcast VNC sur le port 5901
Cette opération fait que l'Odroïd emet en permanence sur le tout réseau un signal signalant sa présence et le fait qu'il propose un service de connection par émulation de terminal à distance. C'est à dire qu'il permet à un utilisateur ayant les droits correspondants sur la machine d'afficher dans une fenêtre de son écran l'écran de lOdroïd. Pour que cela se passe automatiquement il faut lancer au boot et par défaut un terminal serveur vnc4server via le rc.local. Pour cela ajouter dans le fichier /etc/rc.local
la ligne suivante :
su - vidal -c /usr/bin/vnc4server
Une fois l'Odroïd démarrée il suffit de chercher une machine faisant du broadcast sur le port 5901, notons qu'on trouvera tous les serveurs faisant du broacast sur ce port... On se connecte en utilisant un client VNC par exemple xvnc4viewer ou remmina.
Dès que la connection est établie supprimer le broadcast pour éviter de diffuser inutilement sur le réseau.
Recherche de l'adresse MAC ou reconnaissance de l'interface WIFI
Pour mettre en oeuvre cette solution il faut connaître l'adresse MAC de son interface WIFI ou de l'interface filaire pour cela on utilise l'instruction ip :
ip addr show
qui fournit dans le cas ou la raspberry a pris l'IP 192.169.11.120 :
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether **:**:**:**:**:** brd ff:ff:ff:ff:ff:ff
inet 192.169.11.120/24 brd 192.169.11.255 scope global dynamic wlan0
valid_lft 9165sec preferred_lft 9165sec
inet6 $$$$::$$$$:$$$$:$$$$:$$$$/64 scope link
valid_lft forever preferred_lft forever
où **:**:**:**:**:** est l'adresse MAC unique de l'interface. Il faut avoir la machine qui servira de client pour le terminal sur le même réseau et rechercher l'adresse de la carte de la raspberry (il faut les droits d'administration):
sudo nmap -sP -n 192.169.11.0/24 | grep -e **:**:**:**:**:** -B 2
Attention certains administrateurs réseau n'aiment pas (du tout) qu'un usager lambda utilise cette commande privilégiée et réputée agressive car elle permet d'obtenir des informations sur le réseau, dans ce cas vous n'obtiendrez pas de réponse ou vous verrez débarquer dans votre bureau la sécurité.... Une fois que vous avez récupéré votre IP vous êtes en situation connue :
ssh 92.169.11.120
vnc4passwd (donner un mot de passe de session)
vnc4server
Puis un client VNC et l'écran de lOdroïd apparait sur votre machine....Si le window manager n'apparaît pas il faut configurer vnc4server dans le fichier ~/.vnc/xstartup
.
Webographie
. Site principal Odrobian 2. Pages Odrobian du site Odroïd XU4 2. Pages Odrobian du site Odroïd C2
Commentaires