{"id":14432,"date":"2026-02-25T11:36:48","date_gmt":"2026-02-25T02:36:48","guid":{"rendered":"https:\/\/pilink.jp\/?p=14432"},"modified":"2026-02-25T11:36:48","modified_gmt":"2026-02-25T02:36:48","slug":"ubuntu-partition-overlay","status":"publish","type":"post","link":"https:\/\/pilink.jp\/de\/ubuntu-partition-overlay\/","title":{"rendered":"OverlayFS f\u00fcr Datenpersistenz und Schutz vor Stromausf\u00e4llen bei verl\u00e4ngerter Speicherlebensdauer"},"content":{"rendered":"\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:25%\"><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<p>Ein typischer Raspberry Pi verwendet zum Schreiben des Betriebssystems eine microSD-Karte, die ein praktisches, aber leicht zu besch\u00e4digendes Speichermedium ist. eMMC wird in industriellen Anwendungen wie dem CM5 verwendet, weil es robuster ist als eine microSD-Karte. Einer der Gr\u00fcnde, warum eMMC in industriellen Anwendungen wie dem CM5 verwendet wird, ist, dass es ein robusteres Speichermedium als microSD-Karten ist.  <\/p>\n\n\n\n<p>Indem Sie den Betriebssystemteil einer microSD-Karte oder eines anderen Speichermediums schreibgesch\u00fctzt machen, k\u00f6nnen Sie die Anzahl der Schreibvorg\u00e4nge auf dem Speichermedium stark reduzieren und so die Lebensdauer des Speichermediums verl\u00e4ngern. Au\u00dferdem erh\u00f6ht sich dadurch die Wahrscheinlichkeit, dass der Betriebssystemteil bei einem pl\u00f6tzlichen Stromausfall nicht besch\u00e4digt wird. <\/p>\n\n\n\n<p>Der Raspberry Pi verf\u00fcgt \u00fcber eine Methode namens &#8222;Overlay File System&#8220;, die \u00fcber raspi-config einfach konfiguriert werden kann. Es ist bereits seit einiger Zeit unter <code>raspi-config<\/code>zur Konfiguration verf\u00fcgbar. <\/p>\n\n\n\n<p>OverlayFS ist ein Mechanismus, der das System (OS) als schreibgesch\u00fctzt (RO) behandelt und das gesamte System wie ein einziges Dateisystem aussehen l\u00e4sst, indem nur die Dateien, auf die geschrieben wird, in einen anderen beschreibbaren Bereich (obere Schicht) kopiert und gespeichert werden.<\/p>\n\n\n\n<p>Dieser beschreibbare Bereich wird im Speicher als tmpfs erweitert und verschwindet, wenn das System wieder eingeschaltet wird.<br>Auf den ersten Blick kann das System so behandelt werden, als ob es ver\u00e4ndert und gespeichert wurde, aber der Systemteil ist schreibgesch\u00fctzt und wurde nicht ver\u00e4ndert.<br>Wenn Sie also das System ausschalten, geht nichts verloren.<br>Das bedeutet, dass das System zu dem Punkt zur\u00fcckkehrt, an dem es schreibgesch\u00fctzt wurde.<\/p>\n\n\n\n<p>Wir m\u00f6chten zumindest eine minimale Anzahl von Dateien nach dem Neustart beibehalten und verwenden.<br>Bei der Verwendung von Overlayfs wird dies erreicht, indem die Daten mit einem symbolischen Link auf eine separate Partition ausgelagert werden.<br>In diesem Fall haben wir uns nur auf netzwerkbezogene \u00c4nderungen und die Sicherung des Home-Ordners konzentriert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Testumgebung f\u00fcr diesen Test<\/h2>\n\n\n\n<p>Die Umgebung, die wir dieses Mal getestet haben, ist wie folgt.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>32 GB microSD-Karte (64 GB oder mehr empfohlen)<\/li>\n\n\n\n<li>Ubuntu Desktop 25.10 (64-bit)<\/li>\n\n\n\n<li>Teilen Sie \/data in eine separate Partition auf<\/li>\n\n\n\n<li>Speichern in \/data unter Verwendung eines symbolischen Links (Symlink)<\/li>\n\n\n\n<li>Netzwerk verwendet NetworkManager<\/li>\n\n\n\n<li>OverlayFS wird manuell durch Bearbeiten der Datei cmdline.txt konfiguriert<\/li>\n\n\n\n<li>Die Tests wurden auf einem aktuellen Pi 5 durchgef\u00fchrt (diese Methode ist auch auf den PL-R5 mit CM5 anwendbar)<\/li>\n<\/ul>\n\n\n\n<p>Wir versuchen, die microSD-Karte mit 10 GB \/Datenspeicher zu teilen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"700\" src=\"https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/utm-ubuntu2510-disks-1-1024x700.webp\" alt=\"\" class=\"wp-image-14336\" srcset=\"https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/utm-ubuntu2510-disks-1-1024x700.webp 1024w, https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/utm-ubuntu2510-disks-1-300x205.webp 300w, https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/utm-ubuntu2510-disks-1-768x525.webp 768w, https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/utm-ubuntu2510-disks-1-370x253.webp 370w, https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/utm-ubuntu2510-disks-1-540x369.webp 540w, https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/utm-ubuntu2510-disks-1-600x410.webp 600w, https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/utm-ubuntu2510-disks-1.webp 1392w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Die Methode der Partitionierung einer Partition ist die gleiche wie die Methode der Partitionierung einer Partition, in der das <a href=\"https:\/\/pilink.jp\/de\/r5-partitioning\/\" target=\"_blank\" rel=\"noreferrer noopener\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Wie Sie die Partition aufteilen, auf der das Betriebssystem installiert ist<\/mark><\/a> f\u00fcr Details.<\/p>\n\n\n\n<p>Nach dem Booten von Ubuntu, das zur Evakuierung partitioniert wurde, schlie\u00dfen Sie das Update ab.<br>In diesem Zustand fahren wir mit den n\u00e4chsten Schritten fort.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Konfigurationsfluss<\/h3>\n\n\n\n<p>Der allgemeine Ablauf der Einrichtung ist wie folgt<\/p>\n\n\n\n<p>1. Ubuntu schreiben  <br>2. Starten Sie den aktuellen Rechner und schlie\u00dfen Sie die Ersteinrichtung und die Updates ab.  <br>3. Lesen Sie die microSD-Karte einmal auf einem anderen Rechner und partitionieren Sie sie (ca. 10 GB zum Speichern von Daten)  <br>4. Vorbereitungsarbeiten vor Overlayfs  <br>5. Overlayfs aktivieren<\/p>\n\n\n\n<p>Nun, da wir bis zu 3 fertig sind, fahren wir mit den Vorbereitungen f\u00fcr die endg\u00fcltigen Overlayfs fort.<br>\u00dcberpr\u00fcfen Sie schlie\u00dflich bei aktivierten Overlayfs die Netzwerkeinstellungen auf \u00c4nderungen usw.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Eine weitere Partition einh\u00e4ngen<\/h2>\n\n\n\n<p>Wir werden mit der geteilten Partition arbeiten, nachdem sie gemountet wurde.  <br>lsblk \u00fcberpr\u00fcft, ob die geteilte Partition noch nicht eingeh\u00e4ngt ist. ( <code>mmcblk0p3<\/code>) <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS\nmmcblk0     179:0    0  29.7G  0 disk \n\u251c\u2500mmcblk0p1 179:1    0   512M  0 part \/boot\/firmware\n\u251c\u2500mmcblk0p2 179:2    0  19.9G  0 part \/\n\u2514\u2500mmcblk0p3 179:3    0   9.3G  0 part <\/code><\/pre>\n\n\n\n<p>Erstellen Sie \/data unter root und mounten Sie mmcblk0p3 dort.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/data\nsudo mount \/dev\/mmcblk0p3 \/data<\/code><\/pre>\n\n\n\n<p><code>\u2514\u2500mmcblk0p3 179:3 0 9.3G 0 part \/data<\/code>Es ist in Ordnung, wenn die<\/p>\n\n\n\n<p>Damit es beim Start automatisch eingeh\u00e4ngt wird, f\u00fcgen Sie an fstab. blkid oder den n\u00e4chsten Coman an, um die UUID zu ermitteln. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo blkid -s UUID -o value \/dev\/mmcblk0p3<\/code><\/pre>\n\n\n\n<p>oder<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>lsblk -f \/dev\/mmcblk0<\/code><\/pre>\n\n\n\n<p>Kopieren Sie die UUID und h\u00e4ngen Sie sie an die fstab unter <code>sudo nano \/etc\/fstab<\/code> an. (Die UUID sollte wie folgt lauten.) <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>UUID=f3afb6b2-a959-4c4b-bdb6-3c38a0fe33be \/data ext4 defaults 0 2<\/code><\/pre>\n\n\n\n<p>Aktualisieren Sie und melden Sie sich erneut an und \u00fcberpr\u00fcfen Sie den MOUNT-Status.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl daemon-reload\nsudo mount -a\nmount | grep \/data<\/code><\/pre>\n\n\n\n<p><code>\/dev\/mmcblk0p3 on \/data type ext4 (rw,relatime,errors=remount-ro)<\/code>angezeigt wird, ist es in Ordnung.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Die Rolle der \/data Partition<\/h2>\n\n\n\n<p>Letztendlich wird \/data beschreibbar (rw) gemacht, so dass die Netzwerkeinstellungen in diesen \/data-Bereich verschoben werden.<br>Das Verzeichnis \/home wird ebenfalls im \/data-Bereich gespeichert.<\/p>\n\n\n\n<p>Das Rootfs des Systems sollte Overlayfs sein, das am Ende schreibgesch\u00fctzt (ro) ist.<\/p>\n\n\n\n<p>Derzeit gibt es zwei allgemeine Methoden zum Speichern von Daten.<br>Es gibt zwei Methoden: die symbolische Link-Methode (Symlink) und die Bind-Mount-Methode.<\/p>\n\n\n\n<p>Dieses Mal handelt es sich um einen symbolischen Link.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Overlayfs + symbolische Links<\/h2>\n\n\n\n<p>Der Arbeitsablauf f\u00fcr symbolische Links ist wie folgt<\/p>\n\n\n\n<p>1. Erstellen Sie ein Verzeichnis als limbisches Linkziel und machen Sie es zu einem Einh\u00e4ngepunkt.  <br>2. Kopieren Sie die Originaldateien.  <br>3. Erstellen Sie einen symbolischen Link.  <br>4. Best\u00e4tigen Sie den symbolischen Link.<\/p>\n\n\n\n<p>Nachdem die symbolischen Links ordnungsgem\u00e4\u00df eingerichtet sind, werden wir sie in Overlayfs umwandeln.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Verzeichnisse f\u00fcr Einh\u00e4ngepunkte erstellen<\/h3>\n\n\n\n<p>Bereiten Sie nur ein leeres Verzeichnis vor, bevor Sie den symbolischen Link ausf\u00fchren. Einh\u00e4ngepunkt. <\/p>\n\n\n\n<p>In diesem Fall sind die folgenden f\u00fcnf symbolisch zu verkn\u00fcpfen.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\/etc\/NetworkManager<\/li>\n\n\n\n<li>\/var\/lib\/NetworkManager<\/li>\n\n\n\n<li>\/home<\/li>\n\n\n\n<li>\/etc\/hostname<\/li>\n\n\n\n<li>\/etc\/hosts<\/li>\n\n\n\n<li>Erstellen Sie ein Verzeichnis zum Einh\u00e4ngen in \/etc\/netplan \/data.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/data\/etc\/NetworkManager\nsudo mkdir -p \/data\/var\/lib\/NetworkManager\nsudo mkdir -p \/data\/home\nsudo mkdir -p \/data\/etc\/netplan<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. Kopieren von Dateien<\/h3>\n\n\n\n<p>Kopieren Sie die Originaldaten auf die Seite \/data.<br>Die Verzeichnisbezeichnung im Befehl sollte einen abschlie\u00dfenden Schr\u00e4gstrich enthalten, da wir in diesem Fall nur den Inhalt in ein bereits vorhandenes Verzeichnis kopieren wollen.<br>Wenn Sie in diesem Bereich einen Fehler machen, bleiben Sie bei verschachtelten Verzeichnissen h\u00e4ngen.<\/p>\n\n\n\n<p>-Schr\u00e4gstrich f\u00fcr &#8222;Inhalt einschlie\u00dfen&#8220; <br>-keine f\u00fcr &#8222;einen ganzen Ordner erstellen&#8220;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Copy NetworkManager configuration\nsudo rsync -a \/etc\/NetworkManager\/ \/data\/etc\/NetworkManager\/\nsudo rsync -a \/var\/lib\/NetworkManager\/ \/data\/var\/lib\/NetworkManager\/\n\n# Copy netplan configuration\nsudo rsync -a \/etc\/netplan\/ \/data\/etc\/netplan\/\n\n# Copy the home directory\nsudo rsync -a \/home\/ \/data\/home\/\n\n# Copy configuration files\nsudo cp -a \/etc\/hosts \/data\/etc\/hosts\nsudo cp -a \/etc\/hostname \/data\/etc\/hostname<\/code><\/pre>\n\n\n\n<p>hosts und hostname sind eine Datei. Der Befehl <code>cp -a<\/code>ist also in Ordnung. <br>*netplan\/ enth\u00e4lt Informationen zur Wi-Fi-Verbindung. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Symbolische Links erstellen<\/h3>\n\n\n\n<p>L\u00f6schen Sie die urspr\u00fcngliche Gruppe von Dateien, bevor Sie einen symbolischen Link erstellen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo rm -rf \/etc\/NetworkManager\nsudo ln -s \/data\/etc\/NetworkManager \/etc\/NetworkManager\n\nsudo rm -rf \/var\/lib\/NetworkManager\nsudo ln -s \/data\/var\/lib\/NetworkManager \/var\/lib\/NetworkManager\n\nsudo rm -rf \/etc\/netplan\nsudo ln -s \/data\/etc\/netplan \/etc\/netplan\n\n# Move to the root directory before modifying \/home\ncd \/\nsudo rm -rf \/home\nsudo ln -s \/data\/home \/home\n\nsudo ln -sf \/data\/etc\/hosts \/etc\/hosts\nsudo ln -sf \/data\/etc\/hostname \/etc\/hostname<\/code><\/pre>\n\n\n\n<p>Wir werden es hier einmal \u00fcberpr\u00fcfen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ls -l \/etc\/NetworkManager\nls -l \/var\/lib\/NetworkManager\nls -l \/etc\/netplan\nls -l \/home\nls -l \/etc\/hostname\nls -l \/etc\/hosts<\/code><\/pre>\n\n\n\n<p>Die Anzeige sollte zum Beispiel etwa so aussehen<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>lrwxrwxrwx 1 root root 24 Feb  7 21:08 \/etc\/NetworkManager -&gt; \/data\/etc\/NetworkManager\nlrwxrwxrwx 1 root root 28 Feb  7 21:09 \/var\/lib\/NetworkManager -&gt; \/data\/var\/lib\/NetworkManager\nlrwxrwxrwx 1 root root 17 Feb  9 09:40 \/etc\/netplan -&gt; \/data\/etc\/netplan\nlrwxrwxrwx 1 root root 10 Feb  7 21:09 \/home -&gt; \/data\/home\nlrwxrwxrwx 1 root root 18 Feb  7 21:10 \/etc\/hostname -&gt; \/data\/etc\/hostname\nlrwxrwxrwx 1 root root 15 Feb  7 21:10 \/etc\/hosts -&gt; \/data\/etc\/hosts<\/code><\/pre>\n\n\n\n<p>Pr\u00fcfen Sie, ob NetworkManager und andere Programme die \/data-Seite mit symbolischen Links verwenden.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>realpath \/etc\/NetworkManager\nrealpath \/etc\/NetworkManager\nrealpath \/var\/lib\/NetworkManager<\/code><\/pre>\n\n\n\n<p>Daher ist es in Ordnung, wenn der Befehl realpath auch den Pfad auf der \/data-Seite anzeigt.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/data\/etc\/NetworkManager\n\/data\/var\/lib\/NetworkManager<\/code><\/pre>\n\n\n\n<p>Die gemountete \/data-Partition wird schlie\u00dflich so aussehen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"710\" height=\"1024\" src=\"https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/tree-data-ubuntu-710x1024.webp\" alt=\"\" class=\"wp-image-14340\" srcset=\"https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/tree-data-ubuntu-710x1024.webp 710w, https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/tree-data-ubuntu-208x300.webp 208w, https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/tree-data-ubuntu-768x1108.webp 768w, https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/tree-data-ubuntu-370x534.webp 370w, https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/tree-data-ubuntu-465x670.webp 465w, https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/tree-data-ubuntu-600x865.webp 600w, https:\/\/pilink.jp\/wp-content\/uploads\/2026\/02\/tree-data-ubuntu.webp 893w\" sizes=\"auto, (max-width: 710px) 100vw, 710px\" \/><\/figure>\n\n\n\n<p>Die Kopie liegt auf der Seite \/data bereit, die beschreibbar ist.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. OverlayFS installieren und aktualisieren<\/h3>\n\n\n\n<p>Jetzt sind wir startklar.<br>Installieren Sie overlayroot und aktualisieren Sie initramfs.<\/p>\n\n\n\n<p>1. Installieren Sie Overlayfs (overlayroot) <br>2. In cmdline.txt hinzuf\u00fcgen <br>3. \u00c4ndern Sie die Netzwerkeinstellungen mit Overlayfs und pr\u00fcfen Sie, ob dies dauerhaft ist.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install overlayroot\nsudo update-initramfs -u\nsudo reboot<\/code><\/pre>\n\n\n\n<p>Wenn die Aktualisierung abgeschlossen ist, zeigt das initramfs etwa so an.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>update-initramfs: Generating \/boot\/initrd.img-6.17.0-1007-raspi\nUsing DTB: bcm2712-rpi-5-b.dtb\nInstalling \/lib\/firmware\/6.17.0-1007-raspi\/device-tree\/broadcom\/bcm2712-rpi-5-b.dtb into \/boot\/dtbs\/6.17.0-1007-raspi\/.\/bcm2712-rpi-5-b.dtb\nTaking backup of bcm2712-rpi-5-b.dtb.\nInstalling new bcm2712-rpi-5-b.dtb.\nflash-kernel: installing version 6.17.0-1007-raspi\nCopying kernel assets to \/boot\/firmware\/new\/\nCopying boot firmware to \/boot\/firmware\/new\/\nCopying device trees to \/boot\/firmware\/new\/\nCopying device tree overlays to \/boot\/firmware\/new\/overlays\/\nPlease be aware next reboot will boot twice<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">5. Zu cmdline.txt hinzuf\u00fcgen<\/h3>\n\n\n\n<p>Wenn wir vom Neustart zur\u00fcckkehren, wollen wir nur \/data als rw behalten, also f\u00fcgen wir es mit einer Option zum Ausschluss eines anderen Blocks hinzu.<br>Der Pfad zu cmdline.txt unterscheidet sich vom Raspberry Pi OS.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/boot\/firmware\/current\/cmdline.txt<\/code><\/pre>\n\n\n\n<p>An den Anfang von cmdline.txt anh\u00e4ngen.  <br>Hinweis: cmdline.txt muss in einer einzigen Zeile geschrieben werden. Keine Zeilenumbr\u00fcche. Leerzeichen zwischen den Eintr\u00e4gen.  <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>overlayroot=tmpfs:recurse=0<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>overlayroot=tmpfs:recurse=0 zswap.enabled=1 zswap.compressor=zstd multipath=off dwc_otg.lpm_enable=0 console=tty1 root=LABEL=writable rootfstype=ext4 panic=10 rootwait fixrtc quiet splash<\/code><\/pre>\n\n\n\n<p>Starten Sie nach dem Schreiben neu.<\/p>\n\n\n\n<p>Damit ist die gesamte Einrichtung abgeschlossen.<br>Starten Sie neu, um zu sehen, ob nur bootfs jetzt schreibgesch\u00fctzt (ro) ist.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Pr\u00fcfen Sie schreibgesch\u00fctzt und beschreibbar.<\/h2>\n\n\n\n<p>Vergewissern Sie sich nach dem Neustart, dass Overlayfs auf der rootfs-Seite ordnungsgem\u00e4\u00df aktiviert ist.<br>Umgekehrt wird auch \/data auf seine Beschreibbarkeit \u00fcberpr\u00fcft.<\/p>\n\n\n\n<p>Zun\u00e4chst einmal ist das Ergebnis von lsblk, dass rootfs jetzt richtig overlayfs ist. (\/media\/root-ro) <br>\/data ist ohnehin rw. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mmcblk0     179:0    0  29.7G  0 disk \n\u251c\u2500mmcblk0p1 179:1    0   512M  0 part \/boot\/firmware\n\u251c\u2500mmcblk0p2 179:2    0  19.9G  0 part \/media\/root-ro\n\u2514\u2500mmcblk0p3 179:3    0   9.3G  0 part \/data<\/code><\/pre>\n\n\n\n<p>Wenn Sie in einem Terminal eine Verbindung zu SSH herstellen, k\u00f6nnen Sie es oft sehen, da es beim Verbindungsaufbau angezeigt wird. overlay wird angezeigt. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>tmpfs-root \/media\/root-rw tmpfs rw,relatime,inode64 0 0\noverlayroot \/ overlay rw,relatime,lowerdir=\/media\/root-ro,upperdir=\/media\/root-rw\/overlay,workdir=\/media\/root-rw\/overlay-workdir\/_,uuid=on,nouserxattr 0 0\n\/dev\/mmcblk0p2 \/media\/root-ro ext4 ro,relatime 0 0<\/code><\/pre>\n\n\n\n<p>Wir werden uns individuell bei ihnen erkundigen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mount | grep \" on \/ \"\nmount | grep \/data\nls -l \/etc | grep NetworkManager\nls -l \/ | grep \/home<\/code><\/pre>\n\n\n\n<p>Erwartete Ergebnisse:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mount | grep \" on \/ \"\noverlayroot on \/ type overlay (rw,relatime,lowerdir=\/media\/root-ro,upperdir=\/media\/root-rw\/overlay,workdir=\/media\/root-rw\/overlay-workdir\/_,uuid=on,nouserxattr)\n\nmount | grep \/data\n\/dev\/mmcblk0p3 on \/data type ext4 (rw,relatime)\n\nls -l \/etc | grep NetworkManager\nlrwxrwxrwx 1 root                 root                    24 Feb  7 21:08 NetworkManager -&gt; \/data\/etc\/NetworkManager\n\nls -l \/ | grep \/home\nlrwxrwxrwx   1 root    root            10 Feb  7 21:09 home -&gt; \/data\/home<\/code><\/pre>\n\n\n\n<p>Haben Sie die erwarteten Ergebnisse gesehen?Overlayfs ist jetzt vollst\u00e4ndig.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Abschlie\u00dfender Test<\/h2>\n\n\n\n<p>Ich werde ein paar Dinge testen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wi-Fi Ziel \u00e4ndern<\/h3>\n\n\n\n<p>Wir werden das Wi-Fi-Ziel auch im Status Overlayfs \u00e4ndern und \u00fcberpr\u00fcfen, ob dies nach dem Neustart immer noch der Fall ist.<\/p>\n\n\n\n<p>Die Wi-Fi-Verbindungsinformationen liegen in \/etc\/netplan im yaml-Format vor.<br>Da es sich auch hier um einen symbolischen Link handelt, wird die \/data-Seite neu geschrieben und die urspr\u00fcngliche \/etc sollte ebenfalls darauf verweisen.<\/p>\n\n\n\n<p>Vor der \u00c4nderung gibt es ein yaml mit dem Namen 90-NM-~.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ls -l \/data\/etc\/netplan\/\n\n-rw------- 1 root root 157 Oct  7 11:52 50-cloud-init.yaml\n-rw------- 1 root root 706 Oct  7 11:55 90-NM-32f4a827-cc10-4a0e-aae9-64158b7a33e7.yaml<\/code><\/pre>\n\n\n\n<p>Ich habe \u00fcber die GUI-Steuerung auf dem Desktop von 5g Wi-Fi zu 2g Wi-Fi gewechselt.  <br>Daher habe ich noch ein weiteres Ger\u00e4t. Nat\u00fcrlich ist es mit Wi-Fi verbunden. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-rw------- 1 root root 157 Oct  7 11:52 50-cloud-init.yaml\n-rw------- 1 root root 706 Feb  9 09:54 90-NM-201e82b9-74eb-4783-a9db-48e3a5d7f14e.yaml\n-rw------- 1 root root 706 Oct  7 11:55 90-NM-32f4a827-cc10-4a0e-aae9-64158b7a33e7.yaml<\/code><\/pre>\n\n\n\n<p>Wenn die beiden nach dem Neustart in diesem Zustand auf dieselbe Weise beibehalten werden, ist das in Ordnung. Sie wurden tats\u00e4chlich beibehalten. <\/p>\n\n\n\n<p>Jetzt k\u00f6nnen wir die Wi-Fi-Verbindungsinformationen auch im Status Overlayfs \u00e4ndern.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wenn die Datei nach dem Neustart nicht mehr vorhanden ist, funktioniert OverlayFS korrekt.<\/h3>\n\n\n\n<p>\u00dcberpr\u00fcfen Sie abschlie\u00dfend das Schreiben der Datei mit Overlayfs.<br>Lassen Sie uns eine Testdatei direkt unter root erstellen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo touch \/test_file<\/code><\/pre>\n\n\n\n<p>Da rootfs ein Overlayfs ist, verh\u00e4lt es sich so, als ob es im Speicher ge\u00e4ndert worden w\u00e4re. An diesem Punkt k\u00f6nnen Sie in ihn schreiben.   <br>Aber das wird nur in tmpfs geschrieben, so dass es nach dem Neustart verschwunden ist.<\/p>\n\n\n\n<p>Wenn die Datei selbst verschwindet und nach dem Neustart nicht mehr vorhanden ist, dann funktioniert Overlayfs.<\/p>\n\n\n\n<p>Starten Sie neu und pr\u00fcfen Sie mit <code>ls -l \/test_file<\/code>usw. <br>Es sollte verschwunden sein.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">So machen Sie Overlay r\u00fcckg\u00e4ngig<\/h2>\n\n\n\n<p>Im Overlayfs-Zustand bringt ein Neustart das System also wieder an den Punkt zur\u00fcck, an dem es in Overlayfs umgewandelt wurde.<br>Das liegt daran, dass der urspr\u00fcngliche rootfs-Bereich schreibgesch\u00fctzt (ro) ist und sich auf seiner oberen Ebene wie ein im Speicher erweitertes (tmpfs) verh\u00e4lt.<br>Das tmpfs verschwindet nach einem Neustart.<\/p>\n\n\n\n<p>Um rootfs wieder auf normales Lesen\/Schreiben umzustellen, l\u00f6schen Sie <code>overlayroot=tmpfs:recurse=0<\/code>im Anhang der cmdline.txt. <br>Starten Sie dann neu und es ist wieder normal.<\/p>\n\n\n\n<p>Wenn Sie wieder zu Overlayfs konvertieren m\u00f6chten, k\u00f6nnen Sie einfach die gleichen Informationen in einf\u00fcgen.<br>Dies ist m\u00f6glich, da bootfs beschreibbar bleibt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Persistenz ausgew\u00e4hlter Daten<\/h2>\n\n\n\n<p>Dieses Mal haben wir in einer Overlayfs-Umgebung einige netzwerkbezogene und \/home-Verzeichnisse auf eine separate Partition ausgelagert.<br>Die \u00c4nderungen wurden ordnungsgem\u00e4\u00df beibehalten, so dass die Daten erfolgreich persistiert wurden.<\/p>\n\n\n\n<p>Symbolische Links funktionieren bei einigen Dateien problemlos.<\/p>\n\n\n\n<p>Es ist jedoch nicht sehr sinnvoll, eine ganze Gruppe von Dateien, auf die h\u00e4ufig zugegriffen wird, aufzubewahren. Dies gilt insbesondere in diesem Fall, da die Partitionen einfach auf demselben Speichermedium abgeschnitten sind.   <br>Es ist nicht gut, wenn das Rootfs mit Overlayfs schreibgesch\u00fctzt gemacht wird, aber auf dasselbe Medium immer wieder zugegriffen wird.<\/p>\n\n\n\n<p>Es w\u00e4re w\u00fcnschenswert, Konfigurationsdaten zu exportieren oder Dateien zu speichern, die auch im Overlayfs-Zustand erzeugt wurden.<br>Ich m\u00f6chte die Einstellung so genau wie m\u00f6glich festlegen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Beilage 1<\/h2>\n\n\n\n<p>Eigentlich konnte ich mit Raspberry Pi OS dieses Mittel nicht bekommen, ich dachte, es sei ein Problem mit Trixie, aber anscheinend war es bis Bullseye m\u00f6glich, und das gleiche Verfahren kann nicht von Bookworm aus durchgef\u00fchrt werden.<\/p>\n\n\n\n<p>Soweit ich herausfinden und \u00fcberpr\u00fcfen konnte, haben weder Symlinks noch Bindmounts zu den erwarteten Ergebnissen gef\u00fchrt; es scheint, dass sie tief im Raspberry Pi OS erzwungen werden.<\/p>\n\n\n\n<p>Insbesondere wurde das Bind-Mount in ein Block-f\u00fcr-Block-Mount ge\u00e4ndert und zu einem einfachen Mount herabgestuft.  <br>Ich bin kein Raspberry Pi OS-Entwickler in diesem Bereich, daher wei\u00df ich nicht, warum. Vielleicht ist es ein Weg, um zu verhindern, dass Anf\u00e4nger das System versehentlich zerst\u00f6ren. <\/p>\n\n\n\n<p>Ubuntu war in Ordnung, soweit ich es getestet habe.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Beilage 2<\/h2>\n\n\n\n<p>Das \u00c4ndern des Hostnamens im overlayfs-Status war m\u00f6glich, soweit ich es mit dem Befehl hostnamectl versucht habe, aber die SSH-Verbindung bleibt ein Problem und die Verbindung kann nur mit dem Hostnamen vor der \u00c4nderung hergestellt werden. Nach der Verbindung wird der Hostname ebenfalls ge\u00e4ndert, nur SSH scheint den h\u00fcbschen Hostnamen zu \u00fcbernehmen. Es scheint, dass es besser w\u00e4re, den Hostnamen nach der Deaktivierung von overlayfs zu \u00e4ndern.  <\/p>\n\n\n\n<p>Beachten Sie, dass der SSH-Server unter Ubuntu zun\u00e4chst nicht installiert ist. Er muss mit dem folgenden Befehl installiert und aktiviert werden. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install openssh-server\nsudo systemctl enable ssh\nsudo systemctl start ssh<\/code><\/pre>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:25%\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium is-resized\"><a href=\"https:\/\/raspida.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/pilink.jp\/wp-content\/uploads\/2024\/09\/raspida-red-profile-300x300.png\" alt=\"\" class=\"wp-image-6246\" style=\"width:150px\" srcset=\"https:\/\/pilink.jp\/wp-content\/uploads\/2024\/09\/raspida-red-profile-300x300.png 300w, https:\/\/pilink.jp\/wp-content\/uploads\/2024\/09\/raspida-red-profile-600x600.png 600w, https:\/\/pilink.jp\/wp-content\/uploads\/2024\/09\/raspida-red-profile-100x100.png 100w, https:\/\/pilink.jp\/wp-content\/uploads\/2024\/09\/raspida-red-profile-150x150.png 150w, https:\/\/pilink.jp\/wp-content\/uploads\/2024\/09\/raspida-red-profile-370x370.png 370w, https:\/\/pilink.jp\/wp-content\/uploads\/2024\/09\/raspida-red-profile-540x540.png 540w, https:\/\/pilink.jp\/wp-content\/uploads\/2024\/09\/raspida-red-profile.png 759w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:70%\">\n<p>Artikel beigetragen von Raspida<\/p>\n\n\n\n<p>Raspberry Pi-Informationsseite, die auch von Nicht-Ingenieuren genutzt werden kann <a href=\"https:\/\/raspida.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong> raspida.com<\/strong><\/a> eine Raspberry Pi-Informationsseite, die auch f\u00fcr Nicht-Ingenieure interessant ist und mit der sie umgehen k\u00f6nnen. Er schreibt auch <a href=\"https:\/\/pilink.jp\/de\/technical-blog\/\" data-type=\"page\" data-id=\"4315\">technische Blogartikel<\/a> auf der PiLink-Website \u00fcber den Raspberry Pi f\u00fcr den industriellen Einsatz. <\/p>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:25%\"><\/div>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Indem der OS-Teil schreibgesch\u00fctzt wird, wird das Schreiben auf den Speicher stark reduziert, was die Lebensdauer der Speichermedien verl\u00e4ngert. Au\u00dferdem erh\u00f6ht sich dadurch die Wahrscheinlichkeit, dass der Betriebssystemteil bei einem pl\u00f6tzlichen Stromausfall nicht besch\u00e4digt wird. <\/p>\n","protected":false},"author":6,"featured_media":14335,"comment_status":"closed","ping_status":"closed","sticky":true,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[131],"tags":[250,260,406],"class_list":["post-14432","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technisch","tag-cm5-de","tag-image-de","tag-ubuntu-de"],"acf":[],"_links":{"self":[{"href":"https:\/\/pilink.jp\/de\/wp-json\/wp\/v2\/posts\/14432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pilink.jp\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pilink.jp\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pilink.jp\/de\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/pilink.jp\/de\/wp-json\/wp\/v2\/comments?post=14432"}],"version-history":[{"count":4,"href":"https:\/\/pilink.jp\/de\/wp-json\/wp\/v2\/posts\/14432\/revisions"}],"predecessor-version":[{"id":14441,"href":"https:\/\/pilink.jp\/de\/wp-json\/wp\/v2\/posts\/14432\/revisions\/14441"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pilink.jp\/de\/wp-json\/wp\/v2\/media\/14335"}],"wp:attachment":[{"href":"https:\/\/pilink.jp\/de\/wp-json\/wp\/v2\/media?parent=14432"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pilink.jp\/de\/wp-json\/wp\/v2\/categories?post=14432"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pilink.jp\/de\/wp-json\/wp\/v2\/tags?post=14432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}