Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 135

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 135

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 187

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 188

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 189

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 194

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 195

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 196

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 197

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 241

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 264

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 269

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 275

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 285

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 286

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 296

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 297

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 298

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 308

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 309

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 310

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 311

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 321

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 322

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 323

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 324

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 325

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 497

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 527

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 540

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 587

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 626

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 668

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 668

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 670

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 673

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 682

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 688

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 693

Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php on line 699

Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.http.php on line 436

Deprecated: Function get_magic_quotes_gpc() is deprecated in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.http.php on line 436

Notice: Trying to get property 'spamout_rbl' of non-object in /home/ftp83plu/public_html/dc/dotclear/plugins/spamout/inc/class.spam.out.php on line 20

Warning: Cannot modify header information - headers already sent by (output started at /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php:309) in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.http.php on line 298

Warning: Cannot modify header information - headers already sent by (output started at /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php:309) in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.http.php on line 300

Warning: Cannot modify header information - headers already sent by (output started at /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php:309) in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.http.php on line 300

Warning: Cannot modify header information - headers already sent by (output started at /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php:309) in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.http.php on line 300

Warning: Cannot modify header information - headers already sent by (output started at /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php:309) in /home/ftp83plu/public_html/dc/dotclear/inc/public/lib.urlhandlers.php on line 110

Warning: Cannot modify header information - headers already sent by (output started at /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php:309) in /home/ftp83plu/public_html/dc/dotclear/inc/public/lib.urlhandlers.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.json.php:309) in /home/ftp83plu/public_html/dc/dotclear/inc/libs/clearbricks/common/lib.http.php on line 321
Petites astuces pour le Raspberry Pi et assimilés - Cerebro Seco

Cerebro Seco

Se faciliter la vie informatique sans sacrifier ses principes!

Aller au contenu | Aller au menu | Aller à la recherche

Petites astuces pour le Raspberry Pi et assimilés

ODT

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 -y
Dans 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-update
Les 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:

Capture_d_e_cran_2014-08-23_a__03.44.00.pngCapture_d_e_cran_2014-08-23_a__03.44.48.png

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.

Creative Commons License
Cerebro Seco by http://cerebroseco.ftp83plus.net is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
Based on a work at http://cerebroseco.ftp83plus.net.