Articles tagués “raspberry pi

Raspberry Pi, WiFi, ssh et ligne de commande

J’ai rebranché mon vieux Raspberry Pi pour les besoins de geekeries personnelles. J’ai vu qu’il existait une version Lite de Raspbian et j’ai choisi de l’utiliser car mon Raspberry Pi n’est pas de première jeunesse et ma carte SD ne fait que 4 Go. J’ai eu une petite surprise en démarrant le système : il n’y a pas de serveur X. Il faut donc tout faire en ligne de commande. Challenged accepted!

Démarrer le Raspberry Pi

Raspbian Lite est téléchargeable sur le site de la fondation Raspberry. La version actuelle est Jessie. Je me suis aidé de deux articles que j’avais écrit il y a déjà longtemps pour créer ma carte SD avec l’image du système. J’ai branché mon clavier, ma télé, l’alimentation et j’ai obtenu prompt.

Changer le layout du clavier

Parce que qu’un système qwerty quand on a un clavier azerty c’est pas sympa, surtout si on a besoin d’utiliser des symboles, j’ai commencé par passer en azerty. Internet vous propose plusieurs techniques, j’ai utilisée celle-ci :

sudo dpkg-reconfigure keyboard-configuration

La configuration est intuitive avec une interface type ncurse. Quand c’est terminé, il suffit de redémarrer avec la commande reboot.

Configuration du WiFi

Aucune difficulté à ce que Raspbian reconnaisse mon dongle WiFi. Je l’ai branché et il est directement apparu comme wlan0 quand j’ai appelé la commande ifconfig. La partie un peu moins fun est la configuration du réseau WiFi (SSID + passphrase). La fondation Raspberry propose un tutoriel pour cela. Je crois avoir eu besoin de redémarrer à nouveau pour que ça fonctionne (en plus de la procédure expliquée dans le lien).

Configuration IP manuelle

En général, le serveur DHCP de votre box assignera toujours la même IP à votre Raspberry Pi. Il est quand même plus prudent de lui affecter une adresse IP fixe pour le retrouver facilement. Idéalement, il faudrait aussi demander à votre box de ne plus attribuer cette adresse IP par DHCP…

J’ai tout d’abord regardé quelle était mon adresse actuelle, quel masque de sous-réseau était utilisé et quelle était l’adresse de la gateway :

$ ifconfig wlan0
wlan0     Link encap:Ethernet  HWaddr 74:da:38:5d:fc:6b  
          inet addr:192.168.1.17  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 2a01:cb05:8980:9400:944d:6692:7db0:9552/64 Scope:Global
          inet6 addr: fe80::9d35:79ba:e404:4253/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14436 errors:0 dropped:400 overruns:0 frame:0
          TX packets:4818 errors:0 dropped:1 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:17129734 (16.3 MiB)  TX bytes:701974 (685.5 KiB)
$ ip route
default via 192.168.1.1 dev wlan0  metric 303 
192.168.1.0/24 dev wlan0  proto kernel  scope link  src 192.168.1.17  metric 303

J’ai ensuite modifié le fichier /etc/network/interfaces de manière adaptée :

cat /etc/network/interfaces
[...]

allow-hotplug wlan0
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    gateway 192.168.1.1
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

[...]

Activation de ssh

La dernière étape pour que mon système puisse être headless était d’activer le serveur SSH et ainsi pouvoir me connecter depuis mon ordinateur de bureau. La fondation Raspberry explique comment faire ceci dans ce tutoriel. Avec Raspbian Lite, il suffit de créer un fichier ayant pour nom ssh, à la racine de la carte SD. J’ai donc éteint mon Raspberry Pi et j’ai inséré ma carte mémoire dans mon Mac et j’ai utilisé le terminal :

$ cd /Volumes/boot/
$ touch ssh

Une fois le Raspberry Pi redémarré, vous pouvez regarder si le serveur SSH est démarré avec la commande suivante :

ps -eaf | grep ssh

Si vous un brin plus optimiste, vous pouvez essayé directement depuis votre PC :

$ ping 192.168.1.17
PING 192.168.1.17 (192.168.1.17): 56 data bytes
64 bytes from 192.168.1.17: icmp_seq=0 ttl=64 time=18.548 ms
64 bytes from 192.168.1.17: icmp_seq=1 ttl=64 time=6.127 ms
^C
--- 192.168.1.17 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 6.127/12.337/18.548/6.211 ms
imac-de-pierre:/ pierregradot$ ssh pi@192.168.1.17
The authenticity of host '192.168.1.17 (192.168.1.17)' can't be established.
ECDSA key fingerprint is SHA256:xv5CB0epvX+e8sKhgLFp2bP+1jzU8j7PzGAVAnZs8q4.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.17' (ECDSA) to the list of known hosts.
pi@192.168.1.17's password: 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Apr  3 16:22:55 2017
pi@raspberrypi:~ $ echo "Hell yeah!"
Hell yeah!
pi@raspberrypi:~ $ 

Et voilà ! J’ai débranché le Raspberry Pi de la télé, j’ai rangé mon clavier, et c’était bon !

PS : en fait, si vous avez un câble Ethernet, vous pouvez vous passer d’un clavier et d’une télé. Voici comment faire : Headless Raspberry Pi Setup.

 

 

Publicités

Une carte SD avec Raspbian

Il y a longtemps, j’ai installé NOOBS et Raspbian sur mon Raspberry Pi. J’avais démarré la bête, j’avais trouvé fun et j’avais rangé le tout. J’avais surtout besoin de la carte SD pour la remettre dans mon appareil photo. Ces temps-ci, j’avais envie d’utiliser mon Raspberry Pi pour tester un écran qui me résiste avec un PIC. Pour faire simple, j’ai choisi d’utiliser Raspbian. Voici quelques notes pour l’installer.

La première étape était de télécharger l’archive. Un lien est disponible sur le site de la fondation. J’ai utilisé SHA-1 pour vérifier qu’elle était OK ^^ Sur cette même page de téléchargement, il y a un lien vers un guide for beginners. J’ai d’abord choisi PiWriter2. L’approche drag and drop me semblait simple et est bien dans l’esprit Mac.

Le fichier dmg contient un README.txt qui donne les instructions à suivre. Une fois la carte SD formatée (voir mon article sur NOOBS), il suffit de faire glisser l’icône de cette carte depuis le Finder vers la fenêtre de PiWriter2. Une pop-up s’ouvre et on peut choisir de sauvegarder la carte ou alors d’y écrire une image. Une autre pop-up s’ouvre pour aller trouver sur le disque dur le fichier img de la distribution Linux. Le zip de Rapsbian contient ce fichier img. Malheureusement, cela n’a pas fonctionné chez moi à partir de cette étape… Il n’arrivait pas à démonter la carte pour travailler dessus. Le README.txt indique une procédure pour fournir les droits administrateur mais cela n’a pas fonctionné non plus. En glissant ma carte SD sur la fenêtre de PiWriter2, il me demandait mon mot de passe administrateur mais s’arrêtait là… Je vous conseille cette solution si elle marche chez vous, elle semble vraiment simple.

J’ai donc choisi la méthode brute et ai utilisé la ligne de commande avec dd. Vous pouvez suivre ce tutoriel très clair. J’ai simplement changé dans les paramètres de dd le nom du lecteur : j’ai remplacé disk1 par rdisk1. Cette astuce est expliqué dans le guide pour débutant déjà cité :

Note: In OS X each disk may have two path references in /dev:

  • /dev/disk# is a buffered device, which means any data being sent undergoes extra processing.
  • /dev/rdisk# is a raw path, which is much faster, and perfectly OK when using the dd program.

On a Class 4 SD card the difference was around 20 times faster using the rdisk path.

Voici les commandes nécessaires et leurs résultats (on remarquera que la commande de démontage n’a pas beaucoup d’effets visibles sur le contenu de la liste) :

$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            499.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.9 GB    disk1
   1:             Windows_FAT_32 BOOT                    15.9 GB    disk1s1

$ diskutil unmountdisk /dev/disk1
Unmount of all volumes on disk1 was successful

$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            499.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.9 GB    disk1
   1:             Windows_FAT_32 BOOT                    15.9 GB    disk1s1

$ dd if=2014-01-07-wheezy-raspbian.img of=/dev/rdisk1 bs=2m
1412+1 records in
1412+1 records out
2962227200 bytes transferred in 683.745051 secs (4332356 bytes/sec)

Vous voyez qu’il faut attendre un moment. La première fois, je n’avais pas mis l’option bs et ça a été vraiment long… Au bout d’un moment, j’ai fait Crtl+C et la console m’a indiqué que ça avait tourné quelque chose comme 3300 secondes et ce n’était pas fini… On peut débrancher et rebrancher la carte et on constate qu’elle contient des trucs. Il suffit de la mettre dans le Raspberry Pi et de le démarrer. La suite est semblable à ce que j’ai expliqué dans mon article sur NOOBS.


Utilisation de SHA-1 pour vérifier la conformité d’un fichier

Si je me suis intéressé à SHA-1 ce soir, c’est parce que j’ai voulu téléchargé NOOBS, la distribution pour débuter sur Raspberry PI et proposé par le site de la fondation. Comme souvent avec ce genre de gros fichiers, on nous fournit un checksum, qu’il soit MD5 ou SHA-1. Je savais que ça servait à vérifier la conformité du fichier téléchargé mais je ne m’y étais jamais intéressé.

SHA-1 est une fonction de hachage utilisée en cryptographie. Pour des détails sur son fonctionnement, vous pouvez lire l’article Wikipédia qui lui est consacrée. Le résultat de la fonction SHA-1 appliquée sur le message constitué par les bytes de l’archive téléchargée donne une signature unique au fichier. Si lors de son téléchargement, il y a eu une erreur, alors le résultat ne sera pas concordant avec celui donné sur le site de Raspberry Pi et je n’aurai plus qu’à télécharger à nouveau mon fichier. SHA-1 accepte un message d’une taille pouvant allé jusqu’à 2^64 bits. Ça laisse de la marge quant à la taille du fichier.

Le site d’Apple m’a donné une technique simple pour le calculer, avec la commande openssl. Voici ce que ça donne sur l’archive téléchargée avec Vuze :

$ openssl sha1 NOOBS_v1_2_1.zip
SHA1(NOOBS_v1_2_1.zip)= bdb61930b077dcefd22b36caaa9698bdf76b290d

Le résultat contient 40 caractères hexadécimaux, ce qui correspond bien aux 160 bits que rend la fonction. Je compare ce long numéro à celui fourni sur le site Raspberry Pi (par exemple, avec un petit copier-coller et la fonction de recherche dans la page de mon navigateur) et hop ! Correspondante parfaite ! Mon fichier va bien !

PS : notez qu’il est possible de remplacer sha1 par md5 dans la commande fournie au cas où on vous donnerait un checksum md5 et non SHA-1 😉