Installer un Système d'exploitation linux Debian sur une Odroïd C2 (64 bits Jessie) ou une Odroïd XU4 (32 bits Jessie ou Stretch)

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

  1. Préparation de l'installation

    1. Machine hôte et Odroïds
    2. Quelques choix stratégiques
    3. Téléchargement et préparation des images
  2. Procédure d'installation du système d'exploitation

    1. Installation du système par défaut
    2. Configuration de la taille de l'écran
  3. Premier démarrage de l'Odroïd sur le système nouvellement installé

    1. Mise à jour du système
    2. Ajout des outils et utilitaires de base et configuration
    3. Redémarrage et ajout du pilotage à distance

Téléchargements

  1. Images pour l'Odroïd XU4
  2. Images pour l'Odroïd C2

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