Raspberry Pi als Embedded-Device
Hallo zusammen!
Ich habe den Raspi schon für viele Projekte verwendet und kenne daher seine Stärken und Schwächen. Eine seiner größten Schwächen ist das Booten von Linux von einer SD-Karte. Diese Karten sind als Datengrab für lineare Zugriffe gemacht, nicht für Random-Zugriffe und schon gar nicht als RAM-Auslagerungsmedium. Die Controller in den Karten sind nicht dafür optimiert (kein TRIM etc.). Ein Betrieb als Embedded-Device scheitert oft daran, dass diese SD-Karten relativ schnell kaputt geschrieben sind.
Ein weiteres Problem ist, dass Embedded-Geräte Hard-Off-fähig sein müssen. Also Ausschalten im laufenden Betrieb muss möglich sein. Siehe z.B. WLAN-Accesspoints, welche oftmals auch mit einem Embedded-Linux laufen und problemlos vom Strom getrennt und wieder eingeschaltet werden können, ohne dass man dafür irgendwelche Shutdown-Befehle ausführen muss. Macht man selbiges mit einem Raspi, so ist die Wahrscheinlichkeit hoch, dass die SD-Karte irreparabel beschädigt wird.
Ich habe schon mit Overlay-FS experimentiert und das Bootmedium readonly gemacht. Das hat aber seine Grenzen und zwar in der Größe vom RAM des Raspi. Der Bootloader lässt sich nicht overlayen und wenn es den beim Hard-Off erwischt, hat die SD-Karte zum letzten Mal gebootet.
Eine weitere Idee war ein USV-Shield mit einer Lithiumbatterie. Dabei wird der Raspi bei einem Powerloss nicht hart abgeschaltet, sondern ein Monitoring-Script im Raspi bekommt ein Triggersignal, das dann einen sauberen Shutdown auslöst. Sollte während des Runterfahrens der Strom wieder eingeschaltet werden, triggert das USV-Shield auch einen Reboot.
Overlay-FS und USV-Shield haben schon einiges gebracht. Kaputte SD-Karten habe ich seitdem nicht mehr. Trotzdem wechsle ich sie vorsichtshalber einmal im Jahr. Mich stören da jetzt weniger die 0,2 Gramm Plastikmüll, sondern die Arbeit die damit verbunden ist. Entweder habe ich ein Ersatz-Image gleich dabei, dann heißt es vorher neue Karte erstellen und einfach austauschen. Bei manchen Anwendungen geht das aber nicht so einfach, weil ich vorher noch Nutzdaten vom Embedded-Device kopieren muss. Nicht immer kann man sowas über eine Cloud lösen, weil keine Netzanbindung besteht. Auch wundert sich manchmal jemand, dass so eine Kiste nicht gleich aus geht wenn man den Stecker zieht, sondern erstmal noch eine Minute mit dem Mäusekino blinkert.
Jetzt überlege ich, ob man die Sache nicht noch auf anderen Wegen angehen könnte. Zum Beispiel nicht mehr von SD booten sondern von USB-SSD, die für Random-Zugriffe besser geeignet sind. Das habe ich bisher noch nie versucht. Auch habe ich noch keine Erfahrungen bzgl. Journaling-FS. Sind die in der Praxis tatsächlich resistent gegen solche Hard-Offs oder wird da übertrieben? Und vorallem, ist der Raspi überhaupt in der Lage, über USB von einem JFS zu booten?
Was gäbe es noch für Möglichkeiten, das Problem anzugehen? Vorschläge sind willkommen!
Grüße
Cody
Ich habe den Raspi schon für viele Projekte verwendet und kenne daher seine Stärken und Schwächen. Eine seiner größten Schwächen ist das Booten von Linux von einer SD-Karte. Diese Karten sind als Datengrab für lineare Zugriffe gemacht, nicht für Random-Zugriffe und schon gar nicht als RAM-Auslagerungsmedium. Die Controller in den Karten sind nicht dafür optimiert (kein TRIM etc.). Ein Betrieb als Embedded-Device scheitert oft daran, dass diese SD-Karten relativ schnell kaputt geschrieben sind.
Ein weiteres Problem ist, dass Embedded-Geräte Hard-Off-fähig sein müssen. Also Ausschalten im laufenden Betrieb muss möglich sein. Siehe z.B. WLAN-Accesspoints, welche oftmals auch mit einem Embedded-Linux laufen und problemlos vom Strom getrennt und wieder eingeschaltet werden können, ohne dass man dafür irgendwelche Shutdown-Befehle ausführen muss. Macht man selbiges mit einem Raspi, so ist die Wahrscheinlichkeit hoch, dass die SD-Karte irreparabel beschädigt wird.
Ich habe schon mit Overlay-FS experimentiert und das Bootmedium readonly gemacht. Das hat aber seine Grenzen und zwar in der Größe vom RAM des Raspi. Der Bootloader lässt sich nicht overlayen und wenn es den beim Hard-Off erwischt, hat die SD-Karte zum letzten Mal gebootet.
Eine weitere Idee war ein USV-Shield mit einer Lithiumbatterie. Dabei wird der Raspi bei einem Powerloss nicht hart abgeschaltet, sondern ein Monitoring-Script im Raspi bekommt ein Triggersignal, das dann einen sauberen Shutdown auslöst. Sollte während des Runterfahrens der Strom wieder eingeschaltet werden, triggert das USV-Shield auch einen Reboot.
Overlay-FS und USV-Shield haben schon einiges gebracht. Kaputte SD-Karten habe ich seitdem nicht mehr. Trotzdem wechsle ich sie vorsichtshalber einmal im Jahr. Mich stören da jetzt weniger die 0,2 Gramm Plastikmüll, sondern die Arbeit die damit verbunden ist. Entweder habe ich ein Ersatz-Image gleich dabei, dann heißt es vorher neue Karte erstellen und einfach austauschen. Bei manchen Anwendungen geht das aber nicht so einfach, weil ich vorher noch Nutzdaten vom Embedded-Device kopieren muss. Nicht immer kann man sowas über eine Cloud lösen, weil keine Netzanbindung besteht. Auch wundert sich manchmal jemand, dass so eine Kiste nicht gleich aus geht wenn man den Stecker zieht, sondern erstmal noch eine Minute mit dem Mäusekino blinkert.
Jetzt überlege ich, ob man die Sache nicht noch auf anderen Wegen angehen könnte. Zum Beispiel nicht mehr von SD booten sondern von USB-SSD, die für Random-Zugriffe besser geeignet sind. Das habe ich bisher noch nie versucht. Auch habe ich noch keine Erfahrungen bzgl. Journaling-FS. Sind die in der Praxis tatsächlich resistent gegen solche Hard-Offs oder wird da übertrieben? Und vorallem, ist der Raspi überhaupt in der Lage, über USB von einem JFS zu booten?
Was gäbe es noch für Möglichkeiten, das Problem anzugehen? Vorschläge sind willkommen!
Grüße
Cody
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1030907241
Url: https://administrator.de/contentid/1030907241
Ausgedruckt am: 24.11.2024 um 00:11 Uhr
13 Kommentare
Neuester Kommentar
Ein / Aus Taster von Pimoroni elimiert die Probleme beim harten Ausschalten:
https://shop.pimoroni.com/products/onoff-shim
https://shop.pimoroni.com/products/onoff-shim
nimm robustere Betriebsystem und Speichermedien - Linux und Windows sind genauso wie Mark-Fuffzig SD Karten für so einen Einsatzzweck vollkommen ungeeignet. Das booten dauert übrigens bei beiden schon im Regelfall so lange weil die CPU des Raspi schlichtweg nicht für ein voll ausgewachsenes Windows gedacht ist und SD Karten wie eingangs schon jemand geschrieben hat, nicht für Random Zugirffe gedacht sind.
Ich hab z.B. seit 12 Jahren einen semiprofessionellen Camcorder, mit dem hab ich auch tausende Stunden an Aufnahmen gemacht (eine Stunde kann schon mal 12 GB groß sein) und Terabytes an Daten produziert. Eine Durchscnitts-SD Karte zu 32 GB konnte man mit dem Camcorder 20-50 mal vollschreiben, dann fingen die schon an rumzuzicken, Dateisystemdefekt, formatieren u.s.w. quer über alle Hersteller.
Und aktuell geht die Qualität mal so richtig in den Keller, eine SD Karte war nach 7x Vollschreiben hin ... USB Sticks können mit Random Zugriffen übrigens besser umgehen. Ich hab mal so ein Experiment gemacht, Windows 7 bootfähig auf SD Karte mit nem Adapter und auf USB Stick. Mit dem USB Stick war die Installation nach 10 Minuten fertig, mit der SD Karte (beide mit 20 MB/Sec spezifiziert) 30-40 Minuten.
Ich hab z.B. seit 12 Jahren einen semiprofessionellen Camcorder, mit dem hab ich auch tausende Stunden an Aufnahmen gemacht (eine Stunde kann schon mal 12 GB groß sein) und Terabytes an Daten produziert. Eine Durchscnitts-SD Karte zu 32 GB konnte man mit dem Camcorder 20-50 mal vollschreiben, dann fingen die schon an rumzuzicken, Dateisystemdefekt, formatieren u.s.w. quer über alle Hersteller.
Und aktuell geht die Qualität mal so richtig in den Keller, eine SD Karte war nach 7x Vollschreiben hin ... USB Sticks können mit Random Zugriffen übrigens besser umgehen. Ich hab mal so ein Experiment gemacht, Windows 7 bootfähig auf SD Karte mit nem Adapter und auf USB Stick. Mit dem USB Stick war die Installation nach 10 Minuten fertig, mit der SD Karte (beide mit 20 MB/Sec spezifiziert) 30-40 Minuten.
@GrueneSosseMitSpeck welches Betriebssystem würdest du vorschlagen?
Zitat von @Codehunter:
Würde mich auch mal interessieren. Zumal wir hier im Linux-Forum sind und ich nie auf die Idee kommen würde, Windows auf dem Raspi einzusetzen. Geschweige denn Headless als Embedded-Device.
Würde mich auch mal interessieren. Zumal wir hier im Linux-Forum sind und ich nie auf die Idee kommen würde, Windows auf dem Raspi einzusetzen. Geschweige denn Headless als Embedded-Device.
Jetzt wird es Kurios. Ich dachte, dies sei ein Administrator-Forum. Ja, als Basis dient ein Ubuntu, aber ist es deshalb gleich ein Linux-Forum?
Zitat von @148656:
Jetzt wird es Kurios. Ich dachte, dies sei ein Administrator-Forum. Ja, als Basis dient ein Ubuntu, aber ist es deshalb gleich ein Linux-Forum?
Zitat von @Codehunter:
Würde mich auch mal interessieren. Zumal wir hier im Linux-Forum sind und ich nie auf die Idee kommen würde, Windows auf dem Raspi einzusetzen. Geschweige denn Headless als Embedded-Device.
Würde mich auch mal interessieren. Zumal wir hier im Linux-Forum sind und ich nie auf die Idee kommen würde, Windows auf dem Raspi einzusetzen. Geschweige denn Headless als Embedded-Device.
Jetzt wird es Kurios. Ich dachte, dies sei ein Administrator-Forum. Ja, als Basis dient ein Ubuntu, aber ist es deshalb gleich ein Linux-Forum?
Er meinte vermutlich, daß er als Kategorie Linux angegeben hat.
lks
Joar lks,
Du sagst es. Vermutlich.😉
Gruß
C.C.
Du sagst es. Vermutlich.😉
Gruß
C.C.
Zitat von @Codehunter:
Ich habe den Raspi schon für viele Projekte verwendet und kenne daher seine Stärken und Schwächen. Eine seiner größten Schwächen ist das Booten von Linux von einer SD-Karte. Diese Karten sind als Datengrab für lineare Zugriffe gemacht, nicht für Random-Zugriffe und schon gar nicht als RAM-Auslagerungsmedium. Die Controller in den Karten sind nicht dafür optimiert (kein TRIM etc.). Ein Betrieb als Embedded-Device scheitert oft daran, dass diese SD-Karten relativ schnell kaputt geschrieben sind.
Ich würde mal einen Blick in Richtung CM4 Industrial IoT Systeme werfen. Dort wären dann durchaus auch M.2 Medien möglich.
Geht mit dem 3B und 4er ja auch. Die können ja direkt von einer USB SSD oder USB Stick mit m.2 Modul booten. Da ist ja nicht das Problem. Der Ein/Ausschalter ist der eigentliche Knackpunkt....
Obwohl es zumindestens für den RasPi 4 eine elegante Lösung mit einem UPS Board gibt:
https://www.cnx-software.com/2021/07/13/diy-raspberry-pi-4-mini-server-i ...
Obwohl es zumindestens für den RasPi 4 eine elegante Lösung mit einem UPS Board gibt:
https://www.cnx-software.com/2021/07/13/diy-raspberry-pi-4-mini-server-i ...
Ein interessanter Artikel zu dem Thema der auch das SD Kartenproblem elegant löst findet sich in der aktuellen ct'
https://www.heise.de/select/ct/2021/16/2112313321295857638
https://www.heise.de/select/ct/2021/16/2112313321295857638