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.
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.
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.
Fügen Sie den freigegebenen Ordner gemäß dem Handbuch des von Ihnen verwendeten Produkts hinzu
Bearbeiten Sie / etc / export und führen Sie den Befehl exportfs aus Referenz: NFS-Erklärung von ArchLinux
#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.
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.
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.
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.
Ü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.
$ sudo mkdir -p /exports/os4pi/raspbian/buster/armhf
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
$ sudo mkdir -p /exports/os4pi/raspbian/buster/aarch64
$ sudo mkdir -p /exports/os4pi/raspbian/stretch/armhf
Ü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
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.
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.
Von der oben genannten Seite
Laden Sie die neueste xz-Datei mit dem Namen herunter
Von der oben genannten Seite
Laden Sie die neueste xz-Datei mit dem Namen herunter.
'$ VERSION' im Befehl sollte 20.04 / 18.04 sein.
$ sudo mkdir -p /exports/os4pi/ubuntu/$VERSION/armhf
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
$ sudo mkdir -p /exports/os4pi/ubuntu/$VERSION/aarch64
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
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
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)
Wie im offiziellen Handbuch
Herunterladen von nach / tmp.
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
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.