Un de nos clients nous a demandé comment installer le VirtualHub sur la distribution Tiny Core Linux. Pour être franc, nous n'avions jamais entendu parler de cette distribution, mais nous avons découvert que cette distribution a fait des choix techniques intéressants. Du coup, on va vous montrer comment installer le VirtualHub ou votre propre application sur Tiny Core Linux.
La distribution Tiny Core Linux est très différente d'une distribution classique comme Ubuntu ou Debian. D'une part, cette distribution est extrêmement compacte. Une installation standard ne fait qu'une dizaine de mégaoctets. D'autre part, Tiny Core n'utilise pas directement de disque dur (ou la carte SD) de la machine, mais un RAM disque.
Un RAM disque est un disque virtuel qui utilise une partie de la RAM pour fonctionner. Lors du boot, ce disque virtuel est initialisé avec les données du disque physique, mais ensuite le disque physique n'est plus utilisé. L'avantage de ce système est que la mémoire RAM est beaucoup plus rapide qu'un disque dur. Cela permet d'avoir une installation très rapide.
Ce choix a de grandes conséquences, car la mémoire RAM n'est pas persistante. Par conséquent, toutes les modifications faites sur les fichiers de ce RAM disque sont perdues à chaque reboot! Pour une machine de bureau, ce mécanisme n'a aucun sens. En effet, à quoi sert un ordinateur qui perd tous les documents à chaque fois que qu'il est éteint...
Toutefois, pour certains scénarios, cette limitation peut devenir un véritable avantage. Par exemple, pour des bornes interactives ou des applications dédiées. Cela garantit que le système démarrera correctement quoi qu'il se passe. Une application plante, un virus est installé, l'utilisateur a corrompu des fichiers ? Il suffit de redémarrer.
L'autre avantage est que cela permet d'éviter les problèmes de disques durs corrompus lors des coupures de courant. En effet, comme il n'y a pas d'accès implicite en écriture sur le disque dur, ce dernier ne risque pas de se retrouver à moitié écrit. Ce dernier avantage est particulièrement intéressant lorsque l'on utilise un Raspberry Pi qui est alimenté par batterie.
Un exemple
Nous allons voir comment installer le VirtualHub sur un Raspberry Pi avec la distribution Tiny Core Linux.
La première étape est évidemment d'installer Tiny Core Linux sur le Raspberry Pi. La procédure est documentée sur le site web, mais dans les grandes lignes cela se résume aux étapes suivantes:
- Télécharger l'image depuis le site web
- Écrire le fichier .img sur une carte SD à l'aide de l'utilitaire dd ou un équivalent
- Booter le Raspberry Pi
- Sauver la configuration SSH à l'aide de la commande filetool.sh -b
- Éventuellement adapter la taille de la partion de la carte SD
Pour installer le VirtualHub sur Tiny Core, ou n'importe quelle autre application, on ne peut pas utiliser la procédure habituelle. Si vous télécharger le VitualHub et que vous l'installez directement dans le répertoire /usr/sbin, il va fonctionner correctement dans un premier temps, mais il va disparaître lors du prochaine reboot car il n'est pas installé sur le disque dur mais sur le RAM disque.
Pour installer durablement une application sur Tiny Core, il faut créer un package tcz et l'enregistrer dans la liste des packages qui sont ajoutés au RAM disque lors du boot.
Créer le package VirtualHub
La création du package est assez simple, il faut télécharger le VirtualHub depuis notre site web et déziper l'archive sur notre système Tiny Core.
tc@box:~$ wget http://www.yoctopuce.com/FR/downloads/VirtualHub.linux.38634.zip Connecting to www.yoctopuce.com (83.166.141.172:80) VirtualHub.linux.386 100% |*********************************************************************| 4492k 0:00:00 ETA tc@box:~$ unzip VirtualHub.linux.38634.zip Archive: VirtualHub.linux.38634.zip inflating: mips/VirtualHub inflating: LISEZMOI.txt inflating: README.txt inflating: armel/VirtualHub inflating: RELEASE.txt inflating: FILES.txt inflating: aarch64/VirtualHub inflating: startup_script/yVirtualHub inflating: startup_script/yvirtualhub.service inflating: startup_script/yvirtualhub.openwrt inflating: udev_conf/51-yoctopuce_all.rules inflating: udev_conf/51-yoctopuce_group.rules inflating: 32bits/VirtualHub inflating: 64bits/VirtualHub inflating: armhf/VirtualHub inflating: mipsel/VirtualHub tc@box:~$
Un package tcz est en fait une image de fichiers à copier dans le RAM disque.
Pour créer cette image, il faut créer un répertoire virtualhub et ensuite copier à l'intérieur les fichiers que l'on veut installer.
Attention, il ne suffit pas de copier les fichiers à la racine de ce répertoire, il faut les copier dans un sous-répertoire équivalent à l'emplacement où le fichier doit être installé. Dans notre exemple, on veut que l’exécutable VirtualHub soit installé dans le répertoire /usr/sbin, il faudra donc créer un sous-répertoire virtualhub/usr/sbin et copier l’exécutable dans ce répertoire.
Voici les commandes pour créer les sous-répertoires et copier la version armhf du VirtualHub et la règle Udev qui autorise tous les utilisateurs à accéder aux modules Yoctopuce.
mkdir virtualhub mkdir -p virtualhub/usr/sbin mkdir -p virtualhub/etc/udev/rules.d cp armhf/VirtualHub virtualhub/usr/sbin/ chmod +x virtualhub/usr/sbin/VirtualHub cp udev_conf/51-yoctopuce_all.rules virtualhub/etc/udev/rules.d/
Maintenant que le répertoire virtualhub contient l’exécutable VirtualHub et la règle Udev, il faut créer le fichier virtualhub.tcz à l'aide de la commande suivante:
mksquashfs virtualhub virtualhub.tcz -b 4k -no-xattrs
Installer le package VirtualHub
Une fois le fichier virtualhub.tcz créé, il faut le rendre persistant. En effet, ce fichier est pour l'instant toujours stocké sur le RAM disque et par conséquent perdu si la machine redémarre. Pour l'installer de manière définitive, il faut le copier sur le disque dur et l'ajouter à la liste de packages chargés lors du démarrage de l'OS.
Pour ce faire, il faut d'une part copier le package dans le sous-répertoire /etc/sysconfig/tcedir/optional/ et ajouter une ligne avec le nom du package au fichier /etc/sysconfig/tcedir/onboot.lst.
cp virtualhub.tcz /etc/sysconfig/tcedir/optional/ echo virtualhub.tcz >> /etc/sysconfig/tcedir/onboot.lst
Le package est maintenant stocké de manière permanente sur le disque dur (la carte SD en l’occurrence) car le répertoire /sysconfig/tcedir est mappé sur le disque dur.
Vous pouvez maintenant redémarrer la machine et vérifiez que vous pouvez lancer le VirtualHub.
Une fois le package installé, le VirtualHub est disponible
Sauvegarder la configuration
L'intérêt de cette distribution est que les modifications ne sont pas écrites sur le disque dur. Cela permet de revenir à un état stable et connu en redémarrant la machine.
Il y a toutefois des situations où on veut sauver ces modifications. Par exemple, si on a configuré un callback HTTP avec le VirtualHub, on aimerait bien que ce changement ne soit pas perdu lors du prochaine reboot.
C'est le rôle de la commande backup, qui permet de sauver les modifications qui ont été faites dans le répertoire /home et dans le répertoire /opt.
Donc, si vous changez la configuration du VirtualHub avec l'interface Web, n'oubliez pas de vous loguer sur la machine et d’exécuter la commande backup pour rendre ces modifications permanentes.
La commande backup permet de sauvegarder les changements
Quelques remarques
Certaine images Tiny Core ne contiennent pas la librairie libUSB par défaut. Si au lancement du VirtualHub vous obtenez l'erreur "VirtualHub: error while loading shared libraries: libusb-1.0.so.0", c'est qu'il faut l'installer à l'aide de la commande suivante:
tce-load -iw libusb
Pour démarrer automatiquement le VirtualHub lors démarrage du système, il ne faut pas utiliser les scripts de démarrage fournis avec le VirtualHub. En effet, Tiny Core a simplifié les scripts de démarrage et nos scripts systemd ou System V ne fonctionnent pas.
La solution est de simplement ajouter la ligne "VirtualHub -d" à la fin du fichier /opt/bootlocal.sh. Il faut ensuite appeler la commande backup pour sauver cette modification sur le disque dur.
echo "VirtualHub -d" >>/opt/bootlocal.sh backup
Conclusion
Tiny Core Linux est une distribution très particulière qui ajoute son lot de complexité mais qui permet en contrepartie d'avoir un système très robuste et qui démarre très très vite.
Dans cet article, nous vous avons montré comment installer le VirtualHub sur Tiny Core, mais si vous envisagez de l'utiliser nous vous conseillons de lire la documentation qui explique en détail le fonctionnement particulier de cette distribution.