Advanced Layout

Community-Firmware (cfw), Selbstbaucontroller (TX-Pi, ftduino, usw.), usw.
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
thomass
Beiträge: 42
Registriert: 19 Apr 2012, 14:29

Advanced Layout

Beitrag von thomass » 01 Nov 2017, 10:18

Hallo,

Gibe es eigentlich noch das advanced SD-Karten-Layout?

Mein modifiziertes Buildroot Image startet damit nicht auf. Mit dem einfachen Layout komme ich immerhin soweit, dass die CFW versucht das SD-Karten Filesystem zu initialisieren. Dann hängt es mit einem Ausrufezeichen, wahrscheinlich weil mein Image zu groß ist.

Viele Grüße
Thomas

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: Advanced Layout

Beitrag von ski7777 » 01 Nov 2017, 10:24

Es gibt nur noch ein Layout. Das startet von einer FAT32-Partition und richtet sich beim ersten booten eine ext4-Partition für die Daten ein.

Was hast du beim buildroot modifiziert?

Raphael

thomass
Beiträge: 42
Registriert: 19 Apr 2012, 14:29

Re: Advanced Layout

Beitrag von thomass » 01 Nov 2017, 12:10

Hallo Raphael,

Eigentlich nur einige Target-Pakete hinzugefügt, allerdings sehr Große, z.B. libboost.

Wo ist eigentlich die aktuelle Installationsanleitung? Auf der github Seite wird das advanced Layout noch beschrieben.

-Thomas

Benutzeravatar
ski7777
Beiträge: 870
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: Advanced Layout

Beitrag von ski7777 » 01 Nov 2017, 13:50


thomass
Beiträge: 42
Registriert: 19 Apr 2012, 14:29

Re: Advanced Layout

Beitrag von thomass » 01 Nov 2017, 14:24

Verstehe.

Sehe ich es richtig, das es zur Zeit keine Möglichkeit gibt, ein Image auf die Karte zu bekommen, das größer ist als der Hauptspeicher des TXT?

Gibt es denn eine Möglichkeit Programme, die ich auf meinem PC (cross-)compiliert habe auf den TXT zu übertragen (auch nach /usr, /opt, usw)?
"rysnc -avh <PC Cross Sysroot> root@ft-txt:/" wird ja wahrscheinlich nicht funktionieren?

Danke,
Thomas

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: Advanced Layout

Beitrag von richard.kunze » 01 Nov 2017, 14:59

Hallo Thomas,
thomass hat geschrieben: Sehe ich es richtig, das es zur Zeit keine Möglichkeit gibt, ein Image auf die Karte zu bekommen, das größer ist als der Hauptspeicher des TXT?
Nicht bei der ersten Installation (und wenn dir ein vernünftiger Weg einfällt, SD-Karte zu repartitionieren ohne das Image im RAM zwischenlagern zu müssen - immer her damit).

Du kannst aber die SD-Karte erst passend partitionieren, und dann dein größeres Image auf die FAT-Partition schreiben - das sollte eigentlich funktionieren.

Der simpelste Weg dafür dürfte die Installation eines Standard-Images sein - alternativ findest du in $BUILDROOT/board/fischertechnik/TXT/initramfs/repartition-sd-card das Script, das die SD-Karte umpartitioniert, da kannst du nachschauen wie das von der CFW erwartete Layout aussieht und die SD-Karte von Hand einrichten.
thomass hat geschrieben: Gibt es denn eine Möglichkeit Programme, die ich auf meinem PC (cross-)compiliert habe auf den TXT zu übertragen (auch nach /usr, /opt, usw)?
"rysnc -avh <PC Cross Sysroot> root@ft-txt:/" wird ja wahrscheinlich nicht funktionieren?
Nicht in der Default-Einstellung. Aber wenn Du auf die FAT-Partition eine Datei mit dem Namen "rootfs.conf" und Inhalt "rw" legst, dann mounted die CFW ein schreibbares Overlay auf "/".

Achtung: Wenn du danach ein neues Image auf die SD-Karte schreibst (bzw. genauer: Ein Image mit einer neuen CFW-Version), dann sind diese Änderungen erstmal weg (weil nicht sichergestellt werden kann dass die mit dem neuen Image kompatibel sind). Die Dateien findest Du nach dem Booten dann in /media/sdcard/data/rootfs-overlay-old, von da kannst Du sie wieder zurückkopieren wenn sie mit der neuen Version kompatibel sind.

thomass
Beiträge: 42
Registriert: 19 Apr 2012, 14:29

Re: Advanced Layout

Beitrag von thomass » 02 Nov 2017, 09:42

Hallo Richard
(und wenn dir ein vernünftiger Weg einfällt, SD-Karte zu repartitionieren ohne das Image im RAM zwischenlagern zu müssen - immer her damit)
Nicht spontan, es gibt bestimmt Möglichkeiten, wie z.B. das Image per dd auf einen definierten, versteckten Bereich der Karte schieben oder erst umpartitionieren und dann das Image zwischenspeichern.
Aber da müsste ich auch vieles ausprobieren.
Der simpelste Weg dafür dürfte die Installation eines Standard-Images sein
Das mache ich auch so und es funktioniert ganz gut.
, dann mounted die CFW ein schreibbares Overlay auf "/".
Auch das funktioniert. Gefährlich oder blöd wird es nur, wenn man per rsync "overlay/rootfs/.version" überschreibt. Das ist leider nicht immer offensichtlich, weil diese Datei ja nun mal versteckt ist...

Gibt es eigentlich einen root-account in der CFW und wenn, wie ist das password?
"rysnc -avh <PC Cross Sysroot> root@ft-txt:/" scheitert bei mir daran und "rysnc -avh <PC Cross Sysroot> ftc@ft-txt:/" kann nicht auf "/" schreiben.

Viele Grüße
Thomas

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: Advanced Layout

Beitrag von richard.kunze » 02 Nov 2017, 10:57

thomass hat geschrieben: Nicht spontan, es gibt bestimmt Möglichkeiten, wie z.B. das Image per dd auf einen definierten, versteckten Bereich der Karte schieben oder erst umpartitionieren und dann das Image zwischenspeichern.
Das Problem dabei ist: Umpartitionieren macht im Normalfall das Image kaputt, und nach dem umpartitionieren braucht man das Image wieder.

Das einzige, was mir eingefallen ist, wäre die FAT-Partition zerstörungsfrei zu verkleinern. Aber das einzige mir bekannte Tool dafür - fatresize - wird seit 2013 nicht mehr weiterentwickelt, weil die Entwickler der Meinung sind dass man den Job nicht vernünftig hinbekommen kann...
Gibt es eigentlich einen root-account in der CFW und wenn, wie ist das password?
"rysnc -avh <PC Cross Sysroot> root@ft-txt:/" scheitert bei mir daran und "rysnc -avh <PC Cross Sysroot> ftc@ft-txt:/" kann nicht auf "/" schreiben.
Eine Root-Account gibt es, aber der kann sich per Default nicht einloggen. Standard ist stattdessen, den ftc-Account zu nehmen und Root-Aufgaben per "sudo" zu machen.

Für rsync als Root hab ich mir ein kleines Script "rsync-as-root.sh" gebastelt, das im wesentlichen ein 'sudo rsync "$@"' macht um die Server-Seite von rsync als Root anzuwerfen. Auf der Client-Seite wird das ganze dann per "rsync --rsync-path=/home/ftc/rsync-as-root.sh $SOURCEPATH ftc@ft-txt:$TARGETPATH" gestartet.

Sobald ich zuhause bin kann ich das hier auch mal reinstellen.

thomass
Beiträge: 42
Registriert: 19 Apr 2012, 14:29

Re: Advanced Layout

Beitrag von thomass » 02 Nov 2017, 11:37

An Verkleinern hatte ich auch schon gedacht, aber das ist mit Busybox/Buildroot Boardmitteln wohl nicht möglich.

Das "rsync-as-root.sh" klingt gut, es wäre super wenn Du das zur Verfügung stellen könntest.

-Thomas

Benutzeravatar
MasterOfGizmo
Beiträge: 2720
Registriert: 30 Nov 2014, 07:44

Re: Advanced Layout

Beitrag von MasterOfGizmo » 02 Nov 2017, 14:24

richard.kunze hat geschrieben: Das Problem dabei ist: Umpartitionieren macht im Normalfall das Image kaputt, und nach dem umpartitionieren braucht man das Image wieder.
Irgendwas "brutales" geht bestimmt immer. Man kann z.B. das Image einfach raw ans Ende der SD-Karte schreiben und diesen Teil dann während der ganzen Partitioniererei unangetastet lassen. Oder ganz plump: Wenn ein USB-Stick erkannt wird, dann wird der als Zwischenspeicher genutzt.

Die Image-Größe auf TXT-RAM-Größe zu beschränken hat sicher einen gewissen Charme, weil es uns zwingt, etwas sparsam zu sein. Aber irgendwann will sicher jemand eine Variante bauen, die einen kompletten gcc enthält mit alle Dev-Libs und so ...
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32

thomass
Beiträge: 42
Registriert: 19 Apr 2012, 14:29

Re: Advanced Layout

Beitrag von thomass » 02 Nov 2017, 15:10

Verteilt der SD-Karten-Controller durch das Wear-Leveling und Fragmentierung nicht die Daten quer über alle Sektoren, gerade wenn die Karte nicht mehr ganz neu ist.
Es ist also wohl nicht ganz sicher, was man überschreibt, wenn man auf einen festen Platz der Karte schreibt.

Wobei ich nicht sicher bin, ob Wear-Leveling nicht transparent gegenüber der Sektor-Adressierung ist.

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: Advanced Layout

Beitrag von richard.kunze » 02 Nov 2017, 16:14

MasterOfGizmo hat geschrieben:Irgendwas "brutales" geht bestimmt immer. Man kann z.B. das Image einfach raw ans Ende der SD-Karte schreiben und diesen Teil dann während der ganzen Partitioniererei unangetastet lassen.
Gut Idee - das sollte eigentlich immer funktionieren solange die SD-Karte größer ist als die endgültige FAT-Partition plus die Größe des Image (also mit so ziemlich allen SD-Karten die man heutzutage bekommt).

Und man braucht den Platz auch nicht verschwenden, man muss nur das Image wieder auf die frisch angelegte FAT-Partition kopieren bevor man die zweite Partition mit ext4 formatiert (und dabei die Image-Kopie am Ende dann gegebenenfalls kaputtmacht).

Ich probier das mal aus (und Thomas kann dann das Versuchskaninchen für große Images spielen :-))..
thomass hat geschrieben:Wobei ich nicht sicher bin, ob Wear-Leveling nicht transparent gegenüber der Sektor-Adressierung ist.
Sollte es bei einer SD-Karte (oder einem USB-Stick) eigentlich sein.

thomass
Beiträge: 42
Registriert: 19 Apr 2012, 14:29

Re: Advanced Layout

Beitrag von thomass » 02 Nov 2017, 16:38

D.h. erst die FAT32 Partition verkleinern, neu formatieren und dann alle Dateien darauf kopieren?

Ansonsten kann es sein, dass einige Blöcke des rootfs.img schon die letzten Blöcke der SD-Karten belegen und dann überschrieben werden.

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: Advanced Layout

Beitrag von richard.kunze » 02 Nov 2017, 17:10

thomass hat geschrieben:D.h. erst die FAT32 Partition verkleinern, neu formatieren und dann alle Dateien darauf kopieren?
Eher "das Image ganz dreckig an einen festen Platz auf der Karte kopieren, neu partitionieren und dabei aufpassen dass dieser Bereich nicht überschrieben wird, die FAT-Partition neu formatieren, das Image wieder auf die FAT-Partition kopieren und dann den Rest mit Ext4 formatieren".
thomass hat geschrieben:Ansonsten kann es sein, dass einige Blöcke des rootfs.img schon die letzten Blöcke der SD-Karten belegen und dann überschrieben werden.
Hmm, stimmt. Sollte zwar normalerweise nicht vorkommen (weil man das CFW-Image im Normalfall auf eine leere SD-Karte schreibt die viel größer ist als das Image selbst), aber kann trotzdem passieren.

Vielleicht probier ich es doch erstmal mit fatresize, auch wenn das im allgemeinen Fall nicht sauber tut. Schließlich haben wir im Normalfall auch nur mit sehr simplen FAT-Dateisystemen zu tun (nur 3 Dateien im Hauptverzeichnis, keine Unterverzeichnisse, und im Normalfall wurden alle 3 Dateien auf ein blankes FAT32-System geschrieben)...

richard.kunze
Administrator
Beiträge: 583
Registriert: 26 Dez 2015, 23:49
Wohnort: Rhein-Main-Gebiet

Re: Advanced Layout

Beitrag von richard.kunze » 02 Nov 2017, 22:05

thomass hat geschrieben:Das "rsync-as-root.sh" klingt gut, es wäre super wenn Du das zur Verfügung stellen könntest.

Code: Alles auswählen

#!/bin/sh
exec sudo rsync "$@"

thomass
Beiträge: 42
Registriert: 19 Apr 2012, 14:29

Re: Advanced Layout

Beitrag von thomass » 03 Nov 2017, 10:43

Ui, das hatte ich mir jetzt komplizierter vorgestellt ;)

-Thomas

Antworten