A la recherche de l`install minimale... pour faire - Mon Club-Elec

Transcription

A la recherche de l`install minimale... pour faire - Mon Club-Elec
A la recherche de l'install minimale... pour faire tourner
Arduino.
Par X. HINAULT – www.mon-club-elec.fr - Septembre 2012
« De quoi qu'i cause le gars ? »
•
Au fil de mes installations de distros Ubuntu, de systèmes pour la GLAP-Box (la Gnu/Linux
Arduino Processing Box, un système « maison » mini PC embarqué pour robot ) ou tout
simplement d'installations d'Arduino sur des vieux eeePC ou encore la perspective de miniPC embarqué tel que le Raspberry-pi aux ressources limitées, je me suis posé la question de
quel était le « système minimum » faisable, et même plus exactement quel est « l'ubuntu
minimum », pour avoir une interface graphique avec un IDE Arduino ou Processing qui
tourne.
•
Mes tests, essais et pérégrinations m'ont permis de faire quelques trouvailles que je présente
ici...
Choix de la distro de base
•
le choix de la « distro » de base, indépendamment des caractéristiques d'un système complet
final, est important, même dans le cas de la mise en place d'un système minimal, car il
détermine et oriente plusieurs choses quelque soit la taille du système final :
◦ le nombre de paquets disponibles (prêts à l'emploi et déjà compilés) et la facilité de les
utiliser, (20 000 paquets pour une Debian ou une Ubuntu contre 2000 pour certaines
distro..)
◦ le support des matériels (notamment wifi, webcam, etc...) assuré par ladite distribution,
point essentiel voire crucial en pratique,
◦ le type de noyau Linux prêt à l'emploi fourni par ladite distribution (plus il est récent
mieux c'est..)
◦ les variantes de la distribution déjà disponibles « clés en main » et les outils d'installation
(live CD, USB live, etc...) qui peuvent le cas échéant servir de base pour la mise en place
d'un système minimal,
◦ le système de mise à jour, le rythme de développement, etc...
◦ la communauté, la documentation qui l'entoure...
•
Déjà premier point, çà sera une Gnu/Linux, car c'est ce qui est le plus souple pour créer,
bidouiller un système à sa sauce. De plus, je recherche un système pour base x86, donc c'est
le choix privilégié, car Gnu/Linux a le maximum de maturité pour cette plateforme...
•
Et au pays de Linux, j'aime bien et j'ai une bonne habitude d'Ubuntu. J'ai essayé pas mal de
choses (différentes distrib'...) , y compris Debian (la grande sœur d'Ubuntu...). Mais Ubuntu
a un avantage indéniable par rapport à toutes les autres : elle a le meilleur support
matériel à mon avis. Le wifi marche de suite, le matériel audio, vidéo, etc... est reconnu
dans la majorité des cas : ce point est essentiel. C'est même la pierre d'achoppement sur
laquelle j'ai buté dans tous mes essais avec d'autres distros.... Du genre, on passe plus de
temps à résoudre un problème de driver matériel qu'à installer la distribution elle-même.
Avec Ubuntu, c'est assez rare de se retrouver dans cette situation avec les dernières versions.
•
En plus, si on arrive à faire un système Ubuntu minimal, on dispose du coup de tous les
paquets dans les dépôts Ubuntu, soit entre 15 et 25 000 selon les versions. Et une fois le
système de base installé, après c'est comme le lego, on ajoute les pièces voulues en fonction
de ses besoin... Facile... et que du bonheur (enfin, si on a pas peur d'écrire quelques lignes de
commande...) ! De plus, en utilisant une version LTS (dite Long Time Support), on s'assure
d'avoir un système stable.
•
J'ai également regardé du côté des distribution « légères », Puppy Linux et autres Slitaz... et
j'ai découvert, comme je vais le montrer, qu'on peut se faire une Ubuntu opérationnelle aussi
légère que ces distros... !
•
Dernier point qui me pousse à utiliser Ubuntu : j'ai déjà mis en place toutes les procédures
d'installation de nombreuses fonctionnalités utiles pour un système embarqué (Arduino,
Processing, accès VNC, SSH, partage fichier NFS, webcam, OpenCV, etc...) pour cette
distro... donc autant potentialiser ce qui a déjà été fait et ce que je sais déjà faire... Les
transpositions de l'existant seront donc plus faciles également. C'est fou le temps que l'on
peut perdre bêtement lorsque l'on est en territoire nouveau ou inconnu...
•
Sans compter la doc Ubuntu qui est très fournie aussi bien en français qu'en version
anglaise. C'est très rare de ne pas trouver solution à son problème : mieux que çà, en
cherchant quelque chose, on apprend souvent au passage pleins de trucs qu'on ne savait pas
tant les docs sont généralement bien fournies...
•
Donc, le choix de la distro de base est ici Ubuntu. La question devient donc, quel est le
système Ubuntu minimal faisable ?
Pourquoi vouloir un système « minimal » ?
•
Il y a pleins de distributions d'Ubuntu toutes prêtes, de taille variées... Quel est l'intérêt de
chercher à faire un système « minimal » ? Hormis le simple « jeu » de la chose, mettre en
place un système Ubuntu minimal a son intérêt dans plusieurs situations :
•
Tout d'abord dans le cadre d'ateliers Arduino où l'on utilise des netbook anciens pour faire
tourner l'IDE Arduino, on a intérêt à installer sur ces machines le système minimum pour
que les utilisateurs, souvent néophytes, disposent d'un système simple, rapide et fluide, prêt
à l'emploi. Pour que la maintenance des postes soit aussi facilitée : quand on multiplie les
manip' par 10 ou 20, çà a son importance !
•
D'une manière générale, dans toutes les situations où l'on a une « salle d'ordis » sur lesquels
on a besoin d'un minimum de logiciels pour réaliser une tâche précise : par exemple poste
internet, ou autre... Pas la peine d'y mettre la suite LibreOffice : un simple navigateur suffira.
•
Dans le cas d'un mini-PC embarqué, sur un robot ou dans d'autres situations, il est
intéressant, et ce même si le système embarqué est « large » en ressources matérielles, de
pouvoir construire le système embarqué avec uniquement le nécessaire et l'utile :
◦ afin de réduire l'utilisation des ressources et les réserver pour les fonctions très
consommatrices de temps processeur,
◦ de gagner en fluidité de fonctionnement
◦ de limiter la consommation du système, etc...
•
Même dans le cas d'un desktop ou d'un matériel capable de faire tourner une « grosse »
distro, on a intérêt à utiliser un petit système pour avoir la fluidité d'usage maximale...
•
Tout simplement, pour utiliser un vieux PC et lui donner une nouvelle jeunesse (réellement,
c'est très surprenant ce qu'on arrive à faire ! )...
L'objectif recherché : quel est le système minimal voulu ?
•
Système minimal, système minimal... c'est bien joli, mais concrètement, on veut quoi ?
•
L'objectif ici, dans mon cas, est clair : je veux le système minimal Ubuntu sur base x86
pour obtenir un système graphique opérationnel et sur lequel je peux faire fonctionner
Arduino et Processing, et donc avec un java opérationnel installé !
Les 2 voies possibles...
•
Pour la mise en place d'un système « minimal » ou allégé, il y a typiquement 2 voies
possibles :
•
soit on part d'un système plus gros opérationnel qu'on allège progressivement : c'est la voie
descendante...
•
soit on part du plus petit système possible et on grossit progressivement jusqu'à obtenir le
système minimal répondant à nos objectifs. C'est la voie ascendante.
Le critère de comparaison : la RAM utilisée au démarrage
•
Pour évaluer la pertinence d'un système minimal et comparer les systèmes entre-eux, il faut
trouver un critère simple et objectif de comparaison.
•
Il me semble que le critère le plus simple et le plus parlant pour évaluer et comparer les
systèmes entre eux est le suivant : la RAM de base utilisée au démarrage du système.
•
Pour la suite, je me baserai sur ce critère, mesuré dès l'obtention du système lancé
opérationnel. J'utiliserai toujours le même logiciel pour la mesure : le logiciel htop
disponible en ligne de commande.
•
On pourrait aussi ajouter la vitesse de démarrage, le nombre de tâches au démarrage,
l'utilisation CPU... mais il me semble que tous ces critères vont d'une façon ou d'une autre
dépendre du premier, à savoir la RAM de base du système lancé...
•
A noter que je ne fais pas de la taille du système sur le disque dur un élément de choix
essentiel... l'important étant d'abord le fonctionnement opérationnel du système. De toute
façon, là encore, il sera nécessairement plus bas si le système est plus léger. Grosso modo on
va obtenir un système qui tiendra au mieux sur quelques centaines de Mo et au plus sur
quelques Go.
Le système Ubuntu minimal « brut de décoffrage »
•
Premier point de référence qui m'intéresse : quel est le système Ubuntu minimal possible
pour obtenir une simple ligne de commande ?
•
Pour le savoir, il suffit de le créer : le plus simple est de partir du « Minimal CD » qui
comme son nom ne l'indique pas, correspond à uniquement l'utilitaire d'installation de la
distribution Ubuntu, en téléchargeant les paquets à partir du réseau.
•
Cette image *.iso ne fait que 27Mo (tout petit) et n'est utilisable qu'avec une connexion
réseau disponible. Elle ne peut pas être utilisée en USB live et nécessite un lecteur CD sur le
système d'installation.
•
J'ai préféré le minimal CD à la version alternate Desktop ou alternate Server pour être sûr
d'avoir une installation du minimum de paquets et d'un noyau générique (alternate Server
utilise un noyau non générique... )
•
On a besoin pour ce faire :
◦ d'un lecteur CD sur le système
◦ d'un CD RW pour y graver l'image (à partir d'une Ubuntu déjà opérationnelle)
◦ d'une connexion réseau avec accès internet pour le poste où on installe la distro
•
La procédure est classique avec une série d'écrans qui permettent l'installation du système
Ubuntu de base.
•
Conclusion : Ce système Ubuntu basique « brut de décoffrage » qui ne donne qu'une ligne
de commande utilise 40 Mo de RAM. (20 tâches actives) Il s'agit là de la limite basse
•
Il sera impossible à priori de faire un système Ubuntu opérationnel en dessous de çà (40 Mo
de RAM) ... Mais c'est tout de même un très bon résultat car on pourrait théoriquement ainsi
faire tourner cette Ubuntu minimale sur des systèmes n'ayant que 96Mo de RAM voire
moins... Encore une fois, à partir de cette Ubuntu, on dispose potentiellement de tous les 20
000 paquets de la distro Ubuntu à la demande !
•
Ce système est aussi la base pour tout système Ubuntu que l'on voudrait construire « from
scratch ».
•
C'est un peu comme le miniremix : http://www.ubuntu-mini-remix.org/
Etat des lieux des variantes Ubuntu existantes : comparatif chiffré...
•
Il existe plusieurs variantes de la distribution Ubuntu, de la plus « grosse » à la plus
« légère ». Après quelques tests de toutes ces versions en 12.04 LTS, voici les résultats :
◦ Ubuntu (Unity) : 310 Mo de RAM au démarrage. La version par défaut
◦ Xubuntu (XFCE) : 240 Mo de RAM au démarrage. Une version un peu plus légère,
totalement opérationnelle pour un PC de bureau
◦ Lubuntu (LXDE - openbox) : 110 Mo de RAM au démarrage. Un environnement de
bureau léger basé sur OpenBox, un gestionnaire de fenêtre léger...
Comparatif des distributions Ubuntu 12.04
•
Plusieurs constats peuvent être faits à ce stade :
◦ Lubuntu utilise 3 fois moins de ressources au démarrage que Ubuntu unity
◦ Unity est relativement gourmand en ressources ce qui aura pour effet de ralentir le
système sans pour autant améliorer le confort d'utilisation...
◦ Xfce apparaît clairement comme un bon compromis pour un poste de travail principal,
ce qui fait que nombreux sont ceux qui le choisissent actuellement... au lieu des
gourmands Unity ou Gnome 3... sans parler de l'interface...
•
Le point important : on remarque qu'il existe un « vide » notable entre une « Ubuntu Shell »
qui correspond à une Ubuntu démarrée en ligne de commande (40Mo) et une Lubuntu
(110Mo) qui est une Ubuntu légère sous Openbox (LXDE)...
•
La question : est-il possible de faire encore mieux que Lubuntu tout en disposant d'une
interface graphique ???
Une trouvaille : la distribution Madbox !
•
Je crois bien avoir trouvé le chaînon manquant : il existe une petite distro qui n'a pas encore
beaucoup fait parler d'elle (moi je ne connaissais pas... ) mais qui occupe une place
intermédiaire entre Ubuntu Shell et Lubuntu... J'ai parlé de la distro Madbox !
•
Le site officiel est très sobre : 1 seule page avec le lien de téléchargement de l'iso de la 12.04
LTS. La classe quoi... ! C'est ici : http://madbox.tuxfamily.org/
•
En fait, c'est une distribution minimaliste, basée quasiment sur un équivalent de l'Ubuntu
Shell auquel a été ajouté uniquement :
◦ le gestionnaire de fenêtre OpenBox (le même que LXDE...)
◦ une barre des tâches (Lxpanel, la même que LXDE...)
◦ et quelques utilitaires de base....
•
Résultat des courses : une vraie Ubuntu graphique qui démarre avec seulement... 60 Mo
de RAM !! (et même un peu moins... le htop au démarrage affichant parfois 55Mo... )
Autrement dit juste un peu au dessus de l'Ubuntu Shell et moitié moins que Lubuntu. Ce qui
nous donne :
•
Avec la distribution Madbox, véritable distribution Ubuntu allégée, on dispose donc d'un
système minimum, en interface graphique, pour seulement 60Mo RAM utilisée au
démarrage, ( soit seulement 20Mo de plus que le système en ligne de commande !) soit :
◦ 5 fois moins gourmande que le distribution Ubuntu Unity
◦ 4 fois moins gourmande que Xubuntu
◦ et même 2 fois moins gourmande que Lubuntu
•
Enfin, bref, cette distro Madbox, je suis fan... Certes, c'est un Ubuntu graphique presque
« tout nu», mais c'est justement çà l'intérêt : là-dessus, on ajoute ce qu'on veut et seulement
ce qu'on veut !
•
C'est quasiment un petit miracle technique ! Le plus impressionnant est la légèreté de
gestionnaire de fenêtre openbox qui n'ajoute que 20 Mo de RAM utilisée au système Ubuntu
en ligne de commande. Et du coup, c'est une très réelle possibilité de redonner une nouvelle
jeunesse à des netbooks qui sont dans le placard, eeePC notamment ! ou encore de rendre
fluide un desktop qui se traîne (préférer Lubuntu cependant pour une station de travail..)
•
L'application « phare » de cette distro sera cependant de créer un système léger de toute
pièce, sur base Ubuntu, par exemple pour un mini-PC embarqué sur un robot, type GLAPBox.
•
Envie de mettre les mains dans le camboui ? C'est par ici :
http://davidmadbox.wordpress.com/2012/06/04/madbox-do-it-yourself/
Installation de Madbox
•
L'installation de Madbox se fait comme pour n'importe quel autre *.iso
◦ télécharger l'image *.iso ici : http://madbox.tuxfamily.org/
◦ avec unetbootin, graver l'iso sur clé USB
◦ lancer le système comme avec n'importe quelle clé USB live
◦ aller dans le menu Préférence > installer... et c'est parti pour une installation classique
•
On peut alléger d'emblée la Madbox une fois installée en supprimant le paquet Conky qui
n'est pas franchement utile à mon avis :
◦ sudo apt-get remove conky-all
◦ sudo apt-get autoremove
•
Lancer htop soit en ligne de commande, soit depuis le menu principal Système > htop et
découvrez par vous-même que votre système n'utilise que 60Mo de RAM !
Installation d'Arduino sur le système minimum Madbox
•
Comme je le disais plus haut, l'objectif ici, dans mon cas, est clair : je veux le système
minimal Ubuntu sur base x86 pour obtenir un système graphique opérationnel et sur
lequel je peux faire fonctionner Arduino (et Processing), et donc avec un java
opérationnel installé !
•
Donc une fois Madbox installée (ce qui se fait simplement avec l'iso comme vu plus haut),
on va pouvoir installer Arduino...
•
On commence par installer quelques programmes utiles qui ne sont pas inclus dans la distro
Madbox :
◦ Synaptic, le gestionnaire de paquet : sudo apt-get install synaptic
◦ Firefox, le navigateur qu'on ne présente plus : sudo apt-get install firefox
◦ gedit, éditeur de texte facile : sudo apt-get install gedit : déjà Geany d'installé
◦ xarchiver : sudo apt-get install xarchiver
•
Ensuite, on installe les paquets nécessaires pour Arduino
◦ lancer synaptic : sudo synaptic
◦ installer l'openjdk7 (installer le paquet dans Synaptic) : openjdk-7
◦ installer les paquets nécessaires pour Arduino :
▪ g++ (le compilateur GNU C++)
▪ gcc-avr (compilateur C pour les microcontrôleurs AVR)
▪ avr-libc
◦ une fois, fait, fermer Synaptic.
•
On Télécharge ensuite le logiciel Arduino
◦ Ouvrir Firefox ( au premier lancement : preferences > demander où enregistrer)
◦ Aller sur le site Arduino à l'adresse http://www.arduino.cc/ , aller dans la rubrique
download et télécharger l'archive Linux 32 bits en l'enregistrant dans le répertoire
utilisateur Telechargements (à créer au besoin ou tout autre répertoire de votre choix... )
◦ Ensuite, ouvrir le dossier contenant l'archive et l'extraire sur place (clic droit > extraire
ici )
◦ Ensuite, aller dans le dossier Arduino-xx et faire un clic droit sur le fichier Arduino >
Propriétés > Onglet Permission > vérifier que la case « autoriser l'exécution comme un
programme » est cochée.
•
•
Premier lancement Utilisation :
◦ Veiller à être au moins en 800x600 pour lancer le logiciel Arduino.
◦ lancer en ligne de commande :
▪ $ cd Telechargements/arduino-1.0
▪ $ ./arduino
Fignolage :
◦ Pour avoir la détection des ports USB, avec la carte UNO, il faut démarrer Arduino en
sudo. Pour éviter d'avoir à faire çà (c'est pas l'idéal d'être en sudo pendant l'exécution
d'un programme !) et pour régler le problème une fois pour toute , une fois la carte
Arduino connectée :
◦ Ajouter l'utilisateur au groupe système dialup qui gère les interfaces matérielles,
dont ttyACM0 (NE PAS OUBLIER -a ++++ et modifier nomutilisateur )
▪ sudo usermod -a -G dialout $USER
◦ Pour info, le groupe dialout est un groupe système qui gère le matériel (voir ici :
http://www.debian-administration.org/articles/109 ). Pour vérifier que l'utilisateur a bien
été ajouté au groupe dialout, faire :
▪ $ cat /etc/group
◦ et trouver la ligne de la forme :
▪ dialout:x:20:glapbox
◦ ensuite modifier les droits de /ttyACM0 avec la commande (la carte doit être
connectée!) :
▪ sudo chmod a+rw /dev/ttyACM0
◦ Source : http://blog.markloiseau.com/2012/05/install-arduino-ubuntu/
•
Installation d'un menu 'Madbox' (attention : c'est casse gueule si vous le sentez pas... ) :
◦ Il ne reste plus qu'à installer le lanceur dans un menu ce qui se fait par :
▪ ouvrir le fichier ~/.config/openbox/menu.xml (accessible par clic droit sur le bureau
Settings/Openbox/Edit menu.xml )
<item label="Arduino">
<action name="Execute">
<execute>
/home/user/Telechargements/arduino-1.x/arduino
</execute>
</action>
</item>
◦ ce qui correspond à :
▪ <item label="Dossier Téléchargement"> : c'est le nom qui va s'afficher dans le menu
•
▪ <action name="Execute"> : c'est ce qui doit se passer quand tu clique sur le nom,
dans ce cas "Execute"
◦ Voir ici : http://crunchbanglinux-fr.org/forum/viewtopic.php?id=1456
A présent, il est possible de lancer depuis le menu par clic droit sur le bureau...
•
La manip' est semblable pour Processing...
Résultat des courses :
•
Si on fait un htop une fois Arduino lancé, on a 85Mo d'utilisation de RAM seulement !
•
Donc, si on se résume, on a :
◦ une vraie UBUNTU minimale (avec les paquets dispos, le support matériel, etc...)
◦ en interface graphique
◦ avec Arduino opérationnel (et donc java jdk installé..)
◦ pour seulement 85Mo de RAM au démarrage... !
•
Ce résultat permet donc d'envisager d'utiliser Arduino sur de vieux PC ou netbook sans
problème... (Prévoir quand même 256 Mo de RAM pour être bien...)
Annexe 1 : Comparatif de la RAM utilisée au lancement avec
Windows... : je ne résiste pas...et çà vaut le coup d'oeil !
Pour info :
source : http://www.anandtech.com/show/5630/indepth-with-the-windows-8-consumer-preview/16
Donc, si j'insère ces données sur mon beau graphique, çà nous donne... (et c'est pas une blague...!)
•
Il faudrait presque faire un graphique logarithmique ! Donc, on comprend mieux pourquoi
Windows.... çà rame (RAM...) ! On constate ici que :
◦ Ubuntu Unity, c'est 3 fois moins de ressources au démarrage que Windows 7/8 desktop
◦ Qu'un Lubuntu, c'est presque 10 fois moins...
◦ et notre Madbox, 15 fois moins de RAM utilisée que Windows !! Et pourtant, le PC il
démarre, affiche des fenêtres et tout...
•
Bon, je sais que la comparaison a ses limites et se limiter à la seule RAM utilisée au
démarrage pourra paraître léger (encore que tout le reste suit... ), mais le duel Ubuntu Unity /
Windows Desktop est quand même très significatif.
•
Ce constat pourrait paraître sans conséquence en apparence... mais c'est un constat grave en
ce sens que nombreux sont ceux qui vont changer leur matériel uniquement pour pallier à la
lenteur du système Windows installé ou de l'incompatibilité de la nouvelle version de
Windows avec leur système.... Alors que la machine est encore pleinement fonctionnelle,
pour peu qu'on utilise un système de taille adaptée... Et c'est ainsi que des milliers, voire des
millions de PC partent à la casse !
•
Avec Ubuntu, à l'inverse, des postes qui ont plus de 10 ans (Pentium IV par exemple)
tournent parfaitement bien et remplissent leur fonction sans problème (bureautique,
navigation web, etc...)
•
Indépendamment de l'impact écologique clairement positif, avec une distribution libre telle
qu'Ubuntu, l'économie financière se fait alors à plusieurs niveaux :
◦ pas d'achat de nouvelles licences Windows
◦ pas d'anti-virus
◦ pas de changement de matériel.
•
Tout çà pour dire, au final, qu'avec une Madbox, on va faire des miracles !
Annexe 2 : Au pays du « minimal », tous les choix sont importants...
•
Lorsque l'on va installer des logiciels sur son système minimal, il va falloir penser léger ce
qui ne veut pas dire moins performant... Alors voici une liste de logiciels qui va dans ce
sens : http://harbhag.wordpress.com/2010/07/02/best-lightweight-applications-for-linux/
Et aussi : créer sa propre iso de Madbox :
Télécharger le Skeleton ici : http://davidmadbox.wordpress.com/2012/06/04/madbox-do-it-yourself/
Extraire et renommer le rép
Installer les dépendances dans synaptic : squashfs-tools (mksquashfs), deboostrap, genisoimage
(mkisofs)
Se placer dans le rép de la madbox skeleton précédemment téléchargé
Editer le madbox_install.cfg au besoin pour faire modif
Puis afficher readme.txt et suivre la procédure...(toutes les étapes suivantes) :
sudo su
./madbox.sh rootfs
./chroot.sh madbox_install.cfg
./madbox.sh sqfs
./madbox.sh iso
Et c'est fini : l'iso est dans le rép /iso
Problème : au démarrage, çà demande un mot de passe... ?
Voir également :
https://help.ubuntu.com/community/LiveCDCustomizationFromScratch
Et aussi : les différentes façon de créer une iso / installer le système.
> soit partir de l'iso fournie et faire un script de post install (probablement le plus simple...)
> soit créer une iso from scratch à partir du skeleton... mais reste étapes post install quand même
> soit créer un iso avec remastersys à partir d'un système installé
> Sinon, on peut aussi simplement installer la base à partir de minimalCD puis ensuite installer 1 à
1 les éléments du système . Voir le madbox.cfg du skeleton pour avoir la liste des paquets à installer.

Documents pareils