OverlayRootfs: Schützen Sie Ihr Root-Dateisystem für mehr Sicherheit

0 Kommentare

Einführung in OverlayRootfs

OverlayRootfs bezeichnet ein Root-Dateisystem, das mit der OverlayFS-Technologie erstellt wurde. OverlayFS ist ein Union-Dateisystem (UnionFS), das die Zusammenführung mehrerer Dateisystemebenen in einer einzigen Ansicht ermöglicht und in Linux-Systemen weit verbreitet ist. Geräte mit OverlayRootfs können problemlos Schreibschutz- und Werksreset-Funktionen für das Root-Dateisystem implementieren.

Schreibschutz für das Root-Dateisystem

Auf Firefly-Geräten, die OverlayRootfs unterstützen, wird die Rootfs-Partition schreibgeschützt unter /root-ro (der unteren Ebene) gemountet. Alle Benutzeränderungen werden in /userdata/rootfs_overlay (der oberen Ebene) der Userdata-Partition und nicht in die Rootfs-Partition geschrieben. Dadurch wird sichergestellt, dass die Rootfs-Partitionsdaten schreibgeschützt bleiben und nicht beschädigt werden. OverlayRootfs führt /root-ro und /userdata/rootfs_overlay zu einer einzigen Ansicht zusammen und macht sie für den Benutzer unsichtbar.

Beispielbeschreibung

Häufige Stromausfälle und Neustarts auf Linux-Geräten können Lese-/Schreibpartitionen beschädigen und einen ordnungsgemäßen Start verhindern. Firefly-Geräte mit aktiviertem OverlayRootfs verwenden die Benutzerdatenpartition als eigentliche Lese-/Schreibpartition. Selbst wenn ein Stromausfall die Benutzerdatenpartition beschädigt, kann das Gerät das Root-Dateisystem weiterhin schreibgeschützt starten. Benutzer können das Gerät weiterhin steuern, um Partitionswiederherstellungen und Datensicherungsvorgänge durchzuführen. Hier ist ein Beispiel für ein System, das nach manueller Zerstörung der Benutzerdatenpartition schreibgeschützt startet:

Sie können eine Datei erstellen oder löschen, um OverlayRootfs zu testen. Die eigentlichen Daten werden in /userdata/rootfs_overlay geschrieben.

  1. # Create a file that can be found in the same directory under /userdata/rootfs_overlay/
  2. root@firefly:~# touch /usr/local/bin/firefly-test
  3. root@firefly:~# ls /userdata/rootfs_overlay/usr/local/bin/firefly-test
  4. /userdata/rootfs_overlay/usr/local/bin/firefly-test
  5.  
  6. # Delete the corresponding files under /userdata/rootfs_overlay/. The corresponding files in the real file system will also be modified.
  7. root@firefly:~# rm -rf /userdata/rootfs_overlay/usr/local/bin/firefly-test
  8. root@firefly:~# ls /usr/local/bin/
  9. disable_ModemManager.sh docker-compose ec200.sh quectel-CM restart_plank.sh

Da die RootFS-Partition schreibgeschützt ist und nicht geändert werden kann, können Sie mit df -h feststellen, dass der verfügbare Speicherplatz auf der RootFS-Partition klein ist. Dies ist normal, da der Benutzer tatsächlich in die Benutzerdatenpartition schreibt.

Werkseinstellungen wiederherstellen

Durch Ausführen des „Recovery Reset“ wird die Benutzerdatenpartition automatisch gelöscht und das Dateisystem des Geräts in seinen ursprünglichen Zustand unmittelbar nach dem Flashen zurückgesetzt.

  1. # Create a file verification function and execute recovery reset to restore factory settings.
  2. root@firefly:~# touch /home/firefly/test
  3. root@firefly:~# ls /home/firefly/test
  4. /home/firefly/test
  5. root@firefly:~# recovery reset
  6. command: --wipe_all
  7. update: write command to command file: done
  8. update: write command to misc file: done
  9. update: reboot!
  10.  
  11. # After reboot
  12. root@firefly:~# ls /home/firefly/test
  13. ls: cannot access '/home/firefly/test': No such file or directory
  14.  

OverlayRootfs deaktivieren

OverlayRootfs muss möglicherweise in einigen Szenarien deaktiviert werden, z. B. beim Schnellstart, A&B-System usw. Sie können die OverlayRootfs-Funktion aktivieren/deaktivieren, indem Sie die Kernel-Startparameter ändern. Beispiel: RK3576:

  1. # Modify the kernel's dts chosen node.
  2. kernel/arch/arm64/boot/dts/rockchip/rk3576-linux.dtsi
  3.  
  4. chosen: chosen {
  5. // Disable OverlayRootfs functionality
  6. //bootargs = "earlycon=uart8250,mmio32,0x2ad40000 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rw rootwait rcupdate.rcu_expedited=1 rcu_nocbs=all";
  7. // Enable OverlayRootfs functionality
  8. bootargs = "earlycon=uart8250,mmio32,0x2ad40000 console=ttyFIQ0 root=PARTLABEL=rootfs rootfstype=ext4 ro rootwait overlayroot=device:dev=PARTLABEL=userdata,fstype=ext4,mkfs=1 rcupdate.rcu_expedited=1 rcu_nocbs=all net.ifnames=0";

FFMedia von Firefly: Ultra-Flow-Videoverarbeitungsframework

Hinterlasse einen Kommentar

Bitte beachte, dass Kommentare vor der Veröffentlichung freigegeben werden müssen.