HLab

Julien Hautefeuille

Raspberrypi, Synology and NFS

Introduction

L’objectif de ce billet est d’installer le système de fichiers Raspbian sur un répertoire partagé d’un NAS Synology par l’intermédiaire du protocole NFS.

Cette installation permet de soulager la carte mémoire. Celle-ci n’est en fait nécessaire que pour le démarrage de la carte RaspberryPI.

Prérequis

Il faut disposer d’une carte mémoire avec le système Raspbian déjà installé et configuré. Internet regorge de tutoriels sur l’installation de Raspbian.

L’adresse ip du serveur NAS est 192.168.0.3, l’adresse ip de la carte RaspberryPI est 192.168.0.199.

Il faut disposer d’un réseau local rapide car les fichiers du sytème de la RaspberryPI transiteront par le réseau.

J’ai également pu remarquer des problèmes de connection NFS lorsqu’une MTU trop élevée était utilisée.

Je n’utilise donc pas les “Jumbo frame” dans la configuration réseau du NAS Synology.

Préparation du NAS Synology

On crée tout d’abord un répertoire partagé.

On autorise ensuite le partage par NFS, sans mapping, en lecture / écriture. Le dossier exporté par NFS est donc le suivant : /volume1/rasp0.

192.168.0.199 correspond à l’adresse ip de la carte RaspberryPI.

Préparation de la carte mémoire

Dans un premier temps, nous allons monter le partage réseau NFS sur la carte RaspberryPI puis nous allons copier le système de fichiers sur cet emplacement réseau.

sudo mount -t nfs -o rw 192.168.0.3:/volume1/rasp0 /mnt
cp -axv /. /mnt/.
cp -axv /dev/. /mnt/dev/. 

Préparation des fichiers du partage réseau

On édite ensuite le fstab du partage réseau auquel on ôte le point de montage de la carte mémoire, ici il s’agit de /dev/mmcblk0p2.

proc            /proc           proc    defaults 0 0
/dev/mmcblk0p1  /boot           vfat    defaults 0 0
none            /tmp            tmpfs   defaults 0 0
none            /var/run        tmpfs   defaults 0 0
none            /var/lock       tmpfs   defaults 0 0
none            /var/tmp        tmpfs   defaults 0 0
192.168.0.3:/volume1/rasp0  /   nfs     rw       0 0

La dernière ligne de la configuration est facultative puisqu’on va renseigner également cette information dans le fichier de boot dans la suite de ce billet.

On édite le fichier /etc/network/interfaces du partage réseau pour y désactiver toute référence à du DHCP.

#iface eth0 inet dhcp

Préparation de la séquence de boot (fichier sur la carte mémoire)

On édite le fichier de la carte mémoire /boot/cmdline.txt.

On y ajoute des informations complémentaires sur la même ligne que la ligne d’origine. Si vous êtes en DHCP, mettez ip=dhcp.

root=/dev/nfs rootfstype=nfs nfsroot=192.168.0.3:/volume1/rasp0,udp,vers=3 smsc95xx.turbo_mode=N ip=192.168.0.199:192.168.0.3:192.168.0.1:255.255.255.0
  • 192.168.0.199 est l’adresse de la carte RaspberryPI,
  • 192.168.0.3 est l’adresse du NAS Synology avec le partage NFS,
  • 192.168.0.1 est l’adresse de la passerelle,
  • 255.255.255.0 est le masque réseau.

Vous pouvez enfin rebooter la carte RaspberryPI.

Optimisations

Enfin pour soulager la carte mémoire, nous allons bouger la swap de la carte mémoire vers un loop device à travers le réseau.

sudo apt-get remove --purge dphys-swapfile
sudo rm /var/swap
sudo rm /etc/init.d/dphys-swapfile
sudo update-rc.d dphys-swapfile remove

sudo dd if=/dev/zero of=/var/swap bs=1M count=1024
sudo losetup /dev/loop0 /var/swap
sudo mkswap /dev/loop0
sudo swapon /dev/loop0

On édite ensuite /etc/rc.local du partage réseau pour y rendre les changements permanents.

echo "swap settings"
sleep 2
losetup /dev/loop0 /var/swap
mkswap /dev/loop0
swapon /dev/loop0

Liens