Feststellen der SD-Karte

473
Ravi

Gibt es eine Möglichkeit, die Beschädigung der SD-Karte zur Laufzeit zu erkennen?

Ich habe eine Situation, in der das Firmware-Upgrade aufgrund eines Problems mit der SD-Karte betroffen ist. Es wird jedoch erst nach einem fehlgeschlagenen Upgrade bekannt. Was ich suche, sind die Tests / Dienstprogramme, mit denen die Beschädigung der SD-Karte unterwegs erkannt werden kann. Sprich, ich überprüfe jeden Tag, ob die SD-Karte einwandfrei ist oder beschädigt ist. Wenn der Computer beschädigt ist, kann ich das Upgrade stoppen und den Ersatz der SD-Karte empfehlen oder andere Maßnahmen ergreifen.

Jede Eingabe wird sehr geschätzt. Dies zu erreichen, ohne die SD-Karte physisch zu entfernen, ist gut.

0

3 Antworten auf die Frage

1
Attie

Wenn Sie nur Korruption erkennen möchten, können Sie ein *sumDienstprogramm wie sha256sum.

Führen Sie in dem zu schützenden Verzeichnis Folgendes aus. Beachten Sie die Verwendung von find ... -print0und xargs -0, um Pfade mit Leerzeichen oder anderen Sonderzeichen aufzunehmen.

find . -type f -print0 \ | xargs -0 sha256sum \ > manifest.sum 

Verwenden Sie anschließend Folgendes, um den Dateiinhalt zu überprüfen.

sha256sum -c manifest.sum 

Die Ausgabe listet Dateien mit OKoder auf FAILED, und der Rückgabewert ist 0(Null), wenn alle Dateien ausgecheckt wurden, oder nicht Null, wenn Fehler aufgetreten sind.

Dieser Prozess überprüft alle Dateien im aktuellen Verzeichnis und lässt sie manifest.sumzurück.

Idealerweise würden Sie manifest.suman der Quelle generieren (z. B. zur Erstellungszeit) und diese mit den Dateien verteilen - nur die Verifizierung ( sha256sum -c) auf dem Zielgerät.


Da Sie bereits erwähnt haben, dass dies ein Firmware-Update-Prozess ist, würde ich Ihnen empfehlen, weiter nachzusehen, als nur die Daten auf Korruption zu überprüfen.

In vielen Fällen ist es von Vorteil, sicherzustellen, dass das angewendete Upgrade echt ist und von der vorgesehenen Quelle bereitgestellt wurde ... Wenn Sie zulassen, dass ein Upgrade auf ein System angewendet wird, öffnen Sie es aus Versehen (und möglicherweise auch aus Versehen) schädigende) Updates sowie schädliche Updates.

Um dies zu beheben, sollten Sie das kryptographische Signieren des Updates überprüfen.

  • Sie könnten mit dem Signieren nur das manifest.sumoben erzeugte umgehen (weniger Bearbeitungsaufwand). Indem Sie die Prüfsummen signieren, können Sie den Inhalt jeder Datei überprüfen ... unter der Annahme, dass der Digest natürlich sicher ist ... ( MD5 wäre keine gute Wahl)
  • Es kann jedoch besser sein, ein signiertes (und möglicherweise verschlüsseltes) Archiv vollständig zu verteilen und zu überprüfen, bevor es überhaupt extrahiert wird.

Da die *sumDienstprogramme ASCII-Text enthalten, können Sie gpg --clearsigndie Daten signieren:

find . -type f -print0 \ | xargs -0 sha256sum \ | gpg --clearsign --default-key 7826F053 \ > manifest.asc 

Auf dem Ziel können Sie dann die Signatur überprüfen:

gpg --verify manifest.asc 

Wenn und nur dann, wenn die Signatur gültig ist und von einem erwarteten Ursprung stammt (Sie müssen --status-fddies überprüfen), können Sie den Inhalt der Datei überprüfen:

gpg --decrypt manifest.asc \ | sha256sum -c - 

Beachten Sie, dass Sie *sumsich am " Ende " der Pipeline befinden müssen, um sicherzustellen, dass Sie den Rückkehrcode sehen ... alternativ könnten Sie verwendenset -o pipefail


Ich erwähnte die Verwendung von --status-fdoben ... es wird unordentlich in der Shell, so dass Sie wahrscheinlich eine Anwendung schreiben möchten, um das besser zu behandeln ... Etwas wie dieses wird " funktionieren " (dh: einen Punkt beweisen).

Der Fingerabdruck des Schlüssels verwendet, um das Manifest zu unterzeichnen ist: A5C929D6A230C02067720F1DB2B38B43C2ABEB33.

gpg --status-fd 3 --verify manifest.asc 3>&1 1>/dev/null \ | grep -Eq '^\[GNUPG:\] VALIDSIG A5C929D6A230C02067720F1DB2B38B43C2ABEB33 ' 
0
B.McCready

Das Erkennen von Beschädigungen hängt zum Teil davon ab, wie die SD-Karte ursprünglich formatiert wurde. Sie können jedoch versuchen, fdisk oder Badblock darauf auszuführen. Siehe Überprüfen, ob die Micro-SD-Karte beschädigt ist :

Verwenden Sie zu diesem Zweck den Befehl badblocks und verwenden Sie die Optionen -n (um anzugeben, dass die Prüfung im schreibgeschützten, nicht destruktiven Modus ausgeführt wird) und -v (verbose-Modus). Stellen Sie sicher, dass die zu überprüfenden Partitionen NICHT gemountet sind

Geben Sie an der Eingabeaufforderung Folgendes ein: mount und suchen Sie nach dem Geräteeintrag, der Ihrer SD-Karte entspricht. Wenn es aufgelistet ist, müssen Sie zuerst die Dateisysteme aushängen:

$ sudo umount /dev/sde1 

dann tippen

$ sudo badblocks -n -v /dev/sde 

oder

$ sudo fsck /dev/sde1 

Beachten Sie, dass Badblocks sehr lange dauern können. Ich würde zuerst Fsck versuchen

Bitte fügen Sie Ihrer Antwort wichtige Schritte Ihres Links hinzu. confetti vor 5 Jahren 1
Willkommen bei Super User! Bitte zitieren Sie die wesentlichen Teile der Antwort aus den Referenzlinks, da die Antwort ungültig werden kann, wenn sich die verlinkten Seiten ändern. DavidPostill vor 5 Jahren 0
Bei den meisten Dateisystemen wird dies zu einer Beschädigung von _any_ / _all_ führen, die auf den Dateiinhalt trifft, jedoch die Metadaten des Dateisystems verfehlt. Attie vor 5 Jahren 0
@Attie - das ist ein guter Punkt. Die Verwendung einer Prüfsumme als vorgeschlagenes Xoide würde die Beschädigung von Dateiinhalten behandeln. B.McCready vor 5 Jahren 0
Die Verwendung von fsck und badblocks scheint gut zu funktionieren. Es konnte kein Fehler erkannt und der Vorgang abgeschlossen werden. Selbst nachdem diese alles normal gezeigt hatten, hatte ich ein anderes Problem. Angenommen, ich erstelle eine neue Datei auf der SD-Karte und hebe sie dann wieder auf und mounte sie wieder. Die neu erstellte Datei existiert nach dem Mounten nicht! In ähnlicher Weise habe ich eine vorhandene Datei von der SD-Karte gelöscht und die Bereitstellung aufgehoben und zurückgesetzt. Gelöschte Datei erschien nach dem Einhängen erneut! Wie könnte das passieren? Ist das auch eine SD-Karte beschädigt? Wie erkennt man diesen Zustand im Voraus? Ravi vor 5 Jahren 0
0
xenoid
  • Berechnen Sie das MD5 der Dateien und speichern Sie es auf der Karte:

    md5sum * >SDCardFiles.md5 
  • Zur Verwendung md5umim "Check" -Modus verwenden (es wird das MD5 der Dateien auf der Karte neu berechnet und mit dem in der Datei gespeicherten MD5 verglichen).

    md5sum -c SDCardFiles.md5 

Hinweis: Sie müssen sich im selben Verzeichnis befinden, wenn Sie das erste md5sumund das Verzeichnis ausführen, md5sum -cda der Pfad zu den Dateien in der .md5Datei gespeichert ist .