Installation et configuration d'un serveur NFS
Pré-requis
a. Un ordinateur sous linux pour créer le serveur NFS ou sur lequel on puisse installer Linux
b. Un switch réseau et le nombre de câbles réseaux ( nb de Rpi +1)
c. Une connexion réseau internet nécessaire lors de l’installation
Les commandes linux sont effectuées avec sudo mais cela ne fonctionne que si le paquet sudo est installé et configuré. Sinon vous pouvez aussi ouvrir une session en tant que Root avec la commande su qui vous demande le mdp Root.
Installation d'une distribution Debian
Il existe plusieurs distributions de Linux. Le choix de la distribution DEBIAN est lié au fait que la distribution RASPBIAN en découle. L'installation d'une distribution Linux peut se faire via différents supports. Si vous n'avez pas de lecteur de CD-ROM sur la machine sur laquelle vous souhaitez installer LINUX, l'installation à partir d'une clé USB associé au réseau est une possibilité.
a. Télécharger l'image de la distribution adéquate, correspondante au support utilisé et au processeur de la machine sur laquelle sera installer la distribution en question.
Site DEBIAN officiel de téléchargement
b. Créer une clé USB bootable
• sous linux, depuis la version Squeeze la création de la clé est devenue plus simple car elle ne nécessite plus de logiciel supplémentaire. Il faut simplement copier l’image de cd d’installation sur la clé USB avec la commande linux suivante :
dd if=nomdeladistribution.iso of=/dev/sdX # dd (utilitaire de copie) if=(input file= chemin de votre image) of=(output file= chemin physique du périphérique)/dev/sdX # (correspond au périphérique, où «X» est une lettre minuscule (a-z) à laquelle la clé est affectée)
Utilisez la commande linux suivante pour connaître le périphérique auquel la clé est associée
dmesg | grep sd # dmesg (pour visualiser les périphériques branchés associés aux fichiers linux de périphériques) # il est suivi d'un "|" pipe permettant de faire suivre une commande à partir de la première # grep permet de filtrer la recherche et "sd" est son filtre. il affichera donc toutes les lignes contenant "sd"
• sous windows, en utilisant l’utilitaire UNetbootin et en suivant les instructions par exemple via ce lien tutorial UNetbootin
c. Installation de Linux
Brancher votre clé USB bootable sur l'ordinateur sur lequel vous allez installer Linux puis allumez-le et allez dans le BIOS pour paramétrer pour le boot, les périphériques USB. Ensuite suivez les instructions d'installation. Une fois l’installation complète effectuée, faites une mise à jour avec les commandes suivantes:
sudo apt-get update #sudo apt-get update (réalise la mise à jour du cache des paquets existants pour faire la comparaison avec ceux installés) sudo apt-get upgrade #sudo apt-getupgrade (réalise l'installation des paquets à mettre à jour)
d. Configuration réseau
Afin de créer un sous-réseau pour les RaspberryPi, il est nécessaire de modifier les paramètres réseaux. Vous n'êtes pas forcément maîtres de ces paramètres sur le réseau de votre laboratoire. La solution est de créer une passerelle avec une seconde carte réseau pour avoir un réseau local. Il faut aussi un commutateur (Switch) sur lequel branchez le futur serveur NFS, coté réseau local. Afin que le serveur soit trouvé sur le réseau par les RaspberryPi, il est nécessaire de lui donner une adresse fixe. Les RaspberryPi seront aussi configurés avec une adresse ip fixe chacun pour faciliter leur identification et leur gestion.
Pour configurer le réseau local, utilisez la commande suivante afin d’éditer le fichier interfaces :
sudo nano /etc/network/interfaces # sudo nano /etc/network/interfaces (nano est un éditeur de texte. Le fichier ''interfaces'' contient la configuration réseau de l'ordinateur)
Ajouter si vous avez une seconde carte réseau le texte suivant contenant les paramètres habituels que son adresse ip, le masque de sous-réseau et la passerelle :
iface eth1 inet static address 192.30.0.1 netmask 255.255.255.0 gateway 192.30.0.255
Sinon remplacer dhcp par static puis modifier de la même façon les paramètres, évidemment avec vos paramètres.
En Tapant ensuite la commande suivante :
ifconfig
Vous obtenez dans le cas d'un serveur avec deux cartes réseaux, la configuration des deux cartes réseaux eth0 et eth1 :
root@raspberry-server:/home/llrf# ifconfig eth0 Link encap:Ethernet HWaddr 00:14:5e:dd:0d:2a inet adr:134.158.196.xxx Bcast:134.158.197.xxx Masque:255.255.254.0 adr inet6: fe80::214:5eff:fedd:d2a/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3379448 errors:0 dropped:0 overruns:0 frame:0 TX packets:571691 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:735047002 (700.9 MiB) TX bytes:139612510 (133.1 MiB) Interruption:18 Mémoire:ca000000-ca012800
eth1 Link encap:Ethernet HWaddr 00:14:5e:dd:0d:2c inet adr:192.30.0.1 Bcast:192.30.0.255 Masque:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interruption:16 Mémoire:ce000000-ce012800
lo Link encap:Boucle locale inet adr:127.0.0.1 Masque:255.0.0.0 adr inet6: ::1/128 Scope:Hôte UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:787 errors:0 dropped:0 overruns:0 frame:0 TX packets:787 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:0 RX bytes:73390 (71.6 KiB) TX bytes:73390 (71.6 KiB)
Une fois la configuration réseau effectuée. Vous pouvez pour faciliter l'identification du serveur et des RaspberryPi leur donner des noms . Utilisez la commande suivante:
sudo hostname raspberry-server #hostname nomdemachine_souhaité (permet d'affecter un nom à la machine que vous êtes en train d'utiliser pour la session en cours. Pour une affectation #definitive,ouvrez le fichier ''/etc/hostname'' et tapez le nom souhaité. Pour les RaspberryPi, il y a déjà un nom, devinez ;) )
Ensuite il faut attribuer le nom des différentes machines à leur adresse ip dans le fichier /etc/hosts en l'éditant avec la commande suivante :
nano /etc/hosts
Vous ajoutez ensuite les adresses ip avec le nom de machine associé :
127.0.0.1 localhost 192.30.0.1 raspberry-server 192.30.0.2 raspberry1 192.30.0.3 raspberry2
Configuration NFS du serveur
a. Installation des paquets nécessaires pour créer le serveur NFS
Il faut installer les paquets nfs-kernel-server, nfs-common et rpcbind en utilisant la commande suivante :
sudo apt-get install nfs-kernel-server nfs-common rpcbind #sudo apt-get install ''nom_du_paquet1 nom_du_paquet2''
S'ils ne sont pas présents, vous trouverez les paquets de la distribution stable DEBIAN à installer sur via ce lien :http://packages.debian.org/squeeze/
Utilisez ensuite la commande pour décompresser et installer les paquets un par un :
dpkg -i nfs-kernel-server.deb dpkg -i nfs-common.deb dpkg -i rpcbind.deb #dpkg -i nom_du_paquet.deb (permet de décompresser et installer le paquet nom_du_paquet.deb)
b. Création des répertoires de boot des RaspberryPi à exporter
Créez les répertoire de boot à exporter dans l’arborescence que vous souhaitez avec la commande:
mkdir .../nfsRpi1 mkdir .../nfsRpi2 . . . mkdir .../nfsRpiN #mkdir nom_du_répertoire_à_créer
Utilisez ensuite la commande:
ls -l #ls -l (pour vérifier que les répertoires sont bien créés avec les droits associés)
c. Modification du fichier exports
Le fichier se trouve sous le répertoire/etc et contient la liste des répertoires exportés vers les machines définies avec les droits qui sont appliqués. Editez le fichier avec la commande :
sudo nano /etc/exports #sudo nano /chemin_ou_répertoire/fichier_à_ouvrir_pour_modification
Et ajouter les lignes correspondantes à votre besoin :
.../nfsRpi1 192.30.0.2(rw,sync,no_root_squash) .../nfsRpi2 192.30.0.3(rw,sync,no_root_squash) . . . .../nfsRpiN 192.30.0.N(rw,sync,no_root_squash)
Il faut aussi,si vous souhaitez restreindre les accès à votre répertoire partagé, configurer les fichiers /etc/hosts.allow et /etc/hosts.deny. voir le site NFS-HOWTO Setting Up an NFS Server
d. Démarrage des services NFS
Executez les commandes suivantes dans cet ordre :
sudo /etc/init.d/rpcbind start sudo /etc/init.d/nfs-kernel-server start #sudo /chemin/ nom_du_programme start (pour le démarrer)
et vérifiez que NFS est démarré avec la commande :
sudo rpcinfo –p #sudo rpcinfo –p (pour interroger le serveur RCP et ainsi vérifier que NFS est démarré)
Vous obtenez une liste de ce type :
program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 37252 status 100024 1 tcp 35857 status 100021 1 udp 36464 nlockmgr 100021 3 udp 36464 nlockmgr 100021 4 udp 36464 nlockmgr 100021 1 tcp 51551 nlockmgr 100021 3 tcp 51551 nlockmgr 100021 4 tcp 51551 nlockmgr 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100005 1 udp 60775 mountd 100005 1 tcp 52319 mountd 100005 2 udp 60775 mountd 100005 2 tcp 52319 mountd 100005 3 udp 60775 mountd 100005 3 tcp 52319 mountd
Où vous devez voir le service nfs.
Sinon, vous pouvez affiner la commande avec :
sudo rpcinfo –p | grep nfs #sudo rpcinfo –p (pour interroger le serveur RCP et ainsi vérifier que NFS est démarré) # grep permettra de faire un filtre sur les résultats
Vous obtenez une liste de ce type :
program vers proto port service 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs
Voilà, les répertoires qui serviront aux différents RaspberryPi sont exportés et donc accessibles à distance. Il faut maintenant configurer les différents clients NFS pour y avoir accès.