Différences entre versions de « RasPy-Preparing »
(→To Do) |
|||
(16 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 321 : | Ligne 321 : | ||
Cela peut se faire à l'aide de la commande | Cela peut se faire à l'aide de la commande | ||
− | sudo dd if=/dev/zero of=swap bs=1M count=100 | + | sudo dd if=/dev/zero of=swap bs=1M count=100</small> |
− | </ | + | |
+ | === Les Logs === | ||
+ | Il y a encore moyen de gagner de la place en effaçant les fichiers logs. Cela peut représenter de un à quelques MB. | ||
+ | |||
+ | Cette opération sera à reconduire lorsque l'on voudra préparer l'image finale... | ||
+ | |||
+ | <nowiki>cd /var/log/ | ||
+ | sudo rm `find . -type f`</nowiki> | ||
+ | |||
+ | === Troisième évaluation === | ||
+ | Un petit coup de serpillière (qui récupère quand même quelques méga sur le système de fichier). | ||
+ | |||
+ | sudo apt-get clean | ||
+ | |||
+ | Que nous annonce ''disk free''? (avec la commande {{fname|df -h}}) | ||
+ | |||
+ | [[Fichier:Raspy-df-02.jpg]] | ||
+ | |||
+ | == Image de sauvegarde == | ||
+ | Nous allons réaliser une image de "sécurité" (faire une copie de la carte SD dans un fichier). | ||
+ | |||
+ | Nous allons utiliser l'utilitaire {{fname|dd}} sur un système Unix/Linux. | ||
+ | |||
+ | Nous allons éteindre proprement notre pi avec un {{fname|sudo shutdown -h now}} puis placer la carte SD dans un système Linux (nous utilisons Linux Mint... dérivé d'Ubuntu... lui même dérivé de Débian). | ||
+ | |||
+ | === Identifier le périphérique === | ||
+ | Pour commencer, nous allons utiliser l'utilitaire fdisk pour lister les disques et les partitions, y compris les partitions de la carte SD. | ||
+ | |||
+ | sudo fdisk -l | ||
+ | |||
+ | Il y a beaucoup d'information mais cette qui nous intéresse se trouve précisément ici. | ||
+ | |||
+ | <nowiki> | ||
+ | Disque /dev/mmcblk0 : 3965 Mo, 3965190144 octets | ||
+ | 4 têtes, 16 secteurs/piste, 121008 cylindres, total 7744512 secteurs | ||
+ | Unités = secteurs de 1 * 512 = 512 octets | ||
+ | Taille de secteur (logique / physique) : 512 octets / 512 octets | ||
+ | taille d'E/S (minimale / optimale) : 512 octets / 512 octets | ||
+ | Identifiant de disque : 0x0009bf4f | ||
+ | |||
+ | Périphérique Amorçage Début Fin Blocs Id. Système | ||
+ | /dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA) | ||
+ | /dev/mmcblk0p2 122880 6399999 3138560 83 Linux | ||
+ | </nowiki> | ||
+ | |||
+ | Notre périphérique (disque) correspondant à la carte SD est '''/dev/mmcblk0'''. Vous pouvez d'ailleurs voir les deux partitions correspondantes un peu plus bas (une en W95 et l'autre Linux). | ||
+ | |||
+ | === Faire la copie === | ||
+ | Nous allons utiliser la commande {{fname|dd}} également surnommée ''Disk Destroyer''. Il faut faire bien attention à l'utilisation des paramètres if (entrée) et of (sortie). | ||
+ | |||
+ | {{ambox-stop|text=La commande dd permet d'effacer le contenu d'un disque en quelques secondes... et c'est irrémédiable! Faites donc bien attention à vos paramètres if et of.}} | ||
+ | |||
+ | La commande suivante copie le contenu de la carte SD (/dev/mmcblk0) dans un fichier (RasPy-Eval3.img) du répertoire courant. | ||
+ | |||
+ | La commande est: | ||
+ | |||
+ | sudo dd if=/dev/mmcblk0 of=RasPy-Eval3.img | ||
+ | |||
+ | Ce qui après la copie nous offre un beau petit fichier de 4 Go (3965190144 octets pour être précis). | ||
+ | |||
+ | Voici le résultat de la commande en sachant que le bloc-size (taille de bloc) est de 512 octets par défaut: | ||
+ | |||
+ | <nowiki>7744512+0 enregistrements lus | ||
+ | 7744512+0 enregistrements écrits | ||
+ | 3965190144 octets (4,0 GB) copiés, 207,469 s, 19,1 MB/s</nowiki> | ||
+ | |||
+ | === Compresser l'image === | ||
+ | Nous allons essayer de compresser l'image pour obtenir une archive aussi petite que possible. La compression zip produit une archive de 980Mb. | ||
+ | |||
+ | L'utilisation de la commande | ||
+ | |||
+ | 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on RasPy-Eval3.img.7z RasPy-Eval3.img | ||
+ | |||
+ | produit une archive 7z de la taille de 701.6 Mo (c'est déjà mieux) | ||
+ | |||
+ | == To Do == | ||
+ | * Raspi-Config: 16Mb pour le GPU. Charger I2C et SPI par défaut. | ||
+ | * [[Pi-Python-PuDB|INstaller puDB]] (debogeur Python en ligne de commande) | ||
+ | * sudo apt-get install python-pip | ||
+ | * sudo pip install pyserial | ||
+ | * Installer les sources Adafruit | ||
+ | * Installer PySerial, PyUsb | ||
+ | * S'assurer de la présence de easy_install, pip, sudo pip install RPi.GPIO | ||
== Ressource == | == Ressource == | ||
* [http://www.cnx-software.com/2012/07/31/84-mb-minimal-raspbian-armhf-image-for-raspberry-pi/ Minimal Raspbian Image] | * [http://www.cnx-software.com/2012/07/31/84-mb-minimal-raspbian-armhf-image-for-raspberry-pi/ Minimal Raspbian Image] | ||
+ | |||
{{RasPy-TRAILER}} | {{RasPy-TRAILER}} |
Version actuelle datée du 20 juin 2015 à 22:04
Voici les différentes étapes qui ont été nécessaire à la réalisation de RasPy.
Télécharger Raspbian
Nous allons commencer par:
- télécharger la dernière version de Raspbian sur la page de téléchargement de RaspberryPi.org
- L'installer sur une carte SD de 4 Go.
- Démarrer votre Pi avec la carte
- Ouvrir une session terminal (ou une sessions SSH).
L'utilisateur par défaut est pi et le mot de passe par défaut raspberry.
Dans un premier temps, nous n'allons pas modifier la configuration du Pi, ni étendre le système de fichier.
Notre premier objectif est de faire un peu de place sur la partition existante.
Identification
Rien ne ressemble plus à un Raspbery-Pi qu'un autre Raspberry-Pi. Tous les Pi branché sur un réseau ont, par défaut, le nom d'hôte raspberrypi.
Même si l'utilitaire fing fait des miracles il faut encore savoir quel est quel Raspberry-Pi (nous en avons souvent plusieurs sur un même réseau.
Solution: changer le nom de l'hôte. Nous allons commencer par changer celui-ci de raspberrypi à raspy
utilité: Cela permet d'identifier plus facilement la machine sur le réseau mais aussi de faire des connexions SSH avec une commande telle que ssh pi@raspy. Plus besoin de connaître ou retrouver l'adresse IP ;-) .
Hostname
Entrez la commande suivante:
sudo nano /etc/hostname
Puis modifiez la ligne
raspberrypi
par
raspy
préférez les noms en minuscule, une séparation à l'aide d'un tiret peut améliorer la lisibilité. Eviter les caractères spéciaux et accentués. |
hosts
Nous allons ensuite modifier le fichier hosts afin que notre Pi sache aussi que raspy soit associer à son adresse locale (bref qu'il est lui même ;-) ). Entrez ensuite la commande suivante:
sudo /etc/hosts
Et modifiez l'entrée 127.0.0.1
127.0.0.1 raspberrypi
en
127.0.0.1 raspy
mise-à-jour
La première chose à faire est de réaliser une mise-à-jour des paquets
sudo apt-get update
Nettoyage
Nous allons ensuite enlever les éléments superflu pour le projet RasPy.
Retirer X-Windows
Nous comptons réaliser une carte de programmation python rapide et légère, nous pouvons donc nous passer de l'environnement graphique.
sudo apt-get purge x11-common xserver-xorg
Cela va désinstaller une sérue de paquet dans le foulée et nous allons récupérer 870 Mb!!!
sudo apt-get autoremove
Ce qui va installer 171 paquet complémentaire, ce qui représente encore 259 Mb.
Notes:
- Cela va néanmoins installer tcl8.4 tk8.4 et faire une mise-à-jour de libjavascriptcoregtk-3.0-0, je me demande quel est la pertinence de ces paquets.
- Cela désinstalle python-tk (interface X-Windows pour applications) et python-idle (environnement de développement simplifié python sous X-windows).
Retirer le Swap
Si votre programme est gourmand en mémoire, il va utiliser le Swap (stocker des sections de mémoire sur la carte SD pour libérer de l'espace).
Cela vieillit prématurément la carte SD (vous pouvez la détruire en quelques heures seulement, voyez cet article).
Il est préférable de tomber à court de mémoire que de ne plus avoir de carte SD (et donc plus de projet!)
Enlevons donc l'utilisation du Swap.
sudo apt-get remove dphys-swapfile
Première évaluation
Faisons un petit reboot et voyons où nous en sommes arrivé.
sudo shutdown -r now
Après le redémarrage, nous faisons un df pour connaître l'espace encore occupé. Il est d'environ 1.3Go sur les 3 Go de la partition.
Nous sommes descendu à 47% de l'espace disponible (pas si mal pour un premier jet).
Regardons un peut du côté de la mémoire...
free -m
Nous n'utilisons que 57Mb après démarrage de l'OS. Pas mal non plus pour un début...
La commande cat /proc/meminfo nous apprend qu'une partie de cette mémoire (8Mb) est allouée mais inactive... prête a bosser.
Le temps nécessaire au boot (et obtention de la connexion SSH est de 20 secondes.
Retirer le support NTFS / FUSE
Voici encore quelques optimisations issues du site drogon.net.
Il y a peut de chance que nous utilisions un jour NTFS (système de fichier de Windows), nous pouvons nous séparer de quelques modules en plus.
sudo apt-get purge libfuse2
Fuse permet de monter des systèmes de fichier dans l'espace utilisateur... ce n'est probablement pas/plus pertinent dans le cas de ce projet.
La recommandation original est reprise ci-dessous, il ne reste plus que libfuse2
sudo apt-get purge fuse-utils
sudo apt-get purge libfuse2
sudo apt-get purge libntfs10
Consoles Virtuelles
Savez-vous ce qu'est une console virtuelle? Les utilisez vous?
Sur un système de type Linux, vous avez généralement une console graphique et 6 consoles textes. Il est possible de passer d'une console texte à l'autre en pressant la combinaison de touche Alt+F1, Alt+F2, etc (ou Alt+DROITE, Alt+GAUCHE).
Le retour à la console graphique se fait à l'aide de CTRL+ALT+F1 (mais nous nous sommes déjà occupé de la console graphique).
Avoir une ou deux consoles texte à disposition peut être bien pratique, par contre, votre Pi en démarre 6! Evitons le gaspillage des ressources et faisons un peu de ménage.
Il faut éditer le fichier système inittab à l'aide de la commande
sudo nano /etc/inittab
et naviguer presque jusqu'à la fin du fichier pour trouver une ligne qui ressemble à ceci:
4:23:respawn:/sbin/getty 115200 tty4
Et commenter ces lignes en plaçant le symbole # en tout début de ligne. Faites le pour les 3 lignes mentionnant tty4, tty5 et tty6.
Préserver la console série
Il est également possible de se connecter sur le Pi à l'aide d'une console série (nécessitant un convertisseur USB/Série que l'on branche sur le GPIO).
Etant donné que nous voulons réaliser un OS dédicacé à Python et au hacking électronique, il est préférable de préserver cette console série (sauf autre nécessité comme l'utilisation du module GPS Utime ou Hat GPS) |
Si vous ne comptez pas utiliser cette fonctionnalité avec votre Pi alors vous pouvez également commenter la ligne contenant ttyAMA0 dans le fichier /etc/inittab (comme décrit ci-dessus).
Voyez ce tutoriel pour plus d'informations.
Retirer Python Game
Représente 1.8Mo... que nous pouvons donc éliminer puisque pas vraiment utile dans notre contexte.
cd ~ rm -rf python_games
Retirer les relicats X11
La commande suivante m'apprend que j'ai encore quelques paquets X11 sur la carte.
sudo dpkg --get-selections | grep -v "deinstall" | grep x11
Il s'agit de...
- dbus-x11
- libx11-6:armhf
- libx11-data
- libx11-xcb1:armhf
Je m'empresse donc de les désinstaller avec:
sudo apt-get remove `sudo dpkg --get-selections | grep -v "deinstall" | grep x11 | sed s/install//`
Ce qui me désinstalle une série de dépendance dans le foulée... pour un total de 149Mb.
sudo apt-get autoremove
Fait encore un peu de ménage et nous enlève 129 Mb supplémentaires.
Préserver GCC
La commande suivante nous permet de lister les package GCC.
sudo dpkg --get-selections | grep -v "deinstall" | grep gcc\-
Nous n'allons pas éliminer GCC de la distribution pour le moment, l'installation de certains EGG Python font parfois appel à une phase de compilation.
Note:
Il est possible d'effacer les anciennes versions de GCC et de ne garder que la version 4.7.
sudo apt-get remove gcc-4.4-base:armhf gcc-4.5-base:armhf gcc-4.6-base:armhf
Préserver les paquets -dev
Pour le moment, nous n'allons pas éliminer les paquet -dev utilisés pour la compilation.
Il est possible de les lister à l'aide de la commande:
sudo dpkg --get-selections | grep "\-dev"
Note:
Il est possible d'effacer ces paquet à l'aide de la commande.
sudo apt-get remove `sudo dpkg --get-selections | grep "\-dev" | sed s/install//`
Doc et fonts
Nous n'avons pas l'intention d'utiliser cette installation pour découvrir l'utilisation des commandes systèmes.... nous n'avons donc pas besoin des manpages.
Par ailleurs, les fonts truetypes ne nous serons pas d'une grande utilité, ni a doc relative au lib raspberry pi.
Nous allons donc désinstaller tout cela:
sudo apt-get remove libraspberrypi-doc fonts-freefont-ttf manpages
Cela libère 58 Mb.
Puis faisons un peu de ménage
sudo apt-get autoremove
qui libère encore 6Mb
Deuxième évaluation
Passons la serpillière
sudo apt-get clean
et voyons ou nous en sommes arrivé.
Je n'en reviens pas, nous sommes déja en dessous du Giga (environ 887Mo) pour RootFs :-)
Côté mémoire, nous sommes passé de 57Mb a 56Mb. Rien d'extraordinaire mais c'est normal, ce n'est pas sur ce point que les efforts étaient concentrés.
Les plus gros fichiers
Voici une commande qui va nous permettre de trouver les plus gros fichier dans notre système de fichier.
sudo find / -type f -size +10000k -exec ls -lh {} \; | awk '{ print $NF ": " $5 }'
Ce qui produit le résultat suivant:
find: `/proc/2215/task/2215/fd/5': No such file or directory find: `/proc/2215/task/2215/fdinfo/5': No such file or directory find: `/proc/2215/fd/5': No such file or directory find: `/proc/2215/fdinfo/5': No such file or directory /var/lib/apt/lists/mirrordirector.raspbian.org_raspbian_dists_wheezy_main_binary-armhf_Packages: 34M /var/swap: 100M /usr/lib/gcc/arm-linux-gnueabihf/4.6/cc1plus: 9.8M /usr/share/icons/nuoveXT2/icon-theme.cache: 24M
Nous avons:
- le swap qui fait 100Mb!!!
- icon-theme.cache qui est un fichier de 24Mb a lui tout seul.
Si l'on va fureter dans /usr/share/icons/nuoveXT2/ l'on se rend vite compte qu'il y a plein d'autres ressources graphique.
pi@raspy ~ $ cd /usr/share/icons/nuoveXT2/ pi@raspy /usr/share/icons/nuoveXT2 $ ls 128x128 22x22 32x32 48x48 72x72 extra index.theme 16x16 24x24 36x36 64x64 96x96 icon-theme.cache pi@raspy /usr/share/icons/nuoveXT2 $ ls -l total 23820 drwxr-xr-x 12 root root 4096 Feb 16 13:17 128x128 drwxr-xr-x 12 root root 4096 Feb 16 13:17 16x16 drwxr-xr-x 12 root root 4096 Feb 16 13:17 22x22 drwxr-xr-x 12 root root 4096 Feb 16 13:17 24x24 drwxr-xr-x 12 root root 4096 Feb 16 13:17 32x32 drwxr-xr-x 12 root root 4096 Feb 16 13:17 36x36 drwxr-xr-x 12 root root 4096 Feb 16 13:17 48x48 drwxr-xr-x 12 root root 4096 Feb 16 13:17 64x64 drwxr-xr-x 10 root root 4096 Feb 16 13:17 72x72 drwxr-xr-x 10 root root 4096 Feb 16 13:17 96x96 drwxr-xr-x 2 root root 4096 Feb 16 13:17 extra -rw-r--r-- 1 root root 24336748 Feb 16 13:33 icon-theme.cache -rw-r--r-- 1 root root 7512 Apr 16 2012 index.theme pi@raspy /usr/share/icons/nuoveXT2 $
un petit du -h -d 0 nous apprends que cela représente quand même 32Mb.
Ces ressources doivent appartenir à LXDE, il parait que omxplayer nous gratifie d'un joli fichier test.h264 de 30M (une vidéo en haute définition).
Retirer LXDE et omxplayer
sudo apt-get remove lxde-common lxde-icon-theme omxplayer
Note:
lxde-common et omxplayer ne semble déjà plus installés à cet étape. lxde-icon-theme permet de récupérer 5Mb.
Pas de chance, cela laisse toujours en place mon beau fichier /usr/share/icons/nuoveXT2/icon-theme.cache de 24 Mb.
Cette fois, je l'efface manuellement
sudo rm /usr/share/icons/nuoveXT2/icon-theme.cache
Le fichier Swap
En cherchant les plus gros fichiers, nous avons identifié le fichier swap qui fait 100 Mb tout rond.
Nous avons déjà désinstallé dphys-swapfile... ce fichier ne sert donc normalement plus a rien.
Nous pouvons donc nous permettre d'en diminuer la taille à... 1K ;-)
sudo swapoff -a cd /var sudo dd if=/dev/zero of=swap bs=1K count=1
Note:
Si dphys-swapfile n'avait pas été désinstallé, une bonne opération serait de le remplir de zéro (pour améliorer la compression de l'image finale).
Cela peut se faire à l'aide de la commande
sudo dd if=/dev/zero of=swap bs=1M count=100
Les Logs
Il y a encore moyen de gagner de la place en effaçant les fichiers logs. Cela peut représenter de un à quelques MB.
Cette opération sera à reconduire lorsque l'on voudra préparer l'image finale...
cd /var/log/ sudo rm `find . -type f`
Troisième évaluation
Un petit coup de serpillière (qui récupère quand même quelques méga sur le système de fichier).
sudo apt-get clean
Que nous annonce disk free? (avec la commande df -h)
Image de sauvegarde
Nous allons réaliser une image de "sécurité" (faire une copie de la carte SD dans un fichier).
Nous allons utiliser l'utilitaire dd sur un système Unix/Linux.
Nous allons éteindre proprement notre pi avec un sudo shutdown -h now puis placer la carte SD dans un système Linux (nous utilisons Linux Mint... dérivé d'Ubuntu... lui même dérivé de Débian).
Identifier le périphérique
Pour commencer, nous allons utiliser l'utilitaire fdisk pour lister les disques et les partitions, y compris les partitions de la carte SD.
sudo fdisk -l
Il y a beaucoup d'information mais cette qui nous intéresse se trouve précisément ici.
Disque /dev/mmcblk0 : 3965 Mo, 3965190144 octets 4 têtes, 16 secteurs/piste, 121008 cylindres, total 7744512 secteurs Unités = secteurs de 1 * 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Identifiant de disque : 0x0009bf4f Périphérique Amorçage Début Fin Blocs Id. Système /dev/mmcblk0p1 8192 122879 57344 c W95 FAT32 (LBA) /dev/mmcblk0p2 122880 6399999 3138560 83 Linux
Notre périphérique (disque) correspondant à la carte SD est /dev/mmcblk0. Vous pouvez d'ailleurs voir les deux partitions correspondantes un peu plus bas (une en W95 et l'autre Linux).
Faire la copie
Nous allons utiliser la commande dd également surnommée Disk Destroyer. Il faut faire bien attention à l'utilisation des paramètres if (entrée) et of (sortie).
La commande dd permet d'effacer le contenu d'un disque en quelques secondes... et c'est irrémédiable! Faites donc bien attention à vos paramètres if et of. |
La commande suivante copie le contenu de la carte SD (/dev/mmcblk0) dans un fichier (RasPy-Eval3.img) du répertoire courant.
La commande est:
sudo dd if=/dev/mmcblk0 of=RasPy-Eval3.img
Ce qui après la copie nous offre un beau petit fichier de 4 Go (3965190144 octets pour être précis).
Voici le résultat de la commande en sachant que le bloc-size (taille de bloc) est de 512 octets par défaut:
7744512+0 enregistrements lus 7744512+0 enregistrements écrits 3965190144 octets (4,0 GB) copiés, 207,469 s, 19,1 MB/s
Compresser l'image
Nous allons essayer de compresser l'image pour obtenir une archive aussi petite que possible. La compression zip produit une archive de 980Mb.
L'utilisation de la commande
7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on RasPy-Eval3.img.7z RasPy-Eval3.img
produit une archive 7z de la taille de 701.6 Mo (c'est déjà mieux)
To Do
- Raspi-Config: 16Mb pour le GPU. Charger I2C et SPI par défaut.
- INstaller puDB (debogeur Python en ligne de commande)
- sudo apt-get install python-pip
- sudo pip install pyserial
- Installer les sources Adafruit
- Installer PySerial, PyUsb
- S'assurer de la présence de easy_install, pip, sudo pip install RPi.GPIO
Ressource
Tutoriel réaliser par Meurisse D. pour MCHobby.be
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.