Petites astuces pour le Raspberry Pi et assimilés
Par Cubytus le jeudi 21 août 2014, 03:26 - Raspberry Pi - Lien permanent
Un bref aide-mémoire sur les logiciels à avoir sur un Raspberry Pi, et quelques manipulations utiles.
Difficulté: facile
Avoir les bons réflexes dans le monde Linux, c'est d'abord garder à jour sa machine, mais aussi disposer de quelques outils supplémentaires que la distribution ordinaire de Raspbian ne fournit pas. En supposant que vous êtes déjà capable de vous connecter au Pi, de préférence sans clavier, souris ni écran externes reliés au Pi pour garder les coûts bas.
Mises à jour
Comme avec tout ordinateur et tout Linux en particulier étant donné le temps très court de développement, il y a de grandes chances que votre image tout juste téléchargée nécessite des mises à jour. Ce n'est pas un défaut de Linux, simplement un rappel qu'une communauté de centaines de programmeurs ne vous ont pas attendu pour sortir des corrections à des problèmes identifiés. Le Raspberry Pi présente toutefois une particularité: il tourne sur logiciels libres, mais pas complètement (ce qui va faire râler les puristes); en effet, certaines fonctions des puces sont gérées par des morceaux de code propriétaires, et conséquemment ne sont pas prises en charges par les mêmes applications. Apt-get se charge du code libre, tandis que rpi-update gère le code propriétaire.
Avec la méthode classique, on fait:$ sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -yDans l'ordre, && permet d'enchaîner les commandes, utile quand on n'a pas que ça à faire: on rafraîchit la liste des paquets (l'équivalent de [ctrl]+[R] pour recharger une page web), on met à jour les logiciels installés sans confirmation (on a déjà donné son accord avec -y pour yes), et on met à jour le kernel Linux. (Source)
Et puisqu'il faut gérer des bouts de code fermé, on le met à jour séparément:
$ sudo rpi-updateLes autres fonctions sont expliquées sur la page du programmeur.
Configurer le wifi sans interface graphique
Si vous avez branché une interface USB wifi avant le démarrage de la machine, il est possible de la configurer pour s'accrocher à un réseau WPA2 sans devoir passer par l'interface graphique. Bien sûr, il faudra quand même une connexion Ethernet la première fois.
Manip:
$ sudo nano /etc/network/interfaces
Modifier comme suit:
auto wlan0
iface wlan0 inet manual
allow-hotplug wlan0
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
puis
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
network={
ssid="votre_nom_de_réseau"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
psk="mot_de_passe"
}
Puis redémarrer
$ sudo shutdown -r now
Débrancher le câble Ethernet, puis tenter une connexion SSH. Si ça rentre, c'est que la config est bonne, sinon, vérifier après avoir rebranché Ethernet avec
$ ifconfig wlan0
si l'interface a bien reçu une IP locale.
(Source)
htop
Vu la puissance limitée de l'animal, plus souvent qu'autrement vous voudrez savoir ce qui occupe le processeur. Il existe bien sûr le très standard top, mais son austérité peut en rebuter plus d'un. Je lui préfère htop, plus coloré. De même que les masochistes puristes préfèrent vim, les gens normaux choisissent nano (shameless troll mongering!). C'est d'ailleurs avec lui que j'ai pu voir l'étonnante optimisation de lecture des vidéos haute définition; à 1080p et 30 frames par seconde, le CPU ne souffre même pas avec à peine plus de 30% utilisés!
$ sudo apt-get install htop
fsck.vfat
Considérant le nombre de fois que vous allez planter la machine, connaître les bases de la commande fsck n'est pas de trop. Cependant, il en manque toujours un bien important puisqu'il permet de rechercher les erreurs sur la partition de boot, qui est, comme on s'en souvient, non pas formatée dans un quelconque format ext, mais bien en FAT32. Il faut donc installer le paquet dosfstools, dans lequel se trouve fsck.vfat.
Partition /dev/mmcblk0p1
Elle est normalement montée à /boot, qui n'est pas active en situation normale.
On démonte donc, puis on vérifie avec
Partition /dev/mmcblk0p2
C'est toujours un peu inquiétant de lire parmi les écrits de démarrage "Volume has not been unmounted properly, please run fsck", ou quelque chose du même genre, conséquences normales des plantages. Et comme de fait exprès, on ne peut pas exécuter fsck sur un volume monté sous peine de corruption massive! Et on ne peut pas démonter un volume en cours d'utilisation. Pour redémarrer à partir de la ligne de commande ET passer un coup de fsck par la même occasion:
$ sudo shutdown -rF now
Ce qui dit, texto: "redémarre maintenant, et n'oublie pas de faire le ménage en redémarrant"
(Source)
exfat-utils
Encore un paquet utile à avoir si vous comptez connecter un disque dur compatible Windows sur le Pi.
Pour le monter une fois installé le paquet, on peut le faire manuellement à la manière classique:
$ sudo mount -t exfat /dev/nom_disque_windows /media/point_de_montage
Par contre, impossible d'utiliser pmount (sans provilèges root) sur du exFAT pour le moment. Pour se passer des privilèges admin, il faudra au moins une fois inscrire le disque dans /etc/fstab.
Pour vérifier si un disque dur en exFAT contient des erreurs, il faut d'abord le démonter puis le vérifier avec exfatfsck.
$ sudo umount /dev/nom_disque_windows
$ sudo exfatfsck /dev/nom_disque_windows
exfatfsck 0.9.7
Checking file system on /dev/nom_disque_windows.
File system version 1.0
Sector size 512 bytes
Cluster size 128 KB
Volume size 233 GB
Used space 218 GB
Available space 14 GB
ERROR: real size does not equal to size (0 != 32768).
ERROR: failed to open directory `/.Spotlight-V100/Store-V2/62D6CC72-537D-4896-ACDB-11D7DFE76D1F'.
ERROR: real size does not equal to size (28672 != 32768).
ERROR: failed to open directory `/.Spotlight-V100/Store-V1/Stores/E6974D85-E205-484E-AA92-461E15E03081'.
ERROR: bad date 1980-01-00.
Totally 745 directories and 4306 files.
File system checking finished. ERRORS FOUND: 5.
Cette variante de fsck ne fait que reporter la présence d'erreurs mais ne peut pas les corriger. Il faudra obligatoirement passer par une machine Windows pour ce faire.
hfsprogs
Dans le cas présent, tous mes disques durs externes sont dans le format HFS+, les machines qui servaient à lire les films étant tous des Mac. Comme il est très lent et malaisé de transvaser le contenu d'un disque pour le reformater, ce paquet permettra leur lecture seule.
Utiliser le serveur X11 local
Passons maintenant à un irritant courant lors de la commande de machines à distance: certains programmes refusent de lancer une interface graphique à distance malgré la présence d'un serveur X11 à la fois localement et à distance. On le remarque à cette ligne, peu parlante et sans conséquence si l'on reste en ligne de commande:
Warning: No xauth data; using fake authentication data for X11 forwarding.
Plutôt que de chercher à résoudre ce bug, ce qui peut être long, on préfèrera lancer les applications graphiques demandant sudo avec gksudo, plutôt que sudo.
Gparted
Je sais bien qu'il existe sa version en ligne de commande parted, mais comment dire, ça reste assez austère, puis j'aime bien les couleurs de GParted.
Comparez plutôt:
Par contre, pour éviter un problème lié au serveur X, il faudra lancer GParted avec la commande
$ gksudo gparted
Pour autant, GParted ne peut pas lui-même créer de partition exFAT. On utilisera donc la commande
$ sudo mkfs.exfat /dev/disque_à_formater
pour créer le système de fichier exFAT sur un disque préalablement identifié avec GParted (parce que c'est plus simple), ou avec sudo fdisk -l. D'autres options sont disponibles pour le formatage, auxquelles ont peut accéder avec
$ man mkfs.exfat
ou bêtement par là.
Interface graphique, sans écran
Il suffit d'ajouter -Y ou -X à la commande de connexion:
$ ssh pi@raspberrypi.local -Y
Quand un programme graphique sera appelé, il s'affichera sur l'ordinateur qui commande le Pi.
Overclock
Le Pi ayant une puissance tout de même limitée, on apprendra avec bonheur qu'il peut être overclocké de façon logicielle. La manière simple fait appel à raspi-config, mais bien d'autres options sont disponibles dans le fichier config.txt, notamment pour gérer séparément le GPU et le CPU. C'est un overclock dynamique, où les réglages indiquent la vitesse maximale atteinte par le processeur sous lourde charge. Bien sûr, en fonctionnant ainsi hors spécifications, tous les Pi ne naissent pas égaux. Les plus chanceux seront stables passé 1GHz, d'autres ne pourront pas atteindre 800MHz sans planter, même avec un petit radiateur collé sur le CPU. Vu que la consommation augmente, une alimentation de première qualité est indispensable. Attention toutefois, le survoltage annule la garantie.
Il y a aussi une fonction automatique qui diminuera la vitesse du processeur s'il devient trop chaud. On peut voir la température en temps réel avec la commande
$ watch cat /sys/class/thermal/thermal_zone0/temp
qui donne une valeur en milli-Celsius. Un joli script présentant la fréquence et la température est présenté par Lokir (et un test très simple de stabilité dans les commentaires), et un autre moyen de tester la stabilité est présentée sur le wiki officiel.
La même chose pour le GPU:
$ /opt/vc/bin/vcgencmd measure_temp
Avec un script réunissant tout ça, par Kafol. Et encore un autre, plutôt joili et simple à utiliser, par MilhouseVH.
D'autres pièges possibles sont décrits sur le forum officiel.