mit den Commits 79e363f und 93669c7 habe ich das Dateisystem-Layout auf der SD-Karte geändert.
Das neue Layout vereint die Vorteile der beiden alten Layout-Varianten:
- Einfache Installation (und Updates) wie beim "Simple Layout": Einfach die drei Installationsdateien auf die SD-Karte kopieren.
- Robustheit gegen Stromausfall, höhere Geschwindigkeit und geringer Resourcenverbrauch (CPU und RAM) wie im alten "Advanced Layout"
Das neue Layout kann in zwei verschiedenen Betriebsarten benutzt werden:
- "Standard": Diese Betriebsart entspricht dem alten "Simple Layout". Hier ist das eigentliche System read-only, schreibbar sind nur /etc, /home und (für "root") /media/sdcard/boot (das ist die FAT-Partition auf der SD-Karte).
- "Writeable Root": Entspricht dem alten "Advanced Layout", hier ist das gesamte Filesystem für "root" beschreibbar.
Technisch ist "Writeable Root" ebenfalls als Overlay realisiert, d.h. alle Änderungen an den normalerweise nur lesbaren Teilen des Systems landen ebenfalls in einem Verzeichnis auf der Ext4-Partition. Anders als im alten Layout funktioniert hier jetzt aber auch ein sauberes Update des Systems durch Austausch der Systemdateien (uImage, am335x-kno_txt.dtb und rootfs.img) auf der FAT-Partition. In diesem Fall werden die im alten System gemachten Änderungen beim ersten Start mit dem neuen System-Image in das Verzeichnis /media/sdcard/data/rootfs-overlay-old verschoben (statt wie im alten "Advanced Layout" einfach überschrieben zu werden).
Die Konvertierung vom alten "Simple Layout" auf das neue Layout passiert beim ersten Start der Community-Firmware automatisch. Dabei bleiben alle bisher gemachten Einstellungen (Passworte, SSH-Keys, installierte Apps, Daten in /home, ...) erhalten. Die beiden neu angelegten Partitionen bekommen bei der automatischen Einrichtung die Namen "CFW-BOOT" (die FAT-Partition) und "CFW-DATA" (die Ext4-Partition).
Beim Umstieg vom alten "Advanced Layout" muss man ein paar Verzeichnisse auf der SD-Karte von Hand anlegen (siehe weiter unten) und die Daten, die in diesen Verzeichnissen landen sollen, von Hand da hin kopieren.
Im Detail sieht das neue Layout so aus:
- 1. Partition: Dateisystem FAT32, Größe (bei automatischer Initialisierung) knapp 500MB (genug für die Systemdateien im laufenden System plus die neuen Systemdateien bei einem Update im laufenden Betrieb). Auf die erste Partition kommen im wesentlichen nur die Systemdateien uImage, am335x-kno_txt.dtb und rootfs.img, optional noch rootfs.conf
- 2. Partition: Dateisystem Ext4, Größe ist (bei automatischer Initialisierung) der ganze Rest der SD-Karte. Auf dieser Partition müssen die folgenden Verzeichnisse vorhanden sein:
- "overlay": Enthält die Änderungen, die im laufenden Betrieb an /etc und (in der Betriebsart "Writeable Root") an sonstigen Systemdateien gemacht werden. Besitzer des Verzeichnisses muss "root" sein, Berechtigungen sind "u=rwx,go-rwx" (d.h. das Verzeichnis ist nur für "root" les- und schreibbar). Die restriktiven Berechtigungen sind ein Schutz gegen versehentliche Beschädigung des Systems, weil das schreibbare Directory eines Overlay-FS im laufenden Betrieb des System nicht direkt beschrieben werden darf.
- "overlay/etc": Enthält geänderte Daten in "/etc". Besitzer ist "root", Berechtigungen sind "u=rwx,go=rx".
- "overlay/.workdir/": Arbeitsverzeichnisse für Overlayfs. Besitzer ist "root", Berechtigungen sind "u=rwx,go=rx".
- "overlay/.workdir/etc": Arbeitsverzeichnis für Overlayfs uf /etc. Besitzer ist "root", Berechtigungen sind "u=rwx,go=rx".
- "/home": Basisverzeichnis für Benutzerverzeichnisse (für "ftc" und "ROBOPro"). Besitzer ist "root", Berechtigungen sind "u=rwx,go=rx".
- "/home/ftc": Daten für den Benutzer "ftc": Besitzer ist "ftc" (uid 1001, gid 1001), Berechtigungen sind "u=rwx,go=rx".
- "/home/ftc/apps": Vom Benutzer installierte Apps (im alten Layout unter /media/sdcard/apps). Benutzer und Berechtigungen wie bei /home/ftc
- "/home/ROBOPro": Daten für den Benutzer "ROBOPro": Besitzer ist "ftc" (uid 1000, gid 1000), Berechtigungen sind "u=rwx,go=rx".
- "/home/ROBOPro/ROBOProFiles": Vom Benutzer permanent installierte ROBOPro-Programme (im alten Layout unter /media/sdcard/robopro). Benutzer und Berechtigungen wie bei /home/ROBOPro
- "/media/sdcard/boot": Die FAT-Partition
- "/media/sdcard/root": Die Daten aus /media/sdcard/boot/rootfs.img, d.h. der Inhalt des Root-Filesystems ohne alle vom Benutzer vorgenommenen Änderungen.
- "/media/sdcard/data": Die Ext4-Partition
Richard