Power Off

Forum zum Informationsaustausch für Seminar-Teilnehmer

Postby mb71034 » Wed Sep 26, 2012 12:00 am

wie vermeide ich denn eigentlich bei einem Embedded Linux ein korruptes Filesystem beim Ausschalten der Stromversorgung? (Wenn ich das Board "unbeaufsichtigt" in Betrieb habe - also keinen "shutdown -h 0" Befehl ausführen kann).

danke, gruss, michael
mb71034
 
Posts: 1
Joined: Fri Jan 03, 2014 2:14 pm

Postby der-trainer » Wed Sep 26, 2012 12:00 am

Gute Frage!

Na ja am einfachsten waehlt man eben ein Filesystem aus, das nicht korrupiert

Es kommt natuerlich auch darauf an wo das File system liegt.

Moeglichkeiten.

1) initrd (ram disk) - kein Problem, aber man braucht dafuer genuegend RAM.

2) flash file Systeme wie jffs2 oder ubifs haben einen eingbauten Mechanismus damit das Filesystem nicht korrupiert.

3) read only filesystem (z.B. mount ext2 read only)

4) journaling file system (ext3, ext4)

Du kannst ja mal last in Linux eingeben um zu sehen welche reboots, shut downs,... Du hattest.

Gruesze,

Robert
der-trainer
 
Posts: 12
Joined: Fri Jan 03, 2014 2:14 pm

Postby ag » Thu Sep 27, 2012 12:00 am

Hi mb71034,

ich mache mir auch Gedanken darüber, bin aber nicht sicher ob die Vorschläge von Der-Trainer bei der Elektor Board anwendbar sind.

Ich bin kein Linux vertrauter, aber ich versuche mich heranzulesen. Da habe ich gelesen, dass Linux eingerichtet werden kann, sodass es merkt via USV status ob es ihm der Saft ausgegangen ist und sich ggf. sicher herunterfährt. Ich denke aufgrund der minimale Stromverbrauchs könnte man ein 9V Blockbatterie so verschalten, das es an Pin 1 von X6 angeschlossen wird, falls an Pin 1 die Versorgung ausfällt, und eine entsprechende Signal an Linux gibt das die "USV" sich eingeschaltet hat. Wie das gehen soll, muss ich noch erforschen.

Ich habe auch überlegt, ob der Elektor Board beim booten vorerst prüft, ob der Filesystem beschädigt ist oder nicht, und ggf. ein reparaturversuch unternimmt bevor es "gemountet" wird. Recherche zufolge sollte Linux das standardmässig tun.

Edit: noch besser gefällt mir die Idee, anstatt eine 9V Blockbatterie als USV, dafür eine entsprechendes GoldCap an +5V permanent zu schliessen. Dann Pin 1 von X6 überwachen mit z.B. eine "Reset" Schaltung.
Ag
ag
 
Posts: 533
Joined: Thu Jan 02, 2014 10:37 am

Postby der-trainer » Sat Sep 29, 2012 12:00 am

Hi Ag,

Bei dem Elektor Board gibt es wahrscheinlich nicht ausreichend RAM um da viel mit initramd u.s.w. zu machen, aber ein rootfs mit ext3 oder ext4 sollte schon moeglich sein.

Auch koennte man mehrere Partitionen auf der SD Karte machen und die Dinge die read-only sein koennen als read only mounten und den Rest als read/write ablegen.

Das mit dem beschriebenen watchdog Verhalten ist sicherlich nicht schlecht, aber wahrscheinlich ein wenig trickreich, da man ja nicht unbedingt weisz wie viel Zeit man zum Abspeichern der nicht abgespeicherten Daten braucht.

Man koennte auch sync aufdrehen, dass immer alles abgespeichert wird, aber dann wird es unter Umstaenden sehr langsam.

Gruesze,

Robert
der-trainer
 
Posts: 12
Joined: Fri Jan 03, 2014 2:14 pm

Postby der-trainer » Sat Sep 29, 2012 12:00 am

Ag

Ich habe auch überlegt, ob der Elektor Board beim booten vorerst prüft, ob der Filesystem beschädigt ist oder nicht, und ggf. ein reparaturversuch unternimmt bevor es "gemountet" wird. Recherche zufolge sollte Linux das standardmässig tun.


Die Frage hier ist:"Wo prueft man?"

Wenn der Bootloader zusammengeschossen ist spielt da wahrscheinlich nichts mehr, denn der Prozessor wird sich nicht auf die Suche nach einem gueltigen Bootloader machen.

Wenn der Linux Kernel zusammengeschossen ist wird auch nicht viel gehen.

Also muesste man zumindest einen funktionierenden boot loader + kernel + minimal rootfs haben oder die Ueberprufung im boot loader machen.

Ich wuerde u-boot als boot loader verwenden und kernel+rootfs zweimal auf unterschiedlichen Partitionen haben, dann besteht die Chance recht einfach von der einen oder anderen Partition zu booten.

Gruesze,

Robert
der-trainer
 
Posts: 12
Joined: Fri Jan 03, 2014 2:14 pm

Postby ag » Sun Sep 30, 2012 12:00 am

Hallo Robert,

vielen herzlichen Dank für die weiterführende Info.

Ich erinnere mich hier http://unix.stackexchange.com/questions/26516/safely-use-sd-cards-when-power-can-go-out-at-any-time gelesen zu haben, das es ohne USV ähnliche Lösung wegen NAND Probleme mit Datenverust geben kann. Trifft das auch nicht bei den Elektor Board zu?

Vielen Dank und viele Grüße,
Ag
Ag
ag
 
Posts: 533
Joined: Thu Jan 02, 2014 10:37 am

Postby der-trainer » Sun Sep 30, 2012 12:00 am

Hi,

Es gibt sicherlich einen trade-off zwischen Kosten (hardware, software,...) und einem System wo es keinen Datenverlust geben darf.

Reines NAND Flash ist da ganz schlecht, denn manche Hersteller werden ueberhaupt keine Garantien geben. Da braucht man dann Prozessoren die ueber Signaturen rausfinden welcher bootloader, kernel,... intakt sind.

Ich habe so ca. 1/2 Million Geraete in der Welt verteilt herumstehen, die Linux laufen haben und von NOR bzw. NAND Flash booten, allerdings nicht von SD Karten.

Fuer meine Schulungen verwende ich unterschiedliche Loesungen. Fuer die Elektor Embedded Linux Schulugen verwende ich zur Zeit das Beagle-XM (denn dieses ist mainline), welches ueber eine SD Karte booted bzw. das rootfs auch ueber NFS mouten kann. Habe bis jetzt noch keinen Datenverlust im Betrieb gehabt.

Probleme die ich gesehen habe:

1) Karte beim Partitionieren/Formatieren zerschossen

2) Karte booted nicht ohne Kernel patch wegen Timing Problemen (je nach SD Karten Hersteller)

Gruesze,

Robert
der-trainer
 
Posts: 12
Joined: Fri Jan 03, 2014 2:14 pm


Return to Embedded-Linux-Seminar

Who is online

Users browsing this forum: No registered users and 1 guest