[LINUX] Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 4: Erstellen eines NFS-Servers und Importieren eines Client-Betriebssystems)

0. Einleitung

  1. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 1: Zusammenfassung der Verfügbarkeit von plattenlosen Clients nach Modell)
  2. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 2: PiServer-Analyse und alternatives Systemdesign)
  3. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 3: Installieren und Konfigurieren von dnsmasq)
  4. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 4: Erstellen eines NFS-Servers und Importieren eines Betriebssystems für Clients)
  5. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 5: Anpassen des Raspberry PI-Betriebssystems für Clusterknoten (1))
  6. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 6: Anpassen des Raspberry PI-Betriebssystems für Clusterknoten (2))
  7. Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (7: Einstellung der TFTP-Route und Starttest für jeden Raspetorte)

Dieser Artikel ist eine Fortsetzung von Teil 3. Der Inhalt dieser Zeit besteht darin, einen NFS-Server zu erstellen, um das an Raspai zu verteilende Stammverzeichnis zu speichern und das Raspai-Betriebssystem [^ Ziel-Betriebssystem] tatsächlich auf den NFS-Server zu importieren. Bitte beachten Sie, dass der plattenlose Client nicht nur durch den Import des Client-Betriebssystems in den NFS-Server gestartet wird. Nach dem Import wird der Client erst gestartet, wenn Sie mehrere Dateien bearbeiten und einen symbolischen Link zum TFTP-Stammverzeichnis erstellen. Beim nächsten Mal werden wir jede importierte Distribution anpassen.

[^ Zielbetriebssystem]: Dieser Artikel befasst sich mit dem Debian-basierten Raspberry PI OS, dem offiziellen Betriebssystem, und Ubuntu 20.04 LTS, ArchLinux, anderen typischen Distributionen für Raspberry. Fedora hat angekündigt, dass Pi4 ab dem 06.08.2020 nicht mehr unterstützt wird, daher wird es nicht aufgeführt. Ignorieren Sie dann Windows IoT: -P. Übrigens, wenn Sie ein Gentoo sind, geben Sie bitte Ihr Bestes selbst.

1. Erstellen Sie einen NFS-Server

Es ist in Ordnung, NFS auf dem PXE-Server zu implementieren, den Sie zuletzt erstellt haben. Wenn Sie jedoch davon ausgehen, dass Sie beispielsweise zwischen mehreren Betriebssystemen wechseln, ist es besser, es auf einem anderen Computer mit hoher Fehlertoleranz und viel Speicherplatz zu erstellen. Ich denke, Sie können sicher sein.

Darüber hinaus müssen zwei gemeinsam genutzte Verzeichnisse in Raspeye veröffentlicht werden.

Freigegebener Ordner für das Betriebssystem-Stammverzeichnis, verteilt auf jeden Raspetorte
In diesem Artikel werden wir / exportiert / os4pi auf dem NFS-Server freigeben.
Erstellen Sie unter diesem Ordner Unterordner unter "Verteilungsname / Version / Architektur".
Freigegebener Ordner für das Ausgangsverzeichnis, der allen Rasppies gemeinsam ist
In diesem Artikel werden wir / exportiert / home4pi auf dem NFS-Server freigeben.

1.1. Hinweise zu den NFS-Freigabeeinstellungen für Betriebssystem-Roots

1.2. Bei Verwendung eines vorhandenen NFS-Servers / PXE-Servers, der zuletzt erstellt wurde

Fügen Sie einen neuen freigegebenen (öffentlichen) Ordner über NFS hinzu. Wenn Sie ein im Handel erhältliches NFS-kompatibles NAS verwenden, hängt die Implementierungsmethode davon ab, ob Sie den NFS-Server selbst verwalten.

1.2.1. Bei Verwendung eines handelsüblichen NAS (NFS-kompatibel), der nur eine Verbindung zum Netzwerk herstellt

Fügen Sie den freigegebenen Ordner gemäß dem Handbuch des von Ihnen verwendeten Produkts hinzu

1.2.2. Bei Verwendung eines zuletzt erstellten Linux-Computers / PXE-Servers

Bearbeiten Sie / etc / export und führen Sie den Befehl exportfs aus Referenz: NFS-Erklärung von ArchLinux

/ etc / export (zusätzliches Beispiel)

#Speichert jede Distribution für Clients
/exports/os4pi     192.168.172.0/24(rw,sync,nohide,no_root_squash,subtree_check)
#Gemeinsames Home-Verzeichnis
/exports/home4pi   192.168.172.0/24(rw,sync,nohide,subtree_check)

Erstellen Sie dann tatsächlich das in / etc / export angegebene Verzeichnis.

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

Aktivieren Sie schließlich den freigegebenen NFS-Ordner.

$ sudo exportfs -avr

Wenn Sie eine Fehlermeldung erhalten, werden NFS-bezogene Dienste wie rpcbind nicht ausgeführt. Geben Sie daher bitte Ihr Bestes.

1.3 Beim Erstellen eines neuen NFS-Servers

Details werden nicht beschrieben. Erstellen Sie mit Ihrem bevorzugten Betriebssystem, Ihrer bevorzugten Festplatte (vorzugsweise SSD) und Ihrer bevorzugten RAID-Konfiguration und kehren Sie dann zu 1.2 zurück. [^ FreeNAS]

[^ FreeNAS]: Wenn Sie der Meinung sind, dass Ihre Erstellungszeit verschwendet wird, können Sie FreeNAS verwenden. Mit FreeNAS können Sie problemlos eine Umgebung erhalten, die mehr Funktionen als ein kommerzielles NAS bietet und über eine Webschnittstelle eingestellt werden kann.

2. Herunterladen und Importieren von microSD-Bildern für Raspeye

Ab hier ist die Methode für jede Distribution unterschiedlich, daher werden wir sie für jede Distribution beschreiben. Für jede Distribution ist die Download-Zieldatei ein Disk-Image mit der kleinsten Datengröße.

2.1 Offizielles Raspberry PI OS (ehemals Raspbian)

2.1.1 Übersicht

Die ausgewogenste Distribution mit Ausnahme des offiziellen Betriebssystems und älterer Kernelversionen. Dies ist die einzige Option, wenn Sie schnell eine plattenlose verteilte Umgebung erstellen möchten, da Sie sie plattenlos machen können, ohne sich mit Binärdateien herumschlagen zu müssen. 2020/06 Die 64-Bit-Version, die sich derzeit in der Beta befindet, funktioniert einwandfrei.

2.1.2. Ziel herunterladen

Überprüfen Sie auf der obigen Download-Site den Dateinamen der neuesten Version mit einem normalen Browser oder w3m und laden Sie die Zip-Datei herunter. [^ 64 Kernel] [^ 64kernel]: Selbst mit der 32-Bit-Version ist es möglich, nur den Kernel in 64-Bit zu konvertieren (obwohl glibc die 32-Bit-Version sein wird).

Wenn Sie ein Bild der alten Version (entspricht Debian Stretch) möchten, laden Sie bitte die Zip-Datei mit "Stretch" im Dateinamen von der folgenden Site herunter.

2.1.3. Erstellen eines Speicher-NFS-Ordners

Bei der Installation der 32bit Version für Pi2

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

32-Bit-Version für Pi3 / 4 (wenn Sie nur den 64-Bit-Kernel erstellen möchten)

Da nur / boot getrennt werden muss, sind Overlays möglicherweise besser, wenn sie mit Pi2 gemischt werden.

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

Nur bei der Installation der 64-Bit-Version für Pi3 und höher

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

Bei der Installation der alten Version (Stretch, 32bit)

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

2.1.4 Inhalt des offiziellen Bildes (Zip-Datei)

Überprüfen Sie die Prüfsumme der heruntergeladenen Zip-Datei und entpacken Sie sie.

# unzip 2020-05-27-raspios-buster-lite-armhf.zip
(Ausgabeergebnis weggelassen)
# 

Sie sollten eine Datei sehen, deren Erweiterung von zip in img geändert wurde (diesmal mit der 32-Bit-Lite-Version vom 06.08.2020). Da es sich bei dieser Datei um ein DVD-Image handelt, das in zwei Partitionen unterteilt ist, erstellen und überprüfen Sie ein Loopback-Gerät.

# 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 ist für die erste microSD-Partition (FAT, / boot) und loop0p2 ist für die 2. Partition (ext4, /). Erstellen Sie einen temporären Einhängepunkt unter / tmp, hängen Sie die beiden oben genannten Partitionen ein und kopieren Sie ihn in den freigegebenen NFS-Ordner. Ich möchte nicht kopieren, was ich von Anfang an nicht brauche, aber das einzige, was ich nicht brauche, ist ext4's lost + found. Zuerst kopiere ich alles in das freigegebene NFS-Verzeichnis und entferne dann Fundsachen, wenn ich fertig bin.

# 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/
・ ・ ・(Kopieren Sie alle Dateien)
# rm -Rf /exports/os4pi/raspbian/buster/armhf/lost+found

Wenn Sie mit dem Kopieren fertig sind, hängen Sie es ein und entfernen Sie auch den Loopback.

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

Das war's für Raspbian.

2.2. Ubuntu

2.2.1. Vorsichtsmaßnahmen (hinzugefügt 2020/06/09)

Der in dem von Ubuntu verteilten Disk-Image enthaltene Kernel kann nicht im Netzwerk gestartet werden, da das NFS-Modul ** nicht mit dem integrierten Status kompiliert wurde. Daher müssen Sie Ihren eigenen Kernel erstellen, um ihn ohne U-Boot plattenlos zu machen. Dann ist es nur ein kurzer Blick, aber das Herunterladen der im Distributionsimage enthaltenen U-Boot-Binärdatei mit tftp und das Ausführen von Aktionen mit diesem U-Boot scheint ziemlich mühsam zu sein, z. B. Nachforschungen und Tests. Mit anderen Worten, wenn Sie Ihre Zeit in der aktuellen Situation nicht verschwenden möchten, sollten Sie die Verwendung dieser Verteilung vermeiden.

2.2.2 Übersicht

Standardmäßig startet Ubuntu Server viele Dienste, die für Raspeye-Festplattenknoten fast nicht erforderlich sind, z. B. snapd, apparmor, iscsi, lvm2 und mdadm. Daher ist es schwierig, unnötige Dienste / Pakete nach der Installation zu entfernen.

Ich denke nicht, dass es notwendig ist, diese Distribution zu wählen, außer für diejenigen, die sie mögen, aber da es ein Major ist, werde ich sie behandeln.

Wenn ich versuche, es auf der offiziellen Ubuntu-Website herunterzuladen, gibt es 5 Typen, 32 Bit für 2/64 Bit für 3/32 Bit für 3/64 Bit für 4/32 Bit für 4 Es gibt Download-Optionen, und Sie werden sich fragen, welche Sie herunterladen sollen. Nach der Untersuchung in Bezug auf 20.04 (Focal Fossa) unterscheidet sich nur die Notation der Tasten, und die tatsächliche Situation ist nur der Unterschied zwischen 32 Bit und 64 Bit. Daher reicht es aus, die 32-Bit-Version für 2 und die 64-Bit-Version für 3 herunterzuladen. Außerdem werden für 18.04 (Bionic Beaver) Bilddateien für jedes Modell vorbereitet, wahrscheinlich weil die U-Boot-Binärdatei je nach Modell geändert werden musste. Das diesmal zu erstellende System verwendet nicht den U-Boot, der mit dem Disk-Image geliefert wird. Daher ist es ausreichend, sowohl die 32-Bit-Version für 2 als auch die 64-Bit-Version für 3 herunterzuladen.

2.2.3 Ziel herunterladen

20.04 LTS (Focal Fossa)

Von der oben genannten Seite

Laden Sie die neueste xz-Datei mit dem Namen herunter

18.04 LTS (Bionic Beaver)

Von der oben genannten Seite

Laden Sie die neueste xz-Datei mit dem Namen herunter.

2.2.4. Erstellen eines Speicherordners

'$ VERSION' im Befehl sollte 20.04 / 18.04 sein.

Bei der Installation der 32bit Version für Pi2

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

32-Bit-Version für Pi3 / 4 (wenn Sie nur den 64-Bit-Kernel erstellen möchten)

Da sich nur / boot / firmware in einem separaten Ordner befinden muss, ist es möglicherweise besser, Overlays unterhalb des Ordners für Pi2 zu berücksichtigen.

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

Bei der Installation der 64-Bit-Version für Pi3 und höher

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

2.2.5 Inhalt des offiziellen Bildes (xz-Datei)

Entpacken Sie die Prüfsumme der heruntergeladenen xz-Datei, nachdem Sie sie überprüft haben.

$ unxz ubuntu-20.04-preinstalled-server-arm64+raspi4.img.xz
(Ausgabeergebnis weggelassen)

Sie sollten eine Datei mit der Erweiterung von img.xz in img sehen (diesmal mit der 64-Bit-Raspi4-Version 20.04 vom 06.08.2020). Da es sich bei dieser Datei um ein DVD-Image handelt, das in zwei Partitionen unterteilt ist, erstellen und überprüfen Sie ein Loopback-Gerät.

$ 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 entspricht der ersten microSD-Partition (FAT, / boot / firmware) und loop0p2 entspricht der zweiten Partition (ext4, /). Erstellen Sie einen temporären Einhängepunkt unter / tmp, hängen Sie die beiden oben genannten Partitionen ein und kopieren Sie ihn in den freigegebenen NFS-Ordner. Ich möchte nicht kopieren, was ich von Anfang an nicht brauche, aber das einzige, was ich nicht brauche, ist ext4's lost + found. Zuerst kopiere ich alles in das freigegebene NFS-Verzeichnis und entferne dann Fundsachen, wenn ich fertig bin.

$ 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/
・ ・ ・(Kopieren Sie alle Dateien)
$ sudo rm -Rf /exports/os4pi/ubuntu/20.04/aarch64/lost+found

Wenn Sie mit dem Kopieren fertig sind, hängen Sie es ein und entfernen Sie auch den Loopback.

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

Das war's für Ubuntu.

2.3. ArchLinux ARM

2.3.1 Vorsichtsmaßnahmen

Ab 2020/06 ist die 32-Bit-Version durch einfaches Umschreiben der Datei /boot/config.txt für den plattenlosen Start bereit.

Es ist jedoch unmöglich, die plattenlose 64-Bit-Version gehorsam zu starten. Ich habe die aarch64-Version von ArchLinux überprüft und festgestellt, dass diese Distribution auch mit U-Boot startet (der Inhalt von kernel8.img ist U-Boot). Also habe ich den Kernel-Body und die Initramfs-Datei hochgeladen, die U-Boot in TFTP lädt, die Datei config.txt bearbeitet und den plattenlosen Rasp-Pie gestartet. Dank bootcode.bin werden Kernel + Initramfs von TFTP geladen. War möglich. Als nächstes wurde die Kontrolle auf den eigentlichen Kernel übertragen, und beim Booten von initramfs als temporäres Root-Dateisystem wurde gesagt, dass es kein Netzwerk gab und es gestoppt wurde. Anscheinend ist in diesem Kernel der USB-Ethernet-Treiber (smsc95xx) nicht integriert. Mit anderen Worten, es scheint, dass der Kernel auch hier neu kompiliert werden muss. Solch eine Sache

2.3.2 Übersicht

Bei ArchLinux ARM liegt die Installationsdatei im Format tar.xz anstelle der dd-Image-Datei vor, sodass sich der Importvorgang auf den NFS-Server nicht wesentlich von der normalen Installationsmethode unterscheidet. Das Verteilungsimage (und nicht die Gerätebaumdatei) ist jedoch für jedes Modell unterschiedlich. Da es sich um eine fortlaufende Update-Distribution handelt, gibt es keine Versionsnummer. Daher verteilen andere Distributionen das Unterverzeichnis entsprechend der Betriebssystemversion und -architektur. Ich werde die Stelle, die dort war, durch die Modellnummer des Ziel-Raspeltorten trennen.

Referenz: Offizielles Installationshandbuch (2B: 32-Bit-Version / 3B: 32/64-Bit-Version / platform / armv8 / broadcom / raspberry-pi-3) / 4B: 64-Bit-Version)

2.3.3 Ziel herunterladen

Wie im offiziellen Handbuch

Herunterladen von nach / tmp.

2.3.4. Erstellen und importieren Sie Speicherordner gleichzeitig

ArchLinux wird vervollständigt, indem einfach der folgende Einzeiler als Root ausgeführt wird. ** Achtung **: BSD-Teer wird anstelle von GNU-Teer verwendet. Wenn Sie ihn nicht installiert haben, installieren Sie ihn bitte im Voraus. [^ BSDTAR]

[^ BSDTAR]: Es kann mit GNU tar erweitert werden, aber beim Extrahieren tritt ein Fehler auf, da es eine nicht unterstützte Sicherheitskennung enthält.

# 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. Nächster Hinweis

Nächstes Mal passt das Betriebssystem an, das an Clients verteilt werden soll (Dateien unter / boot und / etc, beschränkt auf den Bereich, der mit einem Texteditor geändert werden kann). Gehen. Wenn Sie qemu-static nicht verwenden, können Sie nicht in den falschen Bereich wechseln.

Recommended Posts

Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 4: Erstellen eines NFS-Servers und Importieren eines Client-Betriebssystems)
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 3: Installieren und Konfigurieren von dnsmasq)
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 7: Einstellung der TFTP-Route und Starttest für jeden Raspetorte)
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 2: PiServer-Analyse und alternatives Systemdesign)
Aufbau eines VPN-Servers mit Raspberry Pie
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 1: Zusammenfassung der Verfügbarkeit von plattenlosen Clients nach Modell)
Betriebssystem-Setup mit Raspberry Pi Imager
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Erstellen einer Umgebung mit pyenv und pyenv-virtualenv
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Einfacher VPN-Aufbau eines IPSec-Gateways mit Ubuntu 20.04 und Raspberry Pi ―― 1. StrongSwan eingeführt
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --2 PHP Einführung
Cross-Compilieren von Raspberry Pi und Erstellen einer Remote-Debug-Entwicklungsumgebung mit VS Code
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver. 1. Apache-Einführung
Erstellen Sie ein IPSec-Gateway-VPN mit CentOS 8 und openSUSE (Raspberry Pi) - 2 StrongSwan VPN-Verbindungsbestätigung
MQTT Radicon Car mit Arduino und Himbeere
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
GRPC beginnend mit Go-Server und Dart-Client
Erstellen Sie Server in Linux und lokalen Netzwerken mit Raspberry Pi NextCloud und Desktop-Sharing
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --3. Verwenden Sie MySQL
Einfacher VPN-Aufbau eines IPSec-Gateways mit CentOS 8 und openSUSE (Raspberry Pi) --1 Einführung von StrongSwan
Einfacher VPN-Aufbau eines IPSec-Gateways mit Ubuntu 20.04 und Raspberry Pi - 2 StrongSwan VPN-Verbindungsbestätigung
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Einfaches IoT, um mit Raspeye und MESH zu beginnen
Stellen wir uns den Raum mit Raspeltorte vor, Teil 1
Ermitteln Sie den Tragezustand der Maske mit OpenCV und Raspberry Pi
Messen Sie Temperatur und Luftfeuchtigkeit mit Raspberry Pi3 und visualisieren Sie mit Ambient
Webanwendung erstellt mit Python3.4 + Django (Teil.1 Umgebungskonstruktion)
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Fehlerbehebung bei der Installation von OpenCV auf Raspberry Pi und der Erfassung
Raspberry Pi + Python + IoT-Gerät, Umgebungskonstruktionsverfahren zum Starten der Bildverarbeitung und des maschinellen Lernens
RPi / CentOS> Python> Unterscheidung der Ausführungsumgebung> Importieren von Betriebssystemen / Drucken von os.uname ()> Gibt an, ob Himbeerpi eingeschlossen werden soll