Comment faire pour que mon Raspberry Pi utilise un serveur NFS pour le système de fichiers racine, au lieu de la carte SD?
Je voudrais pouvoir configurer mon Raspberry Pi pour avoir son système de fichiers racine sur une machine distante via NFS à des fins de performance / sauvegarde / développement. Comment puis-je faire ceci?
Réponses:
La version courte
Vous aurez toujours besoin d'une carte SD pour le démarrage précoce, mais après cela, sauf / boot n'aura pas besoin de la carte SD.
Détails
Je ne l'ai fait que sur une machine Linux. En théorie, c'est possible sur n'importe quelle machine qui peut exporter des systèmes de fichiers NFS.
La façon la plus simple de préparer un système de fichiers racine est de copier celui fourni par les images existantes. J'ai utilisé l' image Debian 6 officielle comme point de départ:
Montez la partition racine à partir de cette image à l'aide d'un périphérique de bouclage. Vous aurez besoin du décalage dans l'image pour le début de la partition racine, dans ce cas, c'est la deuxième partition de l'image:
La deuxième partition commence au bloc (ou secteur) 157696 donc le décalage est (512 * 157696) = 80740352:
Avec l'image montée, vous voudrez probablement le copier dans un endroit plus permanent pour éviter d'utiliser le périphérique de bouclage pour toujours. J'ai créé un volume LVM2 et l'ai monté sur / mnt / rpi-root, alors j'ai fait:
Nous devons exporter le système de fichiers maintenant, nous devons donc ajouter une ligne comme:
dans / etc / exports sur le serveur NFS, où 192.168.1.2 est l'adresse du Raspberry Pi. Après avoir ajouté cette course
exportfs -rv
pour relire la liste des exportations. (Voir exports (5) pour des options plus avancées, notamment des caractères génériques / sous-réseaux plutôt que des hôtes individuels)Vous pouvez également ignorer cette étape et créer un système de fichiers racine à partir de zéro en utilisant quelque chose comme
multistrap
.Nous devons maintenant créer une carte SD qui effectue le démarrage à un stade précoce et démarre à l'aide de ce partage NFS. J'ai fait cela en prenant la première partition de l'image officielle et en la copiant sur une carte SD, où la carte SD est / dev / sdx:
et puis puisque cela n'a copié que la première partition en éditant la table de partition avec fdisk pour supprimer les deux partitions que nous n'avons pas copiées.
Après cela, j'ai monté la partition à partir de la carte SD et édité le fichier cmdline.txt à partir de celle-ci pour lire:
où 192.168.1.1 est l'adresse du serveur NFS. Si vous ne souhaitez pas utiliser DHCP, vous pouvez définir d'autres méthodes d'adresse IP, consultez ce document pour plus de détails.
Une fois cela fait, vous pouvez démonter la carte SD et démarrer votre Rapsberry Pi avec une racine NFS. Vous pouvez également manipuler le système de fichiers côté serveur ou d'autres clients NFS comme bon vous semble (par exemple, QEMU + binfmt_misc , instantanés LVM, systèmes de sauvegarde, etc.)
Choses facultatives
Si vous utilisez ip = dhcp, vous devrez probablement commenter la ligne:
dans / etc / network / interfaces (/ mnt / rpi-root / etc / network / interfaces) afin d'éviter une situation où le basculement entre le DHCP de démarrage précoce et le plus tard habituel provoque un message comme:
Si vous voulez démarrer beaucoup de périphériques à partir de la même racine, vous devrez vous assurer de fournir un "local" / tmp (probablement tmpfs) et d'autres subtilités pour éviter les problèmes avec plusieurs machines essayant d'écrire dans les mêmes fichiers.
la source
/home/user/Documents/raspisRootFolder
et le clientfstab
monte tout simplement/
?/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
partir/etc/fstab
, même si je pense que ce serait un échec sans causer des problèmes si vous le laissez dans.