Wie kann ich verhindern, dass die SD-Karte meines Pi so oft beschädigt wird?

47

Ich erhalte beim Booten einen E / A-Fehler und erhalte dann den folgenden "Fehler": (Ich verwende die neueste Version von Raspbian.)

Entering kdb (current=0xca82ac80, pid 1) due to keyboard entry
kdb> _

Und ich habe es schon einmal gesehen und mir wurde erklärt, dass meine SD-Karte beschädigt wurde, da ich nicht richtig heruntergefahren habe. Eine Woche später habe ich diesen Fehler nicht behoben, bis die Stromversorgung dreimal flackerte und ich jetzt nicht mehr booten kann. Anscheinend bereite ich meine SD-Karte jeden Tag neu vor !!! Ich mag das nicht, ganz zu schweigen davon, dass ich die Fähigkeiten meiner Pi liebe. Aber dieser "Haltepunkt" macht mich verrückt! Gibt es eine Möglichkeit, dies zu verhindern oder etwas zu stärken, damit es nicht passiert, wenn der Strom ausfällt? Irgendwelche Vorschläge? Vielen Dank!

PS Meine zip-Datei war nicht beschädigt und mein Extraktionsdienst ist Win32DiskImager

user151324
quelle
2
Ist Ihre Karte auf dieser Liste
Butters
Haben Sie jemals an UPS gedacht?
Lenik
@lenik Sagst du, ich sollte so etwas wie einen Überspannungsschutz haben?
user151324
Weil Sie das Ding ausschalten, ohne es ordnungsgemäß herunterzufahren?
Jippie
1
@coding_corgi eher etwas mit einer Batterie im Inneren, die 5-10 Minuten nach dem Stromausfall Strom liefert, die es Ihnen ermöglicht, kurze Stromstöße zu ignorieren, und Ihnen Zeit gibt, Ihren Computer (automatisch?) herunterzufahren, wenn die Stromversorgung für einen langen Zeitraum ausfällt Zeit. Es heißt "Unterbrechungsfreie Stromversorgung" oder kurz USV.
Lenik

Antworten:

48

Ich werde nicht über die Überprüfung Ihrer Hardware- und kompatiblen SD-Kartenlisten schreiben, da Sie höchstwahrscheinlich alle diese bereits überprüft haben. Was ich schreiben werde, ist die dauerhafte Lösung, die es ermöglicht, das Problem im Keim zu ersticken und das Problem dauerhaft zu beheben.

Wenn Sie nicht möchten, dass Ihre SD-Karte beim Betätigen des Netzschalters beschädigt wird, müssen Sie sie im schreibgeschützten Modus verwenden. Wenn auf Ihre SD-Karte nichts geschrieben wird, wird sie nicht beschädigt, egal was Sie tun.

Eine naheliegende (aber nicht funktionierende) Lösung wäre der Versuch, den "Nur-Lese" -Schalter auf der Seite der SD-Karte umzudrehen. Leider funktioniert dies nicht, da der Schaltplan zeigt, dass dieser Schalter nirgends verlegt ist und seine Position im Allgemeinen ignoriert wird.

Ein anderer, subtilerer (aber funktionierender) Ansatz wäre, /etc/fstabIhre Partitionen so zu mounten, dass sie schreibgeschützt sind. Der Nachteil dieses Ansatzes ist, dass Ihre Protokolle an einer anderen Stelle geschrieben werden müssen (USB-Stick, RAM-Laufwerk?) Und im Falle eines RAM-Laufwerks die Protokolle während des Neustarts nicht bestehen bleiben. Um dies zu tun:

  1. Kopieren Sie ein RPi-Image mit einer beliebigen Methode auf Ihre SD-Karte.
  2. Booten Sie von SD und raspi-configstartet automatisch. Erweitern Sie nicht das Dateisystem, sondern richten Sie Ihre Zeitzone und Ihre internationalen Einstellungen ein.
  3. Führen Sie aus sudo fdisk /dev/mmcblk0, drücken Sie 'p', um die aktuelle Partitionstabelle zu drucken. Geben Sie dann die folgenden Befehle ein:

    n        Create a new partition
    [enter]  Make a primary partition
    [enter]  Use the default number
    [#]      1 greater than the end of mmcblk0p2
    [enter]  Expand to the end of the SD card
    w        Write the partition table and exit
    
  4. Bearbeiten /etc/fstab. Es sollte ungefähr so ​​aussehen:

    proc            /proc     proc    defaults 0 0
    /dev/mmcblk0p1  /boot     vfat    ro       0 0
    /dev/mmcblk0p2  /         ext4    ro       0 0
    /dev/mmcblk0p3  /home     ext4    defaults,errors=remount-ro  0  1
    none            /var/run  ramfs   size=1M  0 0
    none            /var/log  ramfs   size=1M  0 0
    
  5. Führen Sie aus sudo partprobe, um die neue Partition zu erkennen.

  6. Formatieren Sie Ihre neue Partition mit sudo mkfs --type ext4 /dev/mmcblk0p3.
  7. Starten Sie neu.

Wenn Sie aus irgendeinem Grund Änderungen an Ihrem System vornehmen müssen, können Sie die schreibgeschützten Partitionen mit Schreibzugriff erneut bereitstellen:

sudo mount -o remount,rw /dev/mmcblk0p2
lenik
quelle
Warten Sie, ich kann in diesem Fall keine Daten auf meine SD-Karte schreiben. Oder nur beim Booten?
user151324
1
@coding_corgi Dies sollte aufhören, vollständig auf die SD-Karte zu schreiben.
Apnorton
Warum müssen Sie auf Ihre SD-Karte schreiben? Beim Schreiben auf SD + Ausschalten = FS-Beschädigung können Sie einen USB-Stick verwenden oder eine separate Partition auf der SD-Karte erstellen, wenn Sie Daten speichern müssen. In diesem Fall wird zumindest Ihr System betriebsbereit und Sie können Ihre Daten auf mögliche Beschädigungen überprüfen.
Lenik
@anorton dies stoppt den Schreibzugriff auf die ersten beiden Partitionen auf der SD-Karte, aber niemand sagt, dass Sie keine weitere Partition erstellen oder andere Medien zum Speichern der Daten verwenden können. Beispielsweise kann das Nur-Lese-Schreiben von RasPi-Daten über das Netzwerk eine sehr zuverlässige Lösung sein.
Lenik
1
Ich schreibe auf meine SD-Karte Videodaten von Raspi Cam und es starb so oft! Ich hatte kein einziges Mal Probleme mit dem Hochfahren, dem Herausziehen des Kabels oder dem Absturz des Systems. Nur lesen ist gut für die Produktion, wenn Sie Plug-and-Play. Dieses Problem sollte in keiner Weise während der Entwicklung auftreten. Ich vermute, dass auch nur Lesezugriff seine Daten durcheinander bringt, da etwas auf einer höheren Ebene geschieht, als der Kernel verarbeiten kann.
Piotr Kula
4

Abhängig davon, wofür Sie Ihr RPi verwenden, sind Sie möglicherweise an IPE interessiert, einer "Blackout-Proof-Variante von Raspbian".

Ich habe vor, damit mein RPi zu booten. Wenn ich Daten zum Schreiben benötige, verwende ich ein USB-Laufwerk, das ich nur lesbar einbinden kann (ich bevorzuge, dass meine SD-Karte sicher ist und ein USB-Laufwerk beschädigt, anstatt meine SD-Karte reparieren zu müssen).

Siehe die IPE-Homepage

Wie dort angegeben, "Verwenden Sie auch" ipe-rw "und" ipe-ro ", um das Root-Dateisystem in den schreibgeschützten oder schreibgeschützten Modus zu schalten."

lauhub
quelle
2

Ich habe dieses Problem behoben, indem ich ein USB-Flash-Laufwerk für meine Hauptpartitionen verwendet habe.

  1. Stellen Sie das Raspbian-Image auf einem USB-Laufwerk wieder her

  2. Formatieren Sie eine SD-Karte zu fett

  3. Kopieren Sie den Inhalt der fetten Partition vom USB-Laufwerk auf die SD-Karte

  4. Ändern Sie die Datei config.txt auf der SD-Karte, um von / dev / sda zu booten

Grundsätzlich bootet der RPI immer noch von der SD-Karte, verwendet jedoch das USB-Laufwerk für das Betriebssystem und das Lesen / Schreiben.

As
quelle
2

Ich verwende die UPS Pico, eine speziell für den Raspberry Pi entwickelte USV, und hatte noch nie solche Probleme.

Alexander
quelle
1

Bitte stellen Sie sicher, dass Ihr RPi mit den Standardgeschwindigkeiten läuft (z. B. CPU mit 700 MHz). persönlich habe ich bei verschiedenen sd-karten speicherverfälschungen festgestellt - aber nur, wenn sie über die uhr laufen. Leider kommen einige Distributionen (Bilder) mit fragwürdigen Einstellungen in config.txt .

Jitter
quelle
Ich habe meine CPU nicht übertaktet, danke
user151324
versuchen Sie es mit einem anderen RPi, um auszuschließen, dass Ihr RPi irgendwie fehlerhaft oder sogar kaputt ist
Jitter
Ich habe nur einen
user151324
Möglicherweise gehen Ihnen die Optionen aus und Sie fordern eine RMA an.
Jitter
RMA? Was ist das?
user151324
1

Wenn Ihr Raspberry Pi eingefroren ist, dann können Sie nicht richtig herunterfahren, dann hilft dies. Ich hatte meine wenigen SD-Karten kaputt, bevor ich folgendes wusste:

Halten Sie die Tasten Alt + PrintScreen gedrückt, und drücken Sie nacheinander nacheinander die folgenden Tasten, wobei Sie einige Sekunden Pause dazwischen einlegen.

Alt+ PrintScreen+R E I S U O

oder

Alt+ PrintScreen+ R E I S U B(Neustart)

Ein praktisches Mnemon, an das Sie sich erinnern sollten: Neustart, auch wenn das System völlig kaputt ist.

Ersetzen Sie "B" durch "O", um das System herunterzufahren, anstatt es neu zu starten (O = aus, B = booten).

Quelle: https://www.raspberrypi.org/forums/viewtopic.php?t=176612#p1126262

Almas Dusal
quelle
0

Wie auf der Elinux-Site zu finden. Ich habe nur das ausgewählt, was auf Ihre Situation zutrifft, aber bitte besuchen Sie diese für weitere Informationen ...

  • Wenn Sie Probleme haben, überprüfen Sie, ob Sie die neueste Firmware-Version mit RPI-Update haben
  • Einige SD-Karten funktionieren nicht auf dem R-Pi. Überprüfen Sie daher die Liste der bekannten SD-Karten .
  • Wenn Sie Probleme beim Einrichten Ihrer SD-Karte haben, sollten Sie diese zunächst vollständig löschen - insbesondere, wenn sie an anderer Stelle verwendet wurde und noch Daten / Partitionen enthält. Es ist sinnvoll, ein FULL-Format (Low Level) zu erstellen, da es manchmal fehlerhafte Sektoren findet und diese einer Ignorierliste hinzufügt.
    • Windows- und Mac-Benutzer können ein Formatierungstool von der SD Association herunterladen: https://www.sdcard.org/downloads/formatter_3/
    • Das Neuformatieren von Karten ist auch mit einer Digitalkamera ganz einfach.
    • Wenn Sie Ihre SD-Karte unter Linux oder Mac OS mit dem Befehl dd manuell vorbereiten, werden durch diesen Vorgang alle vorhandenen Daten und Partitionen vollständig gelöscht. Stellen Sie sicher, dass Sie auf die gesamte Karte schreiben (z. B. / dev / sdd) und nicht auf eine vorhandene Partition (z. B. / dev / sdd1).
  • Wenn Sie eine SD-Karte haben, die nicht mit der neuesten Firmware kompatibel ist, klicken Sie hier .
  • Stellen Sie sicher, dass Sie eine gute Stromversorgung haben. Versuchen Sie, alles vom Stromnetz zu trennen, und sehen Sie, wie lange es dauert. Stecken Sie die Teile nacheinander wieder ein, um die Stabilität zu testen.

Wenn Sie alle diese Schritte ausgeführt haben, können Sie nur eine andere SD-Karte verwenden, die sorgfältig aus der Liste der kompatiblen Karten ausgewählt wurde. Stellen Sie außerdem sicher, dass Sie die Originalkarte an einem vertrauenswürdigen Ort kaufen. Nicht wie eBay China oder so.

Piotr Kula
quelle
Ich habe 3 SD-Karten verwendet (alle unterstützt), eine SanDisk, eine Kingston und eine Lexar. Ich richte meine SD-Karte auch nicht manuell ein. Ich habe den Win32DiskImager verwendet, nachdem ich Ubuntu und Mac OS X
getestet hatte.
Es ist seltsam, dass es das Problem behebt, wenn Sie Ihre Fs nur zum Lesen verwenden. Sie aus Millionen von Menschen haben dieses Problem. Vielleicht haben Sie einen Müll / Virus, der Ihr Dateisystem durcheinander bringt. Readonly Root ist ein Schmerz im Arsch ... abwarten und sehen.
Piotr Kula
danke, etwas seltsames ist los, definitiv kein virus obwohl ...
user151324
0

Überprüfen Sie auch, ob Ihre Stromversorgung ausreicht, um den gesamten Boden abzudecken. Probieren Sie ein anderes Ladegerät aus oder stecken Sie das RPI in einen USB-Anschluss Ihres PCs, um es zu testen. Denken Sie daran, dass die empfohlene RPI-Versorgung bei etwa 700 mA liegt, einige schwache Ladegeräte dies jedoch möglicherweise nicht auf einem stabilen Niveau halten.

Ich hatte einen Router, der sich für einige Tage verrückt verhielt, dann in Ordnung ging, dann wieder verrückt wurde und später wieder in Ordnung ging. Ich stellte fest, dass das Netzteil zu der Zeit, als der Router in Betrieb war, eine sich ändernde Spannung (3 V bis 5,5 V) ausgab verrückt. Ersetzt diese Lieferung durch eine neue, ist alles in Ordnung. Versuchen Sie also, das Netzteil auszutauschen und die Ausgangsspannung zu messen.

Schalten Sie das RPI abschließend aus, indem Sie das Betriebssystem herunterfahren, und trennen Sie das RPI erst, wenn Sie nur eine rote LED sehen. Das RPI wird nicht wirklich heruntergefahren, wenn Sie andere als eine rote LED haben. Versuchen Sie auch zu vermeiden, dass der RPI durch Entfernen des Netzteils vom Stecker getrennt wird. Es ist besser, das RPI vom Stromnetz zu trennen und das Netzteil erst dann vom Stecker zu trennen.

Higuita
quelle
Nein, ich habe eine konstante 5.1V @ 2100 A und ich
schalte
0

Ich habe ähnliche Probleme mit einem Pi von RS Components. Dies ist eines der Pis, die in China hergestellt werden. Ein anderes Produkt, das in Großbritannien von Element 14 hergestellt wurde, war mit derselben SD-Karte und demselben Netzteil niemals korrupt. Könnte ein Hardwarefehler bei den ra-Komponenteneinheiten sein. Ich bin mir natürlich nicht sicher, aber alles scheint in diese Richtung zu weisen.

mcobit
quelle
0

Ich habe auch SD-Fehler mit meinem PI erlebt, manchmal 5 Tage hintereinander, manchmal funktioniert es für einen Monat.

Der einzige Weg, wie ich ihn seit mehr als einem Jahr zuverlässig zum Laufen bringen kann, ist das Booten von einem USB-Stick. Auf diese Weise verwenden Sie Ihre SD-Karte nicht (nur beim Booten) und benötigen nur ca. 500 MB SD-Karte (billig) und einen USB-Stick.

Gotschi
quelle
0

Ich bin einem Hinweis gefolgt, den Sie syncvor dem Herunterfahren ausführen können, und bisher hatte ich mit diesem Befehl einige Erfolge:

sync; sudo shutdown -t 9 -r now
dirkk0
quelle
Haben Sie immer noch Probleme mit Raspberry mit der oben genannten Lösung?
CuriousMind
Ich hatte kein Problem mehr - aber ich gebe zu, dass ich eher dazu neige, das Pi zu verlassen, anstatt es herunterzufahren. Aber ich schätze, dass ich es mit der obigen Zeile gut fünfzig Mal runtergeschissen habe und es seitdem kein einziges Mal gescheitert ist. Also aus dieser Statistik - es funktioniert.
dirkk0
Ich glaube nicht, dass dies das Problem beheben wird. Wenn Sie eine kontrollierte Abschaltung durchführen, sollte Ihre SD-Karte nicht durch das Design beschädigt werden. Korruption scheint vor allem in Fällen aufzutreten, in denen das Gerät einfach vom Stromnetz getrennt wird (oder ein Stromausfall auftritt), der nicht mit Ihren syncoder shutdownBefehlen zusammenhängt, es sei denn, Sie führen syncden Vorgang unmittelbar vor dem (unerwarteten!) Herausziehen aus, was nicht durchführbar erscheint.
Nhee