[LINUX] Création d'un environnement distribué avec la série Raspberry PI (Partie 4: Création d'un serveur NFS et importation d'un système d'exploitation client)

0. Introduction

  1. Création d'un environnement distribué avec la série Raspberry PI (Partie 1: Résumé de la disponibilité des clients sans disque par modèle)
  2. Création d'un environnement distribué avec la série Raspberry PI (Partie 2: Analyse PiServer et conception de système alternatif)
  3. Création d'un environnement distribué avec la série Raspberry PI (Partie 3: Installation et configuration de dnsmasq)
  4. Création d'un environnement distribué avec la série Raspberry PI (Partie 4: Création d'un serveur NFS et importation d'un système d'exploitation pour les clients)
  5. Création d'un environnement distribué avec la série Raspberry PI (Partie 5: Personnalisation du Raspberry PI OS pour les nœuds de cluster (1))
  6. Création d'un environnement distribué avec la série Raspberry PI (Partie 6: Personnalisation du Raspberry PI OS pour les nœuds de cluster (2))
  7. Création d'un environnement distribué avec la série Raspberry PI (7: configuration d'itinéraire tftp et test de démarrage pour chaque tarte à la râpe)

Cet article est la suite de la Partie 3. Le contenu de cette fois est de construire un serveur NFS pour enregistrer le répertoire racine à distribuer sur Raspai et d'importer réellement le système d'exploitation Raspai [^ OS cible] sur le serveur NFS. Veuillez noter que le client sans disque ne démarrera pas simplement en important le système d'exploitation client dans le serveur NFS. Après l'importation, le client ne démarrera que si vous modifiez plusieurs fichiers et créez un lien symbolique vers la racine tftp. La prochaine fois, nous personnaliserons chaque distribution importée.

[^ OS cible]: Cet article cible le Raspberry PI OS basé sur Debian, qui est le système d'exploitation officiel, et Ubuntu 20.04 LTS, ArchLinux, qui sont d'autres distributions typiques pour Raspberry. Fedora a annoncé qu'il ne prend pas en charge Pi4 à partir du 06/08/2020, il ne sera donc pas répertorié. Ignorez ensuite Windows IoT: -P. Au fait, si vous êtes Gentoo, faites de votre mieux par vous-même.

1. Créez un serveur NFS

Vous pouvez implémenter NFS sur le serveur PXE que vous avez construit la dernière fois, mais si vous supposez une utilisation telle que la commutation entre plusieurs systèmes d'exploitation, il est préférable de le construire sur une autre machine avec une tolérance de pannes élevée et beaucoup d'espace disque. Je pense que vous pouvez être rassuré.

De plus, il existe deux répertoires partagés à publier sur Raspeye.

Dossier partagé pour le répertoire racine du système d'exploitation distribué à chaque secteur de râpe
Dans cet article, nous partagerons / exports / os4pi sur le serveur NFS.
Dans ce dossier, créez des sous-dossiers superposés sous "Nom de distribution / Version / Architecture".
Dossier partagé pour le répertoire de base commun à tous les Raspeyes
Dans cet article, nous partagerons / exports / home4pi sur le serveur NFS.

1.1. Remarques sur les paramètres de partage NFS pour les racines du système d'exploitation

1.2. Lors de l'utilisation d'un serveur NFS / PXE existant créé la dernière fois

Ajoutez un nouveau dossier partagé (public) sur NFS. Si vous utilisez un NAS compatible NFS disponible dans le commerce, la méthode de mise en œuvre sera différente selon que vous gérez vous-même le serveur NFS.

1.2.1. Lors de l'utilisation d'un NAS disponible dans le commerce (compatible NFS) qui se connecte uniquement au réseau

Ajoutez le dossier partagé selon le manuel du produit que vous utilisez

1.2.2. Lors de l'utilisation d'une machine Linux / serveur PXE créé la dernière fois

Modifiez / etc / exports et exécutez la commande exportfs Référence: Explication NFS d'ArchLinux

/ etc / exports (exemple supplémentaire)

#Stocke chaque distribution pour les clients
/exports/os4pi     192.168.172.0/24(rw,sync,nohide,no_root_squash,subtree_check)
#Répertoire de base commun
/exports/home4pi   192.168.172.0/24(rw,sync,nohide,subtree_check)

Ensuite, créez réellement le répertoire spécifié dans / etc / exports.

$ sudo mkdir -p /exports/os4pi
$ sudo mkdir -p /exports/home4pi

Enfin, activez le dossier partagé NFS.

$ sudo exportfs -avr

Si vous obtenez une erreur, les services liés à NFS tels que rpcbind ne fonctionnent pas, alors faites de votre mieux.

1.3. Lors de la création d'un nouveau serveur NFS

Les détails ne seront pas décrits. Construisez avec votre système d'exploitation préféré, votre disque préféré (de préférence SSD) et votre configuration RAID préférée, puis revenez à la version 1.2. [^ FreeNAS]

[^ FreeNAS]: Si vous pensez que votre temps de compilation est perdu, vous pouvez envisager d'utiliser FreeNAS. Avec FreeNAS, vous pouvez facilement obtenir un environnement qui a plus de fonctions qu'un NAS commercial et peut être configuré avec une interface Web.

2. Comment télécharger et importer des images microSD pour Raspeye

À partir de là, la méthode est différente pour chaque distribution, nous la décrirons donc pour chaque distribution. Pour chaque distribution, le fichier cible de téléchargement est une image disque avec la plus petite taille de données.

2.1. Raspberry PI OS officiel (anciennement Raspbian)

2.1.1. Aperçu

La distribution la plus équilibrée à l'exception du système d'exploitation officiel et des anciennes versions du noyau. C'est la seule option si vous souhaitez créer rapidement un environnement distribué sans disque, car vous pouvez le rendre sans disque sans avoir à vous soucier des fichiers binaires. 2020/06 La version 64 bits, actuellement en version bêta, fonctionne bien.

2.1.2. Destination du téléchargement

Sur le site de téléchargement ci-dessus, vérifiez le nom de fichier de la dernière version avec un navigateur normal ou w3m et téléchargez le fichier zip. [^ 64 noyau] [^ 64kernel]: Même avec la version 32 bits, il est possible de convertir uniquement le noyau en 64 bits (bien que la glibc soit la version 32 bits).

Si vous voulez une image de l'ancienne version (équivalente à Debian Stretch), veuillez télécharger le fichier zip contenant "stretch" dans le nom du fichier à partir du site suivant.

2.1.3. Création d'un dossier de stockage NFS

Lors de l'installation de la version 32 bits pour Pi2

$ sudo mkdir -p /exports/os4pi/raspbian/buster/armhf

Version 32 bits pour Pi3 / 4 (lorsque vous souhaitez faire uniquement le noyau 64 bits)

Puisqu'il est nécessaire de séparer uniquement / boot, overlayfs peut être meilleur s'il est mélangé avec Pi2.

$ sudo mkdir -p /exports/os4pi/raspbian/buster/armhf_64

Lors de l'installation de la version 64 bits pour Pi3 et supérieur uniquement

$ sudo mkdir -p /exports/os4pi/raspbian/buster/aarch64

Lors de l'installation de l'ancienne version (stretch, 32 bits)

$ sudo mkdir -p /exports/os4pi/raspbian/stretch/armhf

2.1.4. Contenu de l'image officielle (fichier zip)

Vérifiez la somme de contrôle du fichier zip téléchargé et décompressez-le.

# unzip 2020-05-27-raspios-buster-lite-armhf.zip
(Résultat de sortie omis)
# 

Vous devriez voir un fichier avec l'extension modifiée de zip à img (cette fois en utilisant la version 32 bits Lite à partir du 06/08/2020). Étant donné que ce fichier est une image dd divisée en deux partitions, créez et vérifiez un périphérique de bouclage.

# losetup -P -f 2020-05-27-raspios-buster-lite-armhf.img
# losetup -a
/dev/loop0: []: (/tmp/2020-05-27-raspios-buster-lite-armhf.img)
# ls /dev/loop0*
/dev/loop0 /dev/loop0p1 /dev/loop0p2
#

loop0p1 est pour la 1ère partition microSD (FAT, / boot) et loop0p2 est pour la 2ème partition (ext4, /). Créez un point de montage temporaire sous / tmp, montez les 2 partitions ci-dessus et copiez-le dans le dossier partagé NFS. Je ne veux pas copier ce dont je n'ai pas besoin depuis le début, mais la seule chose dont je n'ai pas besoin est le lost + found d'ext4. Tout d'abord, je copie tout dans le répertoire partagé NFS, puis je supprime lost + found lorsque j'ai terminé.

# mkdir /tmp/raspbian; mount -o ro /dev/loop0p2 /tmp/raspbian && mount -o ro /dev/loop0p1 /tmp/raspbian/boot
# rsync -avr /tmp/raspbian/* /exports/os4pi/raspbian/buster/armhf/
・ ・ ・(Copier tous les fichiers)
# rm -Rf /exports/os4pi/raspbian/buster/armhf/lost+found

Lorsque vous avez terminé la copie, démontez-le et supprimez également le bouclage.

# umount /tmp/raspbian/boot; umount /tmp/raspbian
# losetup -d /dev/loop0

C'est tout pour Raspbian.

2.2. Ubuntu

2.2.1. Précautions (Ajouté le 09/06/2020)

Le noyau inclus dans l'image disque distribuée par Ubuntu ne peut pas être démarré en réseau tel quel car le module nfs n'est ** pas compilé avec l'état intégré. Par conséquent, vous devez créer votre propre noyau pour le rendre sans disque sans U-boot. Ensuite, ce n'est qu'un rapide coup d'œil, mais le processus de téléchargement du binaire U-boot inclus dans l'image de distribution avec tftp et de faire quelque chose avec ce U-boot semble être assez gênant, comme une enquête et des tests. En d'autres termes, si vous ne voulez pas perdre votre temps dans la situation actuelle, vous devez éviter d'utiliser cette distribution.

2.2.2. Aperçu

Par défaut, Ubuntu Server lance de nombreux services qui sont presque inutiles pour les nœuds sans disque Raspeye tels que snapd, apparmor, iscsi, lvm2 et mdadm. Par conséquent, il sera difficile de supprimer les services / packages inutiles après l'installation.

Je ne pense pas qu'il soit nécessaire de choisir cette distribution sauf pour ceux qui l'aiment, mais comme c'est une distribution majeure, je vais la couvrir.

Quand j'essaye de le télécharger sur le site officiel d'Ubuntu, il existe 5 types, 32 bits pour 2/64 bits pour 3/32 bits pour 3/64 bits pour 4/32 bits pour 4 Il existe des options de téléchargement et vous vous demanderez laquelle télécharger. Après enquête, concernant 20.04 (Focal Fossa), seule la notation des boutons est différente, et la situation réelle n'est que la différence entre 32 bits et 64 bits. Par conséquent, il suffit de télécharger la version 32 bits pour 2 et la version 64 bits pour 3. Aussi, pour 18.04 (Bionic Beaver), des fichiers image sont préparés pour chaque modèle, probablement parce qu'il était nécessaire de changer le binaire U-boot en fonction du modèle. Le système à construire cette fois n'utilise pas le U-boot fourni avec l'image disque, il suffit donc de télécharger à la fois la version 32 bits pour 2 et la version 64 bits pour 3.

2.2.3. Destination du téléchargement

20.04 LTS (Focal Fossa)

Depuis le site ci-dessus

Téléchargez le dernier fichier xz avec le nom

18.04 LTS (Bionic Beaver)

Depuis le site ci-dessus

Téléchargez le dernier fichier xz avec le nom.

2.2.4. Création d'un dossier de stockage

'$ VERSION' dans la commande doit être l'un des 20.04 / 18.04.

Lors de l'installation de la version 32 bits pour Pi2

$ sudo mkdir -p /exports/os4pi/ubuntu/$VERSION/armhf

Version 32 bits pour Pi3 / 4 (lorsque vous souhaitez faire uniquement le noyau 64 bits)

Étant donné que seul / boot / firmware doit être dans un dossier séparé, il peut être préférable de considérer overlayfs sous le dossier pour Pi2.

$ sudo mkdir -p /exports/os4pi/ubuntu/$VERSION/armhf_64

Lors de l'installation de la version 64 bits pour Pi3 et supérieur

$ sudo mkdir -p /exports/os4pi/ubuntu/$VERSION/aarch64

2.2.5. Contenu de l'image officielle (fichier xz)

Après avoir vérifié la somme de contrôle du fichier xz téléchargé, décompressez-le.

$ unxz ubuntu-20.04-preinstalled-server-arm64+raspi4.img.xz
(Résultat de sortie omis)

Vous devriez voir un fichier avec l'extension modifiée de img.xz à img (cette fois en utilisant la version 20.04 64bit raspi4 à partir du 06/08/2020). Étant donné que ce fichier est une image dd divisée en deux partitions, créez et vérifiez un périphérique de bouclage.

$ sudo losetup -P -f ubuntu-20.04-preinstalled-server-arm64+raspi4.img 
$ losetup -a
/dev/loop0: []: (/tmp/ubuntu-20.04-preinstalled-server-arm64+raspi4.img)
$ ls /dev/loop0*
/dev/loop0  /dev/loop0p1  /dev/loop0p2
$ 

loop0p1 est équivalent à la 1ère partition microSD (FAT, / boot / firmware), et loop0p2 est équivalent à la 2ème partition (ext4, /). Créez un point de montage temporaire sous / tmp, montez les 2 partitions ci-dessus et copiez-le dans le dossier partagé NFS. Je ne veux pas copier ce dont je n'ai pas besoin depuis le début, mais la seule chose dont je n'ai pas besoin est le lost + found d'ext4. Tout d'abord, je copie tout dans le répertoire partagé NFS, puis je supprime lost + found lorsque j'ai terminé.

$ mkdir /tmp/ubuntu; sudo mount -o ro /dev/loop0p2 /tmp/ubuntu && sudo mount -o ro /dev/loop0p1 /tmp/ubuntu/boot/firmware
$ sudo rsync -avr /tmp/ubuntu/* /exports/os4pi/ubuntu/20.04/aarch64/
・ ・ ・(Copier tous les fichiers)
$ sudo rm -Rf /exports/os4pi/ubuntu/20.04/aarch64/lost+found

Lorsque vous avez terminé la copie, démontez-le et supprimez également le bouclage.

# umount /tmp/ubuntu/boot; umount /tmp/ubuntu
# losetup -d /dev/loop0

C'est tout pour Ubuntu.

2.3. ArchLinux ARM

2.3.1. Précautions

Depuis 2020/06, la version 32 bits est prête pour un démarrage sans disque en réécrivant simplement le fichier /boot/config.txt.

Cependant, il est impossible de faire démarrer docilement la version 64 bits sans disque. J'ai vérifié la version aarch64 d'ArchLinux et j'ai trouvé que cette distribution démarre également avec u-boot (le contenu de kernel8.img est u-boot). J'ai donc téléchargé le noyau lui-même et le fichier initramfs que u-boot charge sur tftp, édité config.txt et lancé le tarte aux râpes sans disque. Grâce à bootcode.bin, il charge le noyau + initramfs depuis tftp. C'était possible. Ensuite, le contrôle a été transféré au noyau réel, et lors du démarrage d'initramfs en tant que système de fichiers racine temporaire, il a été dit qu'il n'y avait pas de réseau et il s'est arrêté. Apparemment, ce noyau n'a pas le pilote USB Ethernet (smsc95xx) intégré. En d'autres termes, il semble que le noyau doit également être recompilé ici. Une telle chose

2.3.2. Aperçu

Pour ArchLinux ARM, le fichier d'installation est au format tar.xz au lieu du fichier image dd, de sorte que le processus d'importation vers le serveur NFS n'est pas très différent de la méthode d'installation normale. Cependant, l'image de distribution (plutôt que le fichier d'arborescence des périphériques) est différente pour chaque modèle, et comme il s'agit d'une distribution de mise à jour progressive, il n'y a pas de numéro de version, donc d'autres distributions coupent le sous-répertoire en fonction de la version et de l'architecture du système d'exploitation. Je vais séparer l'endroit qui s'y trouvait par le numéro de modèle de la tarte aux râpes cible.

Référence: Manuel d'installation officiel (2B: version 32 bits / 3B: version 32/64 bits / plates-formes / armv8 / broadcom / raspberry-pi-3) / 4B: version 64 bits)

2.3.3. Destination du téléchargement

Comme dans le manuel officiel

Télécharger depuis vers / tmp.

2.3.4. Créer et importer des dossiers de stockage à la fois

ArchLinux est complet en exécutant simplement le one-liner suivant en tant que root. ** Attention **: BSD tar est utilisé à la place de GNU tar, donc si vous ne l'avez pas installé, veuillez l'installer à l'avance. [^ BSDTAR]

[^ BSDTAR]: Il peut être développé avec GNU tar, mais une erreur se produit lors de l'extraction car il contient un identifiant de sécurité non pris en charge.

# mkdir -p /exports/os4pi/archlinux; cd /exports/os4pi/archlinux; for N in `seq 2 4`; do if [ -f /tmp/ArchLinuxARM-rpi-$N-latest.tar.gz ]; then mkdir pi$N; bsdtar -xpf /tmp/ArchLinuxARM-rpi-$N-latest.tar.gz -C pi$N; fi; done

3. Prochain avis

La prochaine fois personnalise le système d'exploitation à distribuer aux clients (fichiers sous / boot et / etc, limités à la plage qui peut être modifiée avec un éditeur de texte). Aller. Si vous n'utilisez pas qemu-static, vous ne pouvez pas aller dans la mauvaise plage.

Recommended Posts

Création d'un environnement distribué avec la série Raspberry PI (Partie 4: Création d'un serveur NFS et importation d'un système d'exploitation client)
Création d'un environnement distribué avec la série Raspberry PI (Partie 3: Installation et configuration de dnsmasq)
Création d'un environnement distribué avec la série Raspberry PI (Partie 7: configuration de la route tftp et test de démarrage pour chaque tarte à la râpe)
Construire un environnement distribué avec la série Raspberry PI (Partie 2: Analyse PiServer et conception de système alternatif)
Construire un serveur VPN avec Raspberry Pie
Construction d'un environnement distribué avec la série Raspberry PI (Partie 1: Résumé de la disponibilité des clients sans disque par modèle)
Configuration du système d'exploitation avec Raspberry Pi Imager
Créez un thermomètre avec Raspberry Pi et rendez-le visible sur le navigateur Partie 4
Créer un environnement avec pyenv et pyenv-virtualenv
Créer un environnement Tensorflow avec Raspberry Pi [2020]
Construction VPN simple de la passerelle IPsec avec Ubuntu 20.04 et Raspberry Pi ―― 1. StrongSwan introduit
Source compilez Apache2.4 + PHP7.4 avec Raspberry Pi et construisez un serveur Web --2 introduction PHP
Compilation croisée de Raspberry Pi et création d'un environnement de développement de débogage à distance avec VS Code
Source compilez Apache2.4 + PHP7.4 avec Raspberry Pi et créez un serveur Web ―― 1. Introduction à Apache
Construction de VPN de passerelle IPsec avec CentOS 8 et openSUSE (Raspberry Pi) --2 Confirmation de connexion VPN StrongSwan
MQTT Radicon Car avec Arduino et Raspberry
Obtenez la température et l'humidité avec DHT11 et Raspberry Pi
GRPC commençant par le serveur Go et le client Dart
Créez des serveurs sur Linux et des réseaux locaux avec Raspberry Pi NextCloud et le partage de bureau
Compilez Apache2.4 + PHP7.4 avec Raspberry Pi et construisez un serveur Web --3. Utilisez MySQL
Construction VPN simple de la passerelle IPsec avec CentOS 8 et openSUSE (Raspberry Pi) --1 Introduction de StrongSwan
Construction VPN simple de la passerelle IPsec avec Ubuntu 20.04 et Raspberry Pi --2 Confirmation de connexion VPN StrongSwan
Enregistrez la température et l'humidité avec systemd sur Raspberry Pi
Apprentissage automatique avec Raspberry Pi 4 et Coral USB Accelerator
IoT facile pour démarrer avec Raspeye et MESH
Visualisons la pièce avec tarte aux râpes, partie 1
Détecter l'état de port du masque avec OpenCV et Raspberry Pi
Mesurez la température et l'humidité avec Raspberry Pi3 et visualisez avec Ambient
Application Web réalisée avec Python3.4 + Django (Construction de l'environnement Part.1)
Ubuntu 20.04 sur raspberry pi 4 avec OpenCV et utilisation avec python
Résoudre les problèmes liés à l'installation d'OpenCV sur Raspberry Pi et à la capture
Raspberry Pi + python + appareil IoT, procédure de construction d'environnement pour démarrer le traitement d'image et l'apprentissage automatique
RPi / CentOS> python> Distinction de l'environnement d'exécution> import os / print os.uname ()> Indique s'il faut inclure raspberrypi