Une nouvelle version de la distribution Raspbian vient de sortir, version du 10 mai 2016.

Quoi de neuf dans cette nouvelle mise a jour ? Un bref résumé, sans entrer dans les détails :

  • amélioration du Bluetooth et de l’interface de gestion, support à présent du Bluetooth audio
  • la possibilité de copier toute la carte SD système vers une autre carte SD : pratique pour créer une sauvegarde / un clone de notre système à un instant t.
  • une nouvelle bibliothèque pour gérer l’accès aux broches GPIO, et facilité la programmation. Parmi les idées intéressantes : plus besoin de lancer les programmes python en sudo pour utiliser le GPIO. La bibliothèque : pigpio de abyz.co.uk
  • intégration de l’éditeur de texte geany, mon éditeur de base depuis très longtemps
  • mise à jour de pas mal d’applications et du noyau linux
  • le truc manquant depuis si longtemps : on peut vider la corbeille en faisant un clic droit dessus ; Il y a enfin cette option dans le menu contextuel !
  • A l’installation, quelques petites nouveautés dont par exemple le fait qu’au premier boot, le système s’étend pour occuper toute la carte SD, plus besoin de le faire à la main

Pour mettre à jour, comme d’habitude :

sudo apt-get update
sudo apt-get dist-upgrade

Pour installer les autres softs supplémentaires :

sudo apt-get install piclone geany usb-modeswitch python-pigpio python3-pigpio

Liens :

logo_seafileL’objectif de cet article : installer un serveur de fichiers sur mon Raspberry Pi pour me permettre de synchroniser des documents entre plusieurs ordinateurs.

Au départ je voulais me tourner vers Owncloud, mais c’est trop lourd, et ça fait un tas de choses dont je n’ai pas utilité pour le moment.

Seafile est plus léger et fait parfaitement adapté à ce que je souhaite faire. De plus il existe une version prévue pour le Raspberry Pi. Seafile permet de synchroniser des fichiers et de partager des documents.

Seafile est un logiciel libre (pour la version Community), il se décline sous toutes les plates-formes et possède des clients Linux, Windows, Android et Mac. On peut aussi utiliser un navigateur internet pour se connecter. C’est un système de stockage de fichiers en mode Cloud. Comme il est libre, c’est pour moi la garantie de toujours contrôler mes données.

Seafile utilise une base de données pour fonctionner : on peut donc utiliser MySQL ou SQLite. Vu que la base ne prendra pas trop de place, et pour s’éviter une installation de MySQL, j’ai choisi d’utliser SQLite. De même, il peut s’interfacer sur un annuaire LDAP, mais je n’utiliserais pas cette option : pour une utilisation personnelle, cela ne sert pas à grand chose.

Préparer Rasbian pour Seafile

Pour commencer on met a jour le Raspberry, ça coûte rien :

sudo apt-get update
sudo apt-get upgrade

Prérequis pour Seafile : (en mode SQLite)

  • python 2.7 or python 2.6.5+
  • python-setuptools
  • python-imaging
  • (python-ldap)
  • sqlite3

Si vous avez avez la dernière version de Raspbian à jour, il ne manquera que : python-setuptools, python-imaging, sqlite3 :

sudo apt-get install python-imaging python-setuptools sqlite3

 

Télécharger Seafile

Comme je vais avoir des fichiers à stocker, pas la peine de compter sur la carte SD du Raspberry : je vais utiliser un disque externe pour cela (voir cet article sur la mise en place de ce disque externe).

Pour rappel, ce disque dur est accessible dans ma configuration sous /media/Data/. Commençons par ouvrir un terminal pour travailler et plaçons nous sur le disque dur externe :

cd /media/Data/

je commence par y créer le répertorie dans lequel sera Seafile, et je m’y déplace :

mkdir seafile
cd seafile

Il me faut à présent télécharger une version de Seafile compatible avec le Raspberry. L’archive de Seafile pour le Raspberry se trouve ici : https://github.com/haiwen/seafile-rpi. Nous allons prendre la dernière version stable, soit la 5.0.5 qui se trouve : https://github.com/haiwen/seafile-rpi/releases/download/v5.0.5/seafile-server_stable_jobenvil_5.0.5_pi.tar.gz

Nous allons faire tout ça dans notre terminal (nous sommes dans /media/Data/seafile/ pour rappel) :

  1.  télécharger notre archive de seafile
  2. l’extraire
  3. créer un répertoire (seafile_archive) et la déplacer dedans dedans (pour l’avoir sous la main au cas où)

Ce qui donne :

wget https://github.com/haiwen/seafile-rpi/releases/download/v5.0.5/seafile-server_stable_jobenvil_5.0.5_pi.tar.gz
tar -xzvf seafile-server_stable_jobenvil_5.0.5_pi.tar.gz
mkdir seafile_archive
mv seafile-server_stable_jobenvil_5.0.5_pi.tar.gz seafile_archive/

Installation de Seafile

Les fichiers ont été extraits, on peut lancer l’installation. Déplaçons-nous dans le répertoire du serveur Seafile pour lancer l’installation :

cd seafile-server-5.0.5
./setup-seafile.sh

Le script  setup-seafile.sh va poser quelques questions pour configurer Seafile :

Seafile1

Seafile nous donnes quelques infos, on fait juste [ENTER] pour passer à la suite.

Seafile2

Seafile commence par vérifier les dépendances : comme nous avons mis tout ce qu’il faut, il demande un nom pour le serveur.

Seafile3

On donne ensuite l’IP du Raspberry. Donc une bonne idée est de lui mettre une IP fixe, comme expliqué dans cet article ou celui-ci pour le wifi.

Seafile4

Seafile nous demande ensuite où stocker les données. Puisque nous l’avons installé sur un disque externe, les données seront la aussi : il nous propose donc /media/Data/seafile/seafile-data. Je fais juste [Entrée] pour valider car c’est ce que je veux.Seafile5

On peut changer le Port du serveur. C’est une bonne idée si on déploie Seafile en production. Si on veut conserver la valeur par défaut, on fait jsute [Entrée].

Seafile6

Seafile nous résume notre configuration avant de passer à la suite.

Seafile7

Puis conclut la configuration :

Seafile-8

Seafile crée les bases de données. Il termine en précisant les deux commandes à lancer pour être exécuté :

  • ./seafile.sh (avec l’option start, restart et stop) qui lance Seafile
  • ./seahub.sh (même genre d’options) qui lance le serveur web SeaHub, pour se connecter avec son navigateur

Lancement de Seafile

Dernière étape : lancer Seafile et se connecter avec son navigateur internet. Dans le terminal on lance :

./seafile.sh start

Puis il faut lancer le serveur SeaHub pour pouvoir se connecter en web :

./seahub.sh start

Au premier lancement de SeaHub, il nous est demandé de créer le compte admin : on complète alors avec une adresse mail (qui sera le login) et le mot de passe.

Seafile9

Il ne reste plus qu’à se connecter avec son navigateur internet : on utilise l’ip de la machine et le port. Si notre IP local est 192.168.1.100 et que l’on n’a pas changé le port par defaut (8000), on se rendra à l’adresse http://192.168.1.100:8000.

Et voila le résultat :

Seafile10

Petite correction sur une Raspbian configurée FR

Comme on peut le remarquer au premier lancement de seahub j’ai une ligne d’erreur qui n’empêche pas Seafile de tourner :

LC_ALL is not set in ENV, set to en_US.UTF-8 […]

En gros soucis du paramétrage de la langue. Il se trouve que lors de la configuration de ma Raspbian, j’ai mis comme charset le fr_FR.UTF-8. Dans mon cas, si je laisse comme ça, Seafile tourne bien, mais au lancement de la page web de login, il me faut systématiquement repasser sur le Français.

J’ai réglé ce problème en éditant le fichier seahub.sh. On cherche la ligne où se trouve ce bloc de code :

if [[ -z "$LANG" ]]; then
    echo "LANG is not set in ENV, set to en_US.UTF-8"
    export LANG='en_US.UTF-8'
fi
if [[ -z "$LC_ALL" ]]; then
    echo "LC_ALL is not set in ENV, set to en_US.UTF-8"
    export LC_ALL='en_US.UTF-8'
fi

Je remplace alors tous les en_US.UTF-8 par fr_FR.UTF-8. Ce qui donne :

if [[ -z "$LANG" ]]; then
    echo "LANG is not set in ENV, set to fr_FR.UTF-8"
    export LANG='fr_FR.UTF-8'
fi
if [[ -z "$LC_ALL" ]]; then
    echo "LC_ALL is not set in ENV, set to fr_FR.UTF-8"
    export LC_ALL='fr_FR.UTF-8'
fi

Puis je relance le serveur SeaHub par :

./seahub.sh restart

Et hop : le problème est résolu.

Il ne reste plus qu’à jouer un peu avec Seafile.

Les liens qui vont bien :

Dernier article d’une série de trois et point final du projet : Installer Calibre sur un Raspberry Pi, le lancer en mode serveur OPDS et me connecter dessus avec ma tablette ou mon téléphone pour parcourir ma bibliothèque numérique et télécharger des livres avec FBReader ou tout autre lecteur de e-book compatible OPDS. Rappel des épisodes précédents :

  1. Monter de manière permanente un disque dur USB
  2. Optimiser les accès en écriture sur la carte SD

Je commence par ouvrir une console. Pour installer Calibre, rien de plus simple :

sudo apt-get install calibre

Je veux que Calibre gère ma bibliothèque sur mon disque externe. Je crée tout d’abord un répertoire pour calibre dedans. Comme mon disque externe est monté sur /media/datas, je vais créer un répertoire ici :

mkdir /media/datas/calibre

A présent, je lance calibre : un assistant de bienvenue me guide pour configurer Calibre. La chose la plus importante à préciser est le répertoire.

calibre1

On précise ici le répertoire sur le disque externe

 

calibre2

 

calibre3

C’est fini

Il ne reste plus qu’à utiliser calibre pour construire sa bibliothèque numérique.

Lancer Calibre en mode serveur

Deux méthodes pour cela :

  1. lancer Calibre et dans le menu Connecter / Partager, choisir Démarrer le serveur de contenu.
  2. lancer le serveur directement dans un terminal

Je vais opter pour la seconde option, cela consommera moins de mémoire, je n’ai pas besoin de l’interface graphique de Calibre, juste du mode serveur.

Pour une info complète : Calibre Commande line interface

Pour lancer le mode serveur :

calibre-server &

Le fait de mettre & après une commande lance cette dernière et rend la main au terminal. Je peux donc fermer ma fenêtre terminal sans arrêter le serveur.

FBReader et l’OPDS

J’utilise FBReader (sous android) mais cela fonctionne avec tout autre lecteur e-books compatible OPDS.

Lançons FBReader. Choisir dans le menu : Bibliothèque Réseau

fbr1

Puis Ajouter un catalogue :

fbr2

Si on connaît l’adresse IP du Raspberry sur lequel se trouve Calibre, on peut saisir directement l’URL, sinon, on cherche sur le réseau local, c’est très rapide.

fbr3

Mon Raspberry est trouvé ainsi que le serveur Calibre. Je le sélectionne.

fbr4

C’est terminé, je peux parcourir ma bibliothèque numérique et télécharger les documents que je souhaite.

fbr5Pas besoin de relancer le scan du serveur Calibre lors d’une autre utilisation de FBReader : ma bibliothèque reste dans le menu de FBReader.

fbr6

Et voilà, tout fonctionne à merveille.

Cet article est le 2e d’une série de trois. Je vous rappelle ici mon but : faire tourner un serveur calibre sur mon Raspberry. Ma feuille de route :

  1. Monter de manière permanente un disque dur USB
  2. Optimiser les accès en écriture sur la carte SD
  3. Installer Calibre en mode serveur

La distribution Linux Raspbian pour le Raspberry est une bonne distribution, basée sur la Debian, qui est stable et performante. Mais un système Linux écrit souvent sur le disque dur pour deux raisons principales (autres que l’écriture de fichiers bien sur) :

  1. le swap
  2. les fichiers log

On va donc essayer de réduire ces deux choses pour limiter les accès en écriture sur la carte et ainsi augmenter sa durée de vie. Car c’est le problème principal des cartes SD : elles se fatiguent vite si on écrit souvent dessus.

Le swap

Le swap est un fichier d’échange qui intervient lorsque la RAM commence à être pleine ou qu’elle est sollicitée par un logiciel qui a besoin de ressource : le système va alors écrire sur le disque dur une partie de la RAM pour libérer de la place. C’est une zone d’échange, une sorte de RAM virtuelle qui augmente la taille de la RAM, mais qui est bien sur plus lente car elle passe par un accès disque. Le problème ici : le swap se trouve sur le disque, donc sur la carte SD du Raspberry.

On peut donc se passer de swap tant qu’on ne demande pas au Raspberry des taches trop gourmandes en RAM (ex : retouche d’images, …)

Vérifions cette histoire de swap par la commande top (en lançant simplement top dans un terminal). On obtient ceci :

swapon

On remarque qu’il y a du swap, pour l’instant non utilisé, mais réservé à cet effet, au niveau de la ligne qui commence par KiB Swap.

Pour rappel sur la commande Top et d’autres commandes du même style par ici….

Supprimons le swap par la commande :

sudo dphys-swapfile swapoff

et relançons top pour vérifier :

swapoff

Comme on le voit à présent, il n’y a plus de mémoire réservée pour le swap. Si jamais le système devient instable ou mou, par besoin de swap, on peut le réactiver avec la commande :

sudo dphys-swapfile swapon

Il y a toutefois un soucis : au redémarrage du Raspberry, le swap est réactivé, notre commande le désactive juste quand on lui demande. On peut enlever le swap automatiquement au démarrage par la commande :

sudo update-rc.d -f dphys-swapfile remove

Voilà une affaire de régler : plus de swap pour de bon !

Les fichiers log et temporaires

Le système Linux est très bavard et il écrit pas mal de chose à tout bout de champ. Le problème est que la carte SD subit de nombreuses écritures, ce qui n’est pas bon pour elle. On va donc déplacer les fichiers log dans la RAM du Raspberry, on profitera pour faire pareil avec les fichiers temporaires. Le seul soucis est qu’on perd les fichiers log du système. Ce n’est pas gênant de manière générale, mais ça le devient en cas de serveur web.

Pour cela on va modifier un peu le fichier /etc/fstab. On l’édite par la commande :

sudo nano /etc/fstab

Puis on ajoute ces lignes à la fin :

# les fichiers de log et tempo passent en RAM
tmpfs   /tmp            tmpfs   defaults,noatime,mode=1777,size=10m     0       0
tmpfs   /var/spool      tmpfs   defaults,noatime,mode=1777              0       0
tmpfs   /var/tmp        tmpfs   defaults,noatime,mode=1777,size=10m     0       0
tmpfs   /var/log        tmpfs   defaults,noatime,mode=0755,size=10m     0       0

Je précise pour certains répertoires size = 10m, pour limiter la taille et ne pas occuper trop de RAM. Cela préserve la RAM de trop gros fichiers. J’enregistre et je reboote. A présent mes 4 répertoires sont montés en RAM et plus sur la carte SD.

C’est gagné !

[Mise à jour du 16/11/2016] :

Attention toutefois avec le répertoire /var/spool. En effet ce répertoire contient le répertoire crontab qui gère tous les appelle à cron. Cron permet de définir des taches qui seront lancées à un instant donné, ou lancées périodiquement. Le fait que le répertoire crontab soit en ram détruira à chaque reboot du Raspberry la listes des taches programmées.

Donc si vous utilisez cron sur votre Raspberry, ne mettez pas /var/spool dans la ram.

Merci à ThePhenix pour l’info !

 

 

Je souhaite utiliser mon Raspberry Pi comme serveur de e-books, de manière à pouvoir consulter ma collection de livres et autres documents numériques sur ma tablette.

J’utilise sur cette dernière FBReader pour lire mes e-books et pdf. Et sur mon pc, Calibre pour gérer ma collection de livres numériques. Calibre possède une fonctionnalité intéressante qui permet de l’activer en mode serveur OPDS: il partage le catalogue de livres sur mon réseau local et me permet de les télécharger. FBReader possède un plugin qui permet de se connecter sur ce catalogue OPDS. Je peux ainsi consulter ma bibliothèque numérique et récupérer des livres sur ma tablette pour les lire.

Mon idée est donc la suivante : utiliser mon Raspberry Pi comme serveur pour calibre. C’est un des avantages du Raspberry Pi : il est petit, consomme peu, idéal pour des petits serveurs sur son réseau local. Toutefois, je veux diminuer au maximum les écritures sur la carte SD pour augmenter la durée de vie de cette dernière. Et il me faut en plus monter un disque externe USB sur le Raspberry automatiquement à chaque boot. Ma feuille de route pour mon projet :

  1. Monter de manière permanente un disque dur USB
  2. Optimiser les accès en écriture sur la carte SD
  3. Installer Calibre en mode serveur

Commençons donc par ce premier post d’une série de trois qui va détailler toutes les actions.

Comme toujours, ouvrons un terminal. Puis branchons le disque dur USB. Le mien est déjà formaté en ext4 : en effet, comme je le réserve pour l’usage du Raspberry et que mon autre pc est sous linux, je l’ai formaté sur un système de fichier linux.

J’ai besoin de connaître le nom de ma partition usb pour pouvoir la monter sur le système de fichier du Raspberry. Pour cela :

sudo fdisk -l

Cette commande nous renvoie quelques informations (je fais un peu le ménage pour ne garder que les lignes qui m’intéressent) :

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1        8192   131071   122880   60M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      131072 62333951 62202880 29,7G 83 Linux

Device     Boot Start       End   Sectors   Size Id Type
/dev/sda1        2048 975400959 975398912 465,1G 83 Linux

Je vois les deux partitions de ma carte SD avec la Raspbian, et en dernier mon disque externe avec son unique partition : /dev/sda1

Je veux que mon disque externe soit accessible dans le répertoire /media/datas. Je commence par créer ce répertoire en root :

sudo mkdir /media/datas

Puis je monte le disque externe avec la commande :

sudo mount -t ext4 /dev/sda1 /media/datas/

Pour le démonter :

sudo umount /media/datas

Je vérifie que tout fonctionne bien et que mon disque est bien monté et accessible dans le bon répertoire. Si je reboote le Raspberry (le disque externe connecté au boot) : il n’est pas monté. Je dois donc à présent automatiser le montage du disque. Pour cela, j’édite le fichier /etc/fstab

sudo nano /etc/fstab

Je le modifie en ajoutant à la fin :

/dev/sda1    /media/datas    ext4    defaults    0    0

On enregistre et c’est bon. Bien sur et comme toujours, il faut modifier certaines valeurs en fonction du nom de la partition à monter (/dev/sda1) et du point de montage (/media/datas) que vous souhaitez avoir.

On redémarre le Raspberry pour une ultime vérification : et là, oh joie !, tout fonctionne !

Dans le prochain épisode nous verrons comment diminuer l’usure de la carte SD en essayant de réduire les accès en écriture sur la carte SD.

 

Le Raspberry PI 3

La Fondation Raspberry vient de sortir un nouveau modèle : le Raspberry Pi 3.

Plutôt que de faire un long commentaire sur ce raspi3nouveau modèle, je n’insisterai que sur les point que j’apprécie le plus, en comparaison avec le Raspberry Pi 2 :

  • le processeur passe de 1000 à 1200 MHz, toujours en quadcore, mais sur du 64 bits au lieu de 32. Il faudra donc la dernière version de Raspbian qui supporte le 64 bits. D’où le petit soucis sur le réglage du wifi.
  • toujours 1 Go de ram, pas de changement
  • Wifi et bluetooth intégré : plus besoin d’ajouter un dongle, la carte possède tout ce qu’il faut, ça libère de l’usb.
  • alimentation : usb 2.5 A. Ceci est une bonne nouvelle car cela permet de brancher un disque externe usb en ayant assez de courant pour l’alimenter. Plus besoin d’un hub usb alimenté, le Rapsberry 3 fournira le courant nécessaire au disque.
  • C’est un modèle B, donc comme le Raspberry Pi 2, les boîtiers sont les mêmes

Après avoir téléchargé la dernière version de la Raspbian, puis l’avoir installée sur la carte SD, j’essaie de refaire ma configuration de connexion Wifi avec IP fixe, comme je l’avais déjà expliquer ici.

Mais soucis : cela ne fonctionne plus du tout. La modification proposée du fichier /etc/network/interfaces ne me permet plus de configurer ma wifi en ip fixe.

D’où le correctif de ce jour.

Donner une IP fixe en Wifi

Première étape : Définir le ssid et le mot de passe de la connexion wifi

Ouvrir un terminal et éditer en root le fichier /etc/wpa_supplicant/wpa_supplicant.conf

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

A la fin du fichier, on ajoute ceci :

network={
ssid="MonSSID"
psk="LaCleWifiDeLaBox"
key_mgmt=WPA-PSK
}

On remplace bien sur MonSSID et LaCleWifiDeLaBox par les bonnes valeurs. Key_mgmt indique que notre clé wifi est de type WPA. Pour d’autres valeurs et tout savoir sur le fichier wpa_supplicant, c’est par ici.

On peut reproduire ce bloc avec d’autres valeurs, si on doit se connecter à d’autre réseau wifi : dans ce cas, faire un bloc network par réseau différent. On enregistre et c’est bon

Deuxième étape : Configurer son IP

Pour cela, et c’est là vraiment la nouveauté, il faut éditer le fichier suivant (toujours en root avec sudo) :

sudo nano /etc/dhcpcd.conf

A la fin du fichier, ajouter ceci :

# configuration ip static pour wlan0
interface wlan0
static ip_address=192.168.1.20/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

L’adresse 192.168.1.20 correspondra à l’IP que l’on veut pour l’interface wifi. Routers correspond à l’ip de la box de son fournisseur d’accès. En général on mettra cette même adresse pour le domain name servers.

On redémarre le Raspberry Pi, et voilà, on a la bonne ip !

raspbian-logoUne nouvelle mise à jour de la distribution Raspbian pour le Raspberry pi est sortie hier !

Parmi les changements intéressants autres que les correctifs de bug, meilleures performances et améliorations (ce qui est déjà très bien) :

Comme toujours, deux  méthodes pour installer : soit en installant une image toute neuve que l’on aura téléchargée, soit en faisant un update.

Rappel pour updater la Raspbian :
sudo apt-get update
sudo apt-get dist-upgrade

puis pour le gpio :
sudo apt-get raspi-gpio

Pour le driver openGL :
sudo apt-get install xcompmgr libgl1-mesa-dri

Pour activer le driver expérimental par la suite : aller dans raspi-config (menu ou ligne de commande), puis Advanced Options, et finallement, GL Driver.

Il est à remarquer que le driver consommant beaucoup de ressource, cela ne fonctionnera que sur Raspberry 2.

Je viens de recevoir (enfin) mon Raspberry Pi 2 ! C’est une belle bête, et malgré le petit bug du “flash”, j’en suis très content. Ceci dit, comme bien souvent il est dans un boîtier, ce bug n’en est pas un. Si on veut le prendre en photo, il suffit de le faire éteint.

J’ai décidé de prendre la version de Raspbian du mois de décembre : mais le Raspberry restait sans vie, juste un voyant rouge allumé, aucun signal ne venant de lui. Si vous avez ce même type de problème, il se résout simplement en installant sur la carte SD la dernière version de Raspbian, la 2015-01-31, que l’on trouve ici.

Et là, oh joie, tout marche !

Je dois bien l’avouer, ce blog me sert de pense-bête de tout ce que je fais sur mon Raspberry. Il ne faut pas oublier non plus que, un Raspberry, c’est avant tout un linux, donc ce que l’on fait sur l’un est valable aussi sur l’autre. Donc les posts de ce blog (du moins en ce qui concerne linux ) s’écrivent au fur et à mesure de ce que je veux faire : je profite de tout ce que je peux trouver, c’est donc bien normal de faire profiter à mon tour de ce que j’ai pu trouver !

Lors du dernier post, nous avons vu comment configurer en IP statique la connexion wifi. Pour une connexion ethernet, la manipulation est presque la même, sauf que cette fois-ci, on ne modifie pas l’interface wlan0, mais l’interface eth0. Je me connecte donc en ssh sur mon Raspberry Pi, et j’édite avec nano /etc/network/interfaces, enfin je repère la ligne :

iface eth0 inet dhcp

Que je modifie comme suit :

 iface eth0 inet static
 address 192.168.1.120
 netmask 255.255.255.0
 gateway 192.168.10.1

si bien sur on veut donner à notre machine l’IP 192.168.1.120. Voir encore une fois le post sur le wifi pour les explications sur les valeurs netmask et gateway.

Après avoir enregistré, il faut relancer le réseau pour que les modifications soient appliquées :

sudo /etc/init.d/networking restart

Une fois tout ceci fait, on va donner un nom à notre Raspberry. Pour cela deux méthodes : soit on passe par raspi-config, soit directement dans le fichier /etc/hosts.

Définir un nom de machine avec raspi-config

Toujours sur le Raspberry, dans le terminal, on exécute la commande :

sudo raspi-config
raspi config 1

On choisit le menu 8 : Advanced Options

raspi config 2

Puis : A2 Hostname

raspi config 3

Nous sommes prévenus de n’utiliser que des lettres majuscules et minuscules et des chiffres.

raspi config 4

On entre le nom et on valide par Entrée.

Il faut alors redémarrer les Raspberry pour que le nom d’hôte soit pris en compte.

Une fois redémarré, on se reconnecte en ssh et on constate le changement de nom de l’hôte.

Il est plus facile de se souvenir du nom d’hôte que de son adresse IP. Ainsi, lorsque je me connecte en ssh, il serait intéressant de pouvoir lancer : ssh pi@NomDuRaspberry. Pour cela il faut indiquer à notre pc le nom de notre Rasberry et son adresse IP.

Cette fois-ci, sur mon linux mint, j’ouvre une console et je lance

sudo nano /etc/hosts

Ce fichier contient, entre autre, la définition du nom de mon linux Mint, et me permet d’indiquer d’autres noms d’hôte et leur adresse IP.  On écrit dans l’ordre : Adresse IP    nom d’hôte

A la fin du fichier j’écris donc :

192.168.1.120  MonRaspberry

Si bien sur j’ai mis 192.168.1.120 comme adresse IP fixe et pour nom MonRaspberry. C’est tout l’avantage d’avoir rendu statique l’adresse IP du Raspberry. J’enregistre. Pour me connecter maintenant sur mon Raspberry en SSH, il me suffira juste d’écrire : ssh pi@MonRaspberry  pour lancer la connexion.

 

Je ne me connecte sur mon Raspberry que par ssh, vu que je n’ai pas d’écran hdmi. Mon soucis est que, puisqu’il est connecté en wifi, il me faut tout le temps chercher son IP, qui n’est jamais la même. L’idée est donc de fixer l’IP de la connexion wifi, sans passer par le serveur DHCP du routeur qui affecte une IP à la connexion. Mais comment faire ? C’est tout l’objet de ce post.

Comme toujours pour ce genre de chose : il faut y aller en ligne de commande, donc j’ai besoin d’un terminal ouvert sur mon Raspberry. je me connecte donc en ssh sur lui.

Phase un : collecte des infos

J’ai besoin pour commencer d’en savoir plus sur mon réseau. Pour cela, sur mon linux, je tape la commande suivante :

ifconfig -a

Cette commande me liste toutes les interfaces réseau ouvertes sur mon pc, et me donne par la même occasion les informations souhaitées. Sous Windowz, lancer un ipconfig -all

ip

Je m’intéresse à l’interface eth0, qui correspond à ma carte Ethernet. J’y trouve les infos nécessaires :

  • broadcast : 192.168.1.255
  • masque de sous réseau : 255.255.255.0
  • et l’adresse ip de ma machine actuelle : 192.168.1.100 (info inutile dans le cas présent)
  • il faut aussi l’IP du routeur ou de la box : dans mon cas : 192.168.1.1
  • le réseau est donc le 192.168.1.0
  • Je décide que mon Raspberry sera sur l’adresse 192.168.1.120

La configuration de l’interface réseau se trouve dans le fichier /etc/network/interfaces. Avant d’aller plus loin, il nous reste une information à obtenir pour pouvoir modifier ce fichier.

Notre réseau wifi est défini par un SSID. Si on utilise un mot de passe WPA, il faut fournir ce dernier à notre fichier de configuration sous une forme hexadécimale. Pour transformer mon mot de passe WPA en mode hexa, on exécute dans le terminal la commande suivante :

sudo wpa_passphrase MonSSID  MonMotDePasseWPA

en remplaçant bien sûr par les bonnes valeurs. La commande renvoie plusieurs infos : on ne prendra que la valeur HEX. A présent, on peut ouvrir et modifier le fichier de configuration réseau. Continuons en ligne de commande et ouvrons le avec l’éditeur nano. Il faut le lancer avec un sudo, sinon, il ne sera pas possible de l’enregistrer une fois modifié.

sudo nano /etc/network/interfaces

Je recherche ensuite les lignes qui concernent la wifi, c’est à dire : wlan0. Pour conserver les valeurs par défaut de ce fichier au cas où on voudrait y revenir, le plus simple sera de mettre les infos en commentaire (en préfixant les lignes avec le signe #), puis d’écrire la nouvelle configuration.

Je commente les lignes qui concernent l’interface wlan0

# allow-hotplug wlan0
# iface wlan0 inet manual
# wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
# iface default inet dhcp

 

J’écris les nouvelles valeurs

auto wlan0
iface wlan0 inet static
address 192.168.1.120
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
wpa-ssid MonSSID
wpa-psk xxxxxxxxxxxxxxx

xxxxxxxxxxxxxxx est la forme hexadécimale du mot de passe wifi que m’a donnée la commande précédente. Puis j’enregistre avec CTRL+ o , et je quitte avec CTRL + x

Il ne me reste qu’a redémarrer le Raspberry. Ce que je peux faire en mode terminal en écrivant :

sudo shutdown -r 0

Le Rapsberry redémarre et se connecte automatiquement sur mon réseau par la wifi, et avec l’IP 192.168.1.120. C’est gagné !