Ich habe jahrelang miterlebt, wie mein Dell-Laptop im Ruhezustand einfriert, während eine SD-Karte in den Steckplatz eingelegt und aktiviert wird. Ich habe natürlich einige Zeit gebraucht, um das herauszufinden, aber ich kann den Vorfall jetzt mit 100% iger Genauigkeit reproduzieren: Jedes Mal, wenn mein Laptop aus dem Ruhezustand zurückkehrt - während ich den Energie-Manager so programmiert habe, dass die verbleibende Zeit 8% überschreitet -, während ich dort bin Ist eine SD-Karte eingelegt und eingelegt, friert sie ein (blockiert), und ich kann sie nur schwer ausschalten ... wobei ich natürlich jedes Mal mehr als ein paar Knabbereien von meiner SD-Karte verliere. Ich kann auf einmal bis zu Hunderte von Megabyte verlieren.
Kürzlich versorgte ich einen Computer mit einer 12-V-Batterie. Irgendwann habe ich gesehen, wie es komplett eingefroren war, während es von meinem USB-Stick lief, den ich als Boot-Gerät eingerichtet hatte [um Linux Mint auszuführen]. Ich bemerkte später, dass der Computer eingefroren war, weil ich vergessen hatte, das Ladegerät anzuschließen, und die Batteriespannung auf etwa 11,5 Volt abgenommen hatte. Ich habe auch festgestellt, dass die USB-Schlüsselpartition, mit der ich den Computer gestartet habe, vollständig beschädigt und dabei nicht wiederherstellbar war.
Hinzu kommt, dass ich auch oft gelesen habe, dass Raspberry Pi- Benutzer (wie ich) eine Beschädigung der SD-Karte gemeldet haben und letztere auf (geringe) Stromverbrauchsprobleme zurückzuführen sind . Diese Erklärung kam zu mir, als ich (auch) bemerkte, dass die nutzbare Größe meiner Raspberry Pi SD-Karte aus unbekannten Gründen erheblich abnahm, bevor ich das las.
Fazit
Kurz gesagt wurde mir auf die harte Tour beigebracht, welche tödlichen Folgen es hat, mit Blitzgeräten auf Dämpfen zu laufen, während sie verwendet werden.
Ich vermute nur, dass es sich um ein elektrisches Problem handelt, also bitte ich im Grunde um Bestätigung. Ich habe in der Vergangenheit ein paar Probleme mit SD-Kartentreibern erlebt, die (zumindest) Linux unter einer Vielzahl von Fehlern litten, einschließlich Systemabstürzen, insbesondere, als diese Treiber noch jung waren, dh nicht mehr so ausgereift wie heute. Mit der Zeit habe ich mich gefragt, ob mein Laptop (unter den oben genannten Bedingungen) einfrieren könnte, weil die Hardware reagiert, wenn der Akku etwas "schwach" wird.
Meine Frage ist : Ergibt meine Analyse einen Sinn oder ist es wirklich etwas anderes, wie ein schlechtes Energieverwaltungsdesign auf bestimmten Laptops, was auch immer?
Wenn es richtig ist, sollte es dann nicht für Laptop-Benutzer empfohlen werden, das Netz anzuschließen, wenn eine SD-Karte verwendet wird? (Unabhängig davon ist es immer am besten, so viel wie möglich am Stromnetz zu laufen .)
Hinweis: Ich stelle die Frage hier, weil ich vermute, dass das, was ich für einen Fehler im Linux-SD-Kartentreiber gehalten habe, tatsächlich ein Elektronikproblem ist.
Antworten:
Achtung: kein Linux Experte hier .
Die Beschädigung der Karte kann darauf zurückzuführen sein, dass der Ruhezustand die Karte nicht ordnungsgemäß trennt oder nicht genug wartet, bis die Karte einen Schreibzyklus mit möglicherweise noch im PC-Cache befindlichen Daten abgeschlossen hat. Hardwareschäden an Flash-Speicherkarten sind weitaus häufiger, wenn während Schreibvorgängen etwas Schlimmes (z. B. Stromausfall) auftritt.
Was das Einfrieren des PCs angeht, habe ich den Verdacht, dass einige Betriebssystemkomponenten Probleme haben. Wahrscheinlich sind einige Treiber nicht robust genug, um Hardwarefehler während des Ruhezustands zu beheben. Wenn eine nicht wesentliche Hardwarekomponente (wie der SD-Kartenleser) ausfällt, sollte das Betriebssystem nicht einfach einfrieren oder in die Luft jagen (das ist eine der Aufgaben eines Betriebssystems). Zugegebenermaßen ist der Ruhezustand kein alltägliches Szenario. Wer auch immer den Treiber geschrieben hat, hat beim Herunterfahren (dem häufigsten "speziellen" Szenario) außergewöhnliche Ereignisse behandelt, den Ruhezustand jedoch vergessen oder vernachlässigt.
PS: Ich habe auch viele Windows- PCs beim Aufwecken aus dem Ruhezustand oder während des Ruhezustands eingefroren gesehen, so dass ich die Funktion normalerweise auf meinen Windows-Computern standardmäßig deaktiviere (Standby funktioniert im Gegenteil die meiste Zeit unglaublich gut). . Ich vermute, dass Interaktionen mit der Hardware im Ruhezustand für die PC-Industrie kein großes Problem darstellen.
quelle
Welches Dateisystem verwenden Sie auf der SD-Karte? Ich nehme an, dass es fat32 oder ähnlich ist. Ich denke, das Problem ist, dass einige verzögerte Transaktionen darauf warten, von der SD-Karte selbst ausgeführt zu werden, und für das Betriebssystem transparent sind. (Es wird gemeldet, als würde es von der SD-Karte an das Betriebssystem gesendet.) Diese Transaktion wird durch einen ausreichend langsamen Stromausfall verrückt. (Ich meine, dass das Herunterfahren nicht unbedingt schnell sein muss, was dazu führt, dass der definierte Status überschritten wird. Dies ist wahrscheinlich auf die Anforderung des Ruhezustands zurückzuführen, da die Hardwareverzögerung jedoch für das Dateisystem transparent ist, wird dies nicht der Fall sein Ich schätze, wenn Sie ext4 oder btrfs mit eingeschalteter Barriereoption verwenden (dies ist standardmäßig bereits der Fall), besteht die Möglichkeit, dass es wartet, bis ein sicherer Zustand erreicht wird.
Ist es möglich, die Kernelnachrichten dieses Ereignisses wiederherzustellen?
Ich habe versucht, das Problem mit einem Dell Studio 14-Laptop, Archlinux (3.18 Vanilla Kernel), der auf einer USB-Flashdisk läuft, zu reproduzieren. Außerdem habe ich eine 2-GB-Ext2-Partition einer SD-Karte eingehängt. Angehalten, um mit "systemctl suspend" zu rammen. Erfolgreich aufgewacht.
Das Suspendieren ist kein einfacher Vorgang, bei dem der Kernel lediglich angewiesen wird, das Suspendieren auszuführen. Dies ist nur das Letzte, was das Suspendierungsskript tun muss. Der Vorbereitungsprozess kann bei verschiedenen angehaltenen Skripten unterschiedlich sein. Für weitere Informationen: https://wiki.archlinux.org/index.php/Power_management/Suspend_and_hibernate
quelle