Wie kann ich dafür sorgen, dass mein Raspberry Pi anstelle der SD-Karte einen NFS-Server für das Root-Dateisystem verwendet?
Ich möchte meinen Raspberry Pi so einrichten können, dass sein Root-Dateisystem auf einem Remote-Computer über NFS zu Leistungs-, Sicherungs- und Entwicklungszwecken ausgeführt wird. Wie kann ich das machen?
Antworten:
Die kurze Version
Sie benötigen noch eine SD-Karte für das frühe Booten, aber danach benötigt nichts außer / boot die SD-Karte.
Einzelheiten
Ich habe das nur auf einem Linux-Rechner gemacht. Theoretisch ist es jedoch auf jedem Computer möglich, der NFS-Dateisysteme exportieren kann.
Der einfachste Weg, ein Root-Dateisystem vorzubereiten, besteht darin, das von den vorhandenen Images bereitgestellte zu kopieren. Ich habe das offizielle Debian 6-Image als Ausgangspunkt verwendet:
Hängen Sie die Root-Partition von diesem Image mit einem Loopback-Gerät ein. Sie benötigen den Offset im Image für den Start der Root-Partition. In diesem Fall ist es die zweite Partition im Image:
Die zweite Partition beginnt am Block (oder Sektor) 157696, der Offset ist also (512 * 157696) = 80740352:
Wenn das Image gemountet ist, möchten Sie es wahrscheinlich an eine dauerhaftere Stelle kopieren, um die Verwendung des Loopback-Geräts für immer zu vermeiden. Ich habe ein LVM2-Volume erstellt und es unter / mnt / rpi-root gemountet.
Wir müssen jetzt das Dateisystem exportieren, also müssen wir eine Zeile hinzufügen wie:
in / etc / exports auf dem NFS-Server, wobei 192.168.1.2 die Adresse des Raspberry Pi ist. Nachdem Sie diesen Lauf hinzugefügt haben,
exportfs -rv
lesen Sie die Liste der Exporte erneut. ( Weitere Optionen, einschließlich Platzhalter / Subnetze anstelle einzelner Hosts, finden Sie unter Exporte (5). )Sie können diesen Schritt auch überspringen und ein Root-Dateisystem von Grund auf neu erstellen
multistrap
.Jetzt müssen wir eine SD-Karte erstellen, die das frühe Booten und Booten mit dieser NFS-Freigabe übernimmt. Ich habe dazu die erste Partition des offiziellen Images genommen und auf eine SD-Karte kopiert, auf der sich die SD-Karte / dev / sdx befindet:
und da dies nur die erste Partition kopierte, die die Partitionstabelle mit fdisk bearbeitete, um die beiden Partitionen zu löschen, die wir nicht kopiert haben.
Danach habe ich die Partition von der SD-Karte gemountet und die Datei cmdline.txt bearbeitet, um zu lesen:
Dabei ist 192.168.1.1 die Adresse des NFS-Servers. Wenn Sie DHCP nicht verwenden möchten, können Sie die IP-Adresse auf alternative Weise festlegen. Weitere Informationen finden Sie in diesem Dokument .
Sobald dies erledigt ist, können Sie die SD-Karte aushängen und Ihren Rapsberry Pi mit einem NFS-Root booten. Sie können das Dateisystem auch vom Server aus oder von anderen NFS-Clients aus nach Belieben bearbeiten (z. B. QEMU + binfmt_misc , LVM-Snapshots, Sicherungssysteme usw.).
Optionale Dinge
Wenn Sie ip = dhcp verwenden, müssen Sie die Zeile wahrscheinlich auskommentieren:
in / etc / network / interfaces (/ mnt / rpi-root / etc / network / interfaces), um eine Situation zu vermeiden, in der das Wechseln zwischen dem frühen und dem späteren Start-DHCP zu einer Meldung führt, die wie folgt lautet:
Wenn Sie viele Geräte von demselben Stammverzeichnis booten möchten, müssen Sie darauf achten, dass Sie ein "lokales" / tmp (wahrscheinlich tmpfs) und andere Feinheiten bereitstellen, um Probleme mit mehreren Computern zu vermeiden, die versuchen, auf dieselben Dateien zu schreiben.
quelle
/home/user/Documents/raspisRootFolder
und Kunden mountenfstab
einfach die ganze Sache an/
?/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
ab/etc/fstab
, obwohl ich denke , es würde fehlschlagen , ohne irgendwelche Probleme zu verursachen , wenn Sie es in verlassen.