Le RaspberryPi : Installer et utiliser le partage de fichier NFS

Transcription

Le RaspberryPi : Installer et utiliser le partage de fichier NFS
Le RaspberryPi : Installer et utiliser le partage de fichier NFS
Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr
Installation du partage de fichier NFS : le raspberryPi en serveur NFS
•
J'ai déjà décrit la procédure sous Ubuntu en détail ici : Mise en place d'un partage de fichier NFS via réseau wifi entre le PC embarqué et le PC fixe,
C'est quoi le partage de fichier
•
Le partage de fichier va consister à ouvrir sur le poste fixe le répertoire utilisateur du RaspberryPi et à y travailler comme si c'était un répertoire de votre
PC fixe !! Vous allez alors pouvoir copier / coller des fichiers qui seront instantanément copier/coller sur le RaspberryPi et inversement.
•
•
Ceci va s'avérer très pratique surtout lorsque le RaspberryPi sera loin du poste fixe.... aucune intervention physique ne sera nécessaire !
Ceci va également être très intéressant pour transférer des fichiers... sans fil, car çà fonctionne aussi bien en wifi qu'en filaire !
Préalable
•
•
Sachez que vous pouvez à tout moment utiliser le « partage de fichier pour les nuls » avec... une simple clé USB !! Vous copier le fichier voulu du
RaspberryPi ou de votre PC sur une clé USB... et vous le copiez ensuite sur le poste de destination.
Ceci fonctionne très bien mais devient vite fastidieux... !!
Aspects techniques
•
•
Plusieurs techniques sont possibles, notamment SAMBA, NFS : nous utiliserons ici NFS qui est plus spécifique au monde Gnu/Linux.
Au niveau du réseau, le partage NFS va utiliser les ports 2049 (nfs) et 111 (rpcbind)
Installation des paquets nécessaire
•
On commence donc par installer les paquets nécessaire pour transformer le RaspberryPi en serveur NFS : nfs-kernel-server et nfs-common (est installé en
même temps que nfs-kernel-server). Ce qui donne en ligne de commande :
$ sudo apt-get install nfs-kernel-server nfs-common
Paramétrage du dossier partagé
•
On va partager ici le répertoire /home/pi/ du RaspberryPi (serveur). On commence par éditer du fichier /etc/exports
$ sudo geany /etc/exports
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 1 / 6
•
Ajouter dans le fichier exports (pour pouvoir partager sur des réseaux ayant comme racine 192.168.0, .1 ou .2 - à adapter à votre situation) :
# pour avoir tous les droits root :
/home/pi 192.168.0.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check) # autorise accès par client 192.168.0.x en lecture / écriture
/home/pi 192.168.1.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check) # autorise accès par client 192.168.1.x en lecture / écriture
/home/pi 192.168.2.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check) # autorise accès par client 192.168.2.x en lecture / écriture
•
Une fois que fait, pour que les modifs soient prises en compte, on fait :
$ sudo exportfs -a
•
ou mieux
$ sudo exportfs -ra
•
avec
◦ -a : exporte tous les répertoires
◦ -r : ré-exporte tous les répertoires
Configuration autorisations dans hosts.deny
•
On ouvre hosts.deny et on interdit tout par défaut
$ sudo geany /etc/hosts.deny
•
Ajouter les lignes
#pour partage NFS
# Tout interdire sur portmap, nfsd et mountd
# les autoriser par hosts.allow
portmap:ALL
lockd : ALL
mountd:ALL
rquotad : ALL
statd : ALL
#nfsd:ALL
Configuration autorisations dans hosts.allow
•
On ouvre hosts.allow et on autorise les adresses voulues :
$ sudo geany /etc/hosts.allow
•
On ajoute les lignes :
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 2 / 6
#partage NFS
#Autoriser ces clients à se connecter avec services portmap, nfsd, moundt
portmap:ALL
lockd:192.168.
mountd:192.168.
rquotad:192.168.
statd:192.168.
#nfsd:192.168.
Activation de rcpbind
•
Lors du lancement du serveur NFS, il y a un warning avec portmapper... sur le raspberryPi. En fait, il semble que le service rpcbind ne fonctionne pas par
défaut sur le raspberryPi. Voir ici : http://www.raspbian.org/RaspbianFAQ « On the current version of Raspbian, rpcbind (part of the portmap package) does
not start by default. This is presumably done to control memory consumption on our small systems. However, it isn't very big and we need it to make an
NFS mount. »
•
Pour l'activer manuellement :
$ sudo service rpcbind start
•
Pour l'activer au démarrage, ce qui est préférable :
$ sudo update-rc.d rpcbind enable
Redémarrage serveur NFS
•
On relance NFS
$ sudo /etc/init.d/nfs-kernel-server reload
•
ou mieux, on redémarre le service :
$ sudo /etc/init.d/nfs-kernel-server restart
+/- Activation ipv6
•
•
Au démarrage du serveur NFS, on a un message de warning indiquant que nfsd ne supporte pas ipv6. A priori, çà n'a pas d'impact sur ipv4 donc çà doit
marcher. Ceci étant, pour résoudre çà :
soit on l'installe en manuel avec :
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 3 / 6
$ sudo modprobe ipv6
•
soit on charge ipv6 au démarrage avec :
$ sudo geany /etc/modules
•
Ajouter la ligne
ipv6
Vérification
•
Pour vérifier que tout est ok, on peut faire :
$ rpcinfo -p
Récupérer adresse ip du RaspberryPi
•
Une fois fait, il suffit de monter le raspberryPi sur le poste client pour pouvoir échanger des copier coller des fichiers. On commence par retrouver l'adresse
ip du raspberryPi avec la commande
$ ifconfig
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 4 / 6
Accéder au partage de fichier depuis le client Gnu/Linux
Attention : la suite de la procédure se passe sur le poste fixe qui accède au Raspberry Pi
Installation des paquets utiles
•
Installer les paquets : nfs-common (et nfs-server tant qu'on y est... ? )
$ sudo apt-get install nfs-common
Création d'un point de montage sur le client
•
Dans une console, on crée un répertoire pour le montage :
$ sudo mkdir /mnt/nfs
Montage du serveur (le RaspberryPi) sur le client (le poste fixe)
On utilise ici l'adresse du serveur : 192.168.1.x C'est l'adresse obtenue par ifconfig sur le raspberryPi On peut également obtenir cette adresse par nmap.
$ sudo mount -t nfs 192.168.1.x:/home/pi/ /mnt/nfs
ou
$ sudo mount -t nfs -o rw 192.168.1.x:/home/pi/ /mnt/nfs
Voilà, si pas de message d'erreur, c'est bon... Ne pas oublier le / avant le nom du chemin de montage après l'adresse...
A noter, pour automatiser le montage NFS depuis le poste client, on pourra utiliser un sccript comme par exemple :
#!/bin/bash
# script montage NFS
# par XH - Aout 2011
echo "--- script de Montage NFS côté client ---" $disque
read -p "Quelle est l'adresse du serveur NFS (192.168.x.x ou équiv.) ? " adresse #saisie de l'adresse
echo "L'adresse IP du serveur NFS à monter est :" $adresse
read -p "Quel est le répertoire du /home du serveur NFS à monter sur le client (/xavier ou /glapbox/Bureau ou équiv) ?" repertoire #saisie du répertoire
echo "Le répertoire du /home du serveur NFS à monter sur le client est :" $repertoire
echo "Le script va monter "$adresse":/home"$repertoire"/ sur /mnt/nfs"
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 5 / 6
read -p "<OK>" # pour attendre entrée pour continuer
sudo mount -t nfs -o rw $adresse:/home$repertoire/ /mnt/nfs
echo "Opération terminée"
read -p "<OK>" # pour attendre entrée pour sortir
exit 0 ;
Test
•
+/- Saisir dans la console pour voir si le montage nfs est bien en place :
$ mount | grep nfs
•
ce qui donne
nfsd on /proc/fs/nfsd type nfsd (rw)
192.168.1.3:/home/xavier/ on /mnt/nfs type nfs (rw,addr=192.168.1.3)
•
Aller dans le répertoire /mnt/nfs : on doit voir le contenu de RaspberryPi ! On peut dès lors réaliser des échanges de fichiers entre la RaspberryPi
et le PC de contrôle en toute simplicité !
•
On pourra également créer un lanceur sur le bureau du client vers le répertoire /mnt/nfs pour accéder facilement au contenu du répertoire. A noter que pour
ouvrir un dossier à partir d'un lanceur, il faudra faire :
• sous Ubuntu : nautilus /rep
•
sous xubuntu : thunar /rep
Bon à savoir
Si on veut démonter le partage NFS du côté client, dans un terminal on fait :
$ sudo umount /mnt/nfs
Le RaspberryPi : Personnalisation du système Gnu/Linux (Raspbian) de base - Par X. HINAULT – Octobre 2012 – www.mon-club-elec.fr – p. 6 / 6